Visualizzazione risultati 1 fino 4 di 4
Like Tree1Likes
  • 1 Post By alemoppo

Discussione: Dati in stringa di testo da inseriti nel database MYSQL

  1. #1
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    2

    Predefinito Dati in stringa di testo da inseriti nel database MYSQL

    Ho dei dati contenuti in una stringa di testo che lavoro in PHP e sono ordinati in questo modo:

    $stringaditesto = "nome1,cognome1,datanascita1,luogo1,residenza1
    nome2,cognome2,datanascita2,luogo2,residenza2
    nome3,cognome3,datanascita3,luogo3,
    nome4,cognome4,datanascita4,luogo4,
    nome5,cognome5,datanascita5,luogo5,residenza5";

    Le informazioni dell'utente n.1 sono separate dall'utente n.2 da un "invio" quindi si trovano nel rigo successivo.
    Le informazioni dell'utente n.1 sono contenute solo nel primo rigo e separate da una "," (virgola).
    Alcuni utenti come si può notare nell'utente n. 3 e 4 non hanno la residenza.

    Potreste darmi delle dritte per inserire tutte le informazioni contenute nella stringa di testo, come sopra, nel database MySql avente una tabella "Utenti" contenente le caselle per il Nome, Cognome, Data di Nascita e Residenza (che nel caso manchi il campo resta vuoto)

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    11,908

    Predefinito

    La cosa più "difficile" è estrarre i vari dati dalla stringa. La prima soluzione che mi viene in mente è di utilizzare explode() così da poter separare i vari utenti:

    Codice PHP:
    $stringaditesto "nome1,cognome1,datanascita1,luogo1,residenza1
    nome2,cognome2,datanascita2,luogo2,residenza2
    nome3,cognome3,datanascita3,luogo3,
    nome4,cognome4,datanascita4,luogo4,
    nome5,cognome5,datanascita5,luogo5,residenza5"

    Quindi una cosa del genere:
    Codice PHP:
    $utenti explode("\r\n",$stringaditesto); 
    (dipende dal formato, o "\r\n" o "\r" o al più PHP_EOL).

    Avrai $utenti[0], $utenti[1] etc. Poi per ogni utente potrai andar ad estrarre le varie informazioni sempre utilizzando la explode con la virgola come separatore.

    Per immetterli nel DB poi non dovrai far altro che fare una query INSERT INTO ...

    Ciao!
    mzanella likes this.

  3. #3
    fiduciali non è connesso Neofita
    Data registrazione
    05-07-2017
    Messaggi
    2

    Predefinito

    Grazie per il suo suggerimento, allego il codice per commenti e migliorie

    Codice PHP:
    <?PHP

    $utenti
    =explode("\r\n",$stringaditesto);
    $arrayutenti array_chunk ($utenti,1);
    //divido la stringa di testo in parti, separandola dove è presente il carattere "invio"

    foreach ($arrayutenti as $row) {

    $infoutenti=explode(",",$row[0]);
    $arrayinfoutenti array_chunk ($infoutenti,5);
    //ripeto explode per dividere nuovamente l'array, precedentemente diviso, sul carattere "," (virgola)

    foreach ($arrayinfoutenti as $rows){

    $query "INSERT INTO utenti (nome, cognome, datanascita, luogo, residenza) VALUES ('{$rows[0]}','{$rows[1]}','{$rows[2]}','{$rows[3]}','{$rows[4]}')";
    $ris mysql_query($query) or die (mysql_error());
    //inserisco i dati estratti dal processo explode nel database MySql

    }
    }

    ?>

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,172

    Predefinito

    Non hai bisogno di usare array_chunk, rendono solo la struttura dati ed il codice più complessi.
    Codice PHP:
    // Divide la stringa di testo in parti, separandola dove è presente il carattere "invio"
    $utenti=explode("\r\n"$stringaditesto);

    foreach (
    $utenti as $riga) {
        
    // Divide l'array sul carattere ","
        
    $utente explode(","$row);

        
    // Inserisce i dati letti nel database MySql
        
    $query "INSERT INTO utenti (nome, cognome, datanascita, luogo, residenza) VALUES ('{$utente[0]}','{$utente[1]}','{$utente[2]}','{$utente[3]}','{$utente[4]}')";
        
    mysql_query($query) or die (mysql_error());

    Non usare le funzioni mysql_*, sono deprecate: usa mysqli o PDO.

    I suggerimenti che do più spesso:
    • Le funzioni mysql_* sono deprecate. Usa PDO o MySQLi.
    • Non memorizzare le password in chiaro nella base di dati. Usa password_hash().
    • Indenta correttamente il codice e usa nomi significativi per gli identificatori.


Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •