Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    605

    Insert dentro un ciclo...

    Ciao a tutti,
    Scusate lìoggeto... un pò anomalo... ma d'altronde è anomalo anche il mio problema che non riesco proprio a risolvere...
    allora..
    ho un form dinamico che si riempie di imput text in un ciclio for in questo modo:


    Codice PHP:
    echo "<tr><td ><font size=\"3\"><td height=\"30\" align=\"right\" valign=\"middle\" width=\"100\">Codice $i  giorno</TD><TD height=\"30\" align=\"left\" valign=\"middle\"><INPUT TYPE=\"text\" NAME=\"cod_gg$i\"></TD><TD height=\"30\" align=\"left\" valign=\"middle\" width=\"50\">Descrizione</TD><TD height=\"30\" align=\"left\" valign=\"middle\"><INPUT TYPE=\"text\" NAME=\"descr_gg$i\"></TD> 

    nella pagina che ricevo i dati per fare la query... mi controllo tutti i campi con un altro ciclo for in modo da eseguire l'isert per tante volte quante sono le righe...

    in qquesto modo:

    Codice PHP:

    for($i=;$i<=$righe_tabella$i++){ 
                
    $descr_gg=$_POST["descr_gg$i"];
                
    $cod_gg =$_POST["cod_gg$i"];
                    
                                    
       if(
    $_POST["descr_gg$i"]!="" &&  $_POST["cod_gg$i"]!=""){
                        
        
    $values"'$cod_gg','$descr_gg'";
        
    $sql="INSERT INTO TBProva(CodGiornoConvegno,DescGiornoConvegno) VALUES($values)";
        
    $result mysql_query($query) or die("Invalid query: " mysql_error().__LINE__.__FILE__);            
        
    $msg="Tutte le rghe inserite con successo...";
       }else{
            
    $msg=Devi riempire tutte le righe.. riprova!";
       } 
    ebbene... così come faccio però, la cosa non và... perchè per esempio se nella prima riga codice e descrizione sono pieni e la seconda e ha solo codice pieno ..allora mi fà la prima insert e la seconda no..
    io vorrei fare un controllo che solo se sono tutti pieni allora fammi tante insert..(per quanto sono le righe...)
    spero di essermi spiegato...
    certo un pò contorto... lo sono....
    Qualche suggerimento...?
    Ciao e buona serata
    Centro :maLOL:

  2. #2
    Io farei così
    Un primo ciclo controlla che tutti i campi siano riempiti
    $piene=0
    for($i=1 ;$i<=$righe_tabella; $i++){
    if($_POST["descr_gg$i"]!="" && $_POST["cod_gg$i"]!=""){
    $contr=0;
    else $contr=1
    }
    $piene=$piene+$contr
    }
    Se sono tutti riempiti $piene vale 0 altrimenti vale 1
    Per cui

    if $piene=0
    e qui metti la parte insert
    else
    "devi riempire tutti ecc.
    pierogemin
    -------------
    -InterNET
    +CaberNET

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    605
    Va alla grande....
    scusami se non ho risposto prima...
    ma solo ora ho provato..
    grazie mille.... mi stava proprio facendo impazzire sto controllo....
    grazie ancora....
    buona serata

  4. #4
    Sun cuntent
    Vorrei solo aggiungere che si potrebbe "elegantizzare" il codice con comandi booleani ma te lo buttato giù così per rendere più esplicativo il discorso.
    Ciao
    pierogemin
    -------------
    -InterNET
    +CaberNET

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    605

    Chissa se me posso approfittare....

    Ciao pierogemin,
    a me và benissimo.. così...

    Visto che è aperta questa discussione...
    ne posso approfittare con un'altra domanda su sti controllo... che da due giorni mi stanno togliendo la pelle...




    Anche quì in questo caso... si tratta di cicli... (con cui proprio non vado d'accordo...)


    Sto facendo l'upload di un file..
    questo è ilk codice:


    Codice PHP:

        
    while ($data fgetcsv ($handle1000";")) {
        
            
    $myIdConvegno mysql_escape_string($data[0]);
            
    $cod_fiscale  mysql_escape_string($data[2]);
            
    $nome          mysql_escape_string($data[3]);
            
    $cognome      mysql_escape_string($data[4]);
            
    $indirizzo    mysql_escape_string($data[5]);
            
    $citta        mysql_escape_string($data[6]);
            
    $g1   $data[7];
            
    $g2   $data[8];
            
    $g3   $data[9];
            
    $g4   $data[10];
            
    $g5   $data[11];
            
    $g6   $data[12];
            
    $g7   $data[13];
            
    $g8   $data[14];
            
    $g9   $data[15];
            
    $g10  $data[16];


                  
    // inizio @@@inserisce riga per volta
                
    $values ="'',";//ID_RISULTATO
                
    $values.="'".$myId ."',"//ID
                
    $values.="'".$nome."',"//NOME    
                
    $values.="'".$cognome."',"
                
    $values.="'".$indirizzo."',"
                
    $values.="'".$citta."',"//CITTÀ
                
    $values.="'".$g1."',"
                
    $values.="'".$g2"',"
                
    $values.="'".$g3"',"
                
    $values.="'".$g4"',"
                
    $values.="'".$g5"',"
                
    $values.="'".$g6"',"
                
    $values.="'".$g7"',"
                
    $values.="'".$g8"',"
                
    $values.="'".$g9"',"
                
    $values.="'".$g10"'"
                
    $query "INSERT INTO `tbProva` VALUES($values)";
                
    $result =mysql_query($query) or die("Invalid query: " mysql_error()."
    Linea:"
    __LINE__."
    File:"
    .__FILE__) .
                  
    // Fine @@@@@@@@@@@@@@@@@@@@   insert
        
    $row++;
        } 

    e anche in questo caso... mi ritrovo con lo stesso problema... vorrei controllare solo che il campo $myId e tutti i campi $g1,$g2,$g3,$g4 etc, siano dei valori numeri....


    mi succede che se faccio il controllo dentro sto ciclo... quelli scritti brene me li inserisce quelli scritti male.. no...
    ea cnhe in questo caso.. vorrei... fare un controllo alla base... cioè se tutti sono scritti bene.. fammi tante insert, se sono scritti male... pazienza.. e ricontrolla...
    Come potrei risolvere... visto che anche sto controllo mi sta togliendo qualche anno di vita...



    grazie ancora...


  6. #6
    E' lo stesso caso di prima:
    Prima del ciclo di insert ne fai uno che controlla che tutti diano numeri usando la funzione is_numeric()utilizzando una variabile $contr che assume il valore 0 o 1.
    Se alla fine $contr è 0 passi al secondo ciclo altrimenti messaggio di errore.
    pierogemin
    -------------
    -InterNET
    +CaberNET

  7. #7
    Ciao
    vorrei aggiungere un suggerimento:
    Poichè i campi di input del form sono una decina , con un ciclo ad es. di 3 diventano 30 campi.
    Se un poveraccio ne omette uno , deve ricominciare daccapo.
    L'ideale sarebbe di fare il controllo in JAVA SCRIPT , in modo da lavorare in locale e solo alla fine inviare il form.
    Ma in ogni caso puoi rimediare inserendo il parametro value negli input:
    <input type=text name=$pippo value=$pippo>(sistema tu gli apici).
    In questo modo se uno omette un campo , qando gli ritorna indietro il form trova già gli altri 29 campi compilati e ne deve correggere solo uno.
    pierogemin
    -------------
    -InterNET
    +CaberNET

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 © 2024 vBulletin Solutions, Inc. All rights reserved.