Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    problemi con mysql_field_name...

    ho un problemino con la funzione del subject...
    in una pagina ho questo form:

    $result = mysql_query("select * from tabella where id='$id'");
    $numfields = mysql_num_fields($result);
    for ($i=1; $i < $numfields; $i++) {
    print '<th>'.mysql_field_name($result, $i).'</th>';
    }
    print '</tr><tr>';

    while ($rows = mysql_fetch_row($result)) {
    for ($i=1; $i < $numfields; $i++) {
    print '<td><div align="left"><input type="text" name="'.mysql_field_name($result, $i).'" value="'.$rows[$i].'" size="10"></div></td>';
    }
    }

    e nella pagina a cui arrivano i dati del form ho la query per l'update o inserimento nel db...

    $numfields = mysql_num_fields($result);
    $query = '';
    for($i=1;$i<$numfields;$i++)
    {
    $query.= mysql_field_name($result,$i)."='"."$".mysql_field_ name($result,$i)."'".",";
    }
    $query_pulita = substr($query,0,strlen($query)-1);

    mysql_query("UPDATE tabella SET $query_pulita WHERE id='$id'");


    il problema è che non fa l'update o l'inserimento...
    come mai???
    le ho provate tutte... con apici o senza prima dei campi passati dal form nella riga $query.= mysql_field_name($result,$i)."='"."$".mysql_field_ name($result,$i)."'".",";

    c'è qualcosa di sbagliato in questo codice che posso sistemare... oppure ne posso scrivere uno diverso e migliore??? se si... heeeeeeeeeeeeeelp!!!
    grazie 1000

  2. #2
    nessuno che sa aiutarmi???? please.........

  3. #3
    Originariamente inviato da uniblack2006
    nessuno che sa aiutarmi???? please.........
    SET vuole campo = azione

    prova a stampare la query

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    si lo so...
    e se la stampo c'è campo=valore...
    solo che mi prende proprio il name del form e non i dati che gli passo...
    es. se il name è campo1 e gli passo il valore ciao... nella query mi passa campo1 e non ciao...

  5. #5
    Originariamente inviato da uniblack2006
    si lo so...
    e se la stampo c'è campo=valore...
    solo che mi prende proprio il name del form e non i dati che gli passo...
    es. se il name è campo1 e gli passo il valore ciao... nella query mi passa campo1 e non ciao...
    visto che i campi li hai in qualche modo assegnati al form, usa quelli che passerai credo con POST senza ripescarli nl db.

    se nel form name=campo1 value = 'ciao'

    dovrai mettere SET $chiave = $valore
    codice:
    foreach($_POST as $chiave => $valore ) {
    
    $value .= "$chiave = '$valore', ";
    
    }
    ovviamente scartando le chiavi indesiderate e togliendo l'ultima virgola.

    Stampati $_POST (con print_) per vedere come e' fatto.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    uhmmm ok...
    però come si fa a scartare le chiavi indesiderate e togliere l'ultima virgola??
    scusa ma non sono praticissimo...
    grazie 1000

  7. #7
    Originariamente inviato da uniblack2006
    uhmmm ok...
    però come si fa a scartare le chiavi indesiderate e togliere l'ultima virgola??
    scusa ma non sono praticissimo...
    grazie 1000
    con una if
    codice:
    foreach($_POST as $chiave => $valore ) {
      
       if($chiave == 'submit')  {   //do nothing
    
       }   else   {
    
         $value .= "$chiave = '$valore', ";
    
          }
    }
    oppure se sono parecchie le chiavi da scartare le metti in un array poi lo controlli con in_array()

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    ah!! dimenticavo

    per togliere l'ultima virgola finito il ciclo del foreach

    $value = substr($value, 0, -1);

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    ok ora funziona alla grande!!!
    grazie 10000

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