Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Problema query insert da array

    Salve a tutti,
    sto cercando di inserire con una insert dei dati in un db mysql con dei valori in 4 array con il seguente codice:

    Codice PHP:
    $dato1=$_POST['dato1'];
    $dato2=$_POST['dato2'];
    $dato3=$_POST['dato3'];
    $dato4=$_POST['dato4'];


    $array_glob array_merge((array)$dato1, (array)$dato2, (array)$dato3, (array)$dato4);

    foreach ( 
    $array_glob as $k => $v )
    {

       
    $con mysql_connect("","","");
    if (!
    $con)
      {
      die(
    'Errore di Connessione: ' mysql_error());
      }
    mysql_select_db(""$con);
      
     
      
    $sql="INSERT INTO dati_utenti (id,nome,cognome,indirizzo,tipologia) values ('','$dato1[$k]','$dato2[$k]','$dato3[$k]','$dato4[$k]')";
      if (!
    mysql_query($sql,$con))
      {
      die(
    'Errore: ' mysql_error());
      }

    }
    mysql_close($con); 

    il problema si verifica perchè se nei 4 array sono presenti i seguenti valori per 3 utenti nel db a query effettuata mi trovo anche inseriti alcuni record vuoti, dove sto sbagliando????

    Grazie



    Esempio db...... 0=vuoti!:

    Codice PHP:
    Nome            cognome            indirizzo        tipologia
    ----------------------------------------------------------
    mario            rossi                   via milano        1    
    gianni        verdi                       via torino        2
    giuseppe        giallo                   via bolzano        1
    0            0                0            0
    0            0                0            0
    0            0                0            0
    0            0                0            0
    0            0                0            0 

  2. #2
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Scusa non hai provato a costruire un semplice array e non di tipo merge?
    Poi non hai chiuso la parentesi alla fine di array_merge.

  3. #3
    Originariamente inviato da Ironmax
    Scusa non hai provato a costruire un semplice array e non di tipo merge?
    Poi non hai chiuso la parentesi alla fine di array_merge.

    Ciao Ironmax e grazie per la gentile risposta :-)

    All fine di array_merge è chiusa la parentesi..... onestamente mi sto arrampicando digli specchi e non riesco a capire perchè inserisce anche delle righe vuote l'insert

    Mi puoi aiutare?

    Grazie

  4. #4
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Proviamo ad andare per gradi.
    Nella tabella dati_utenti il campo id non è autoincrementale?
    Se si prova a togliere dalla query il campo id e il suo value ' ' di inserimento.

  5. #5
    Originariamente inviato da Ironmax
    Proviamo ad andare per gradi.
    Nella tabella dati_utenti il campo id non è autoincrementale?
    Se si prova a togliere dalla query il campo id e il suo value ' ' di inserimento.

    Si, il campo id è incrementabile.
    Tolto il campo id ed il suo value ' ' , ma non cambia.

  6. #6
    Non mi e' chiaro tutto quel giro di array, cosa contengono questi:
    Codice PHP:
    $_POST['dato1'];
    $_POST['dato2'];
    $_POST['dato3'];
    $_POST['dato4']; 
    ?

  7. #7
    Originariamente inviato da k.b
    Non mi e' chiaro tutto quel giro di array, cosa contengono questi:
    Codice PHP:
    $_POST['dato1'];
    $_POST['dato2'];
    $_POST['dato3'];
    $_POST['dato4']; 
    ?

    Ciao, gli array contengono una selezione tramite checkbox da una lista di persone estratte da un db.

    $dato1= array(giuseppe,francesco,giovanni)
    $dato2= array(via napoli, via milano, via torino, etc)
    $dato3= array(3,5,7,8)

    chiaramente sono esempi di possibili valori negli array

  8. #8
    Utente di HTML.it L'avatar di Secta
    Registrato dal
    May 2002
    Messaggi
    365
    Quindi se ho ben capito tu passi tramite form dei dati estratti da un database... e questi dati li devi inserire nuovamente in un database. Giusto? In mezzo a queste due fasi, che operazioni compi su questi dati?
    "Dai diamanti non nasce niente, dal letame nascon fiori."
    Fabrizio De Andrè

  9. #9
    Originariamente inviato da Secta
    Quindi se ho ben capito tu passi tramite form dei dati estratti da un database... e questi dati li devi inserire nuovamente in un database. Giusto? In mezzo a queste due fasi, che operazioni compi su questi dati?

    Seleziono da una lista quelli che mi interessano tramite checkbox, li passo ad una pagina successiva dove ho un form nel quale posso aggiungere tramite campo input un dato aggiuntivo e poi li passo allo script che vedi in questa discussione tramite degli array, il problema che l'insert viene fatto ma oltre le righe che mi interessano con i dati giusti mi ritrovo nel db anche 6 righe nuove VUOTE!

  10. #10
    Il problema principale e' che i dati sono male organizzati. La logica vorrebbe che tu avessi un array per ogni utente, non un array per ogni tipo di dato, perche' cosi' devi fare un giro inutile per ricomporre i dati in modo coerente. Quindi prima di tutto rivedrei il problema a monte, nel punto in cui questi dati vengono creati.

    Dovendo comunque lavorare coi dati in quel formato, suggerirei di riordinarli in modo comprensibile cosi':

    ATTENZIONE: il codice e' a solo scopo esemplificativo, NON USARE MAI DATI OTTENUTI VIA $_POST DIRETTAMENTE IN UNA QUERY, documentati su SQL injections e usa SEMPRE i prepared statements meglio se con un'interfaccia seria come PDO

    Codice PHP:
    $data = array();

    for ( 
    $i 0$i count($dato1); $i++ ) {
        
    $data[] = array(
            
    'nome'      => $dato1[$i],
            
    'cognome'   => $dato2[$i],
            
    'indirizzo' => $dato3[$i],
            
    'tipologia' => $dato4[$i],
        );
    }

    foreach ( 
    $data as $user ) {
        
    $sql "INSERT INTO dati_utenti
                (nome.cognome,indirizzo,tipologia)
                VALUES
                ('
    {$user['nome']}', '{$user['cognome']}', '{$user['indirizzo']}', '{$user['tipologia']}')";

        
    // esegui query etc


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.