Come inserire in Mysql dei dati separati da virgola

Avendo una serie di nomi separati da una virgola ad esempio: Mario, Sara, Antonio, Lucia ecc, protresti avere la necessità di doverli inserire in un database ognuno in una nuova riga, come fare?

-

Supponiamo che tu abbia la tua pagina  index.html  con il form per inserire i nomi separati da una virgola e il tuo script ajax per l'invio dei dati:

<input type="text" class="form-control mb-2" name="nomi"  placeholder="Nomi" value="Mario, Sara, Antonio, Lucia ">

 

a questo punto creerai la tua pagina insert.php per la ricezione e inserimento dei dati nel tuo database:

include("database.php");
 
$nomi = explode(",", $_POST['nomi']);

foreach($nomi as $nome) { 
 
$stmt = $conn->prepare("INSERT INTO nomi(nome) VALUES (?)");

$stmt->bind_param("s", $nome );
 
$nome = trim($nome);

$stmt->execute();
}


in seguito la tua tabella nomi potrà essere popolata in questa maniera:

Come funziona lo script?

Innanzitutto dovrai intercettale la tua variabile POST['nomi'] e memorizzarla in un' altra variabile $nomi:
 

$nomi = explode(",", $_POST['nomi']);

e cosi utilizzare la funzione explode() di php per spezzare la stringa in un array grazie al separatore ( ", " ) , dopodiché  passare la variabile array $nomi[] in un ciclo di foreach.

In questo ciclo la variabile $nomi verrà passata al valore corrispondente:

$nomi[0] //mario
$nomi[1] //sara
$nomi[2] //antonio
...

sempre nel ciclo foreach eseguireno la nostra query di inserimento:

$stmt = $conn->prepare("INSERT INTO nomi(nome) VALUES (?)");

$stmt->bind_param("s", $nome );

$nome = trim($nome);

$stmt->execute();


Ho inserito la funzione trim() per eliminare eventuali spazi prima o dopo ogni nome da inserire.


 
php
     


Lascia un commento