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

    il While, ll Select e l'Insert...

    Neanche fosse un film di Sergio Leone, sfido il codice cercando di capire perchè non riesco a passare una variabile tra due file...
    Ho un form in cui vi è un select fatto così:

    codice:
    <FORM METHOD=\"POST\" ACTION=\"insert_text.php\">
    [...]
    <td width=\"100%\" valign=\"middle\"><font face=\"Verdana\" size=\"1\">";
    
    //elenco argomenti
    
    $sql= "SELECT * FROM envo_textnews_top";
    $risultati_mysql=mysql_query($sql);
    echo "<select name=\"topicname\">
    <option value=\"\" selected>";
    while ($riga=mysql_fetch_array($risultati_mysql))
    {
    $topicid=$riga["topicid"];
    $topicname=$riga["topicname"];
    $topicimage=$riga["topicimage"];
    echo"<option value=\"$topicname\">$topicname";
    }
    
    echo" </select></td>";
    echo "<INPUT TYPE=\"hidden\" NAME=\"topicid\" value=\"$topicid\"> ";
    <INPUT TYPE=\"SUBMIT\" VALUE=\"Invia\" name=\"submit\"><INPUT TYPE=\"reset\" VALUE=\"Cancella\">
    [...]
    </FORM>
    Nel file insert_text.php invece ho questa query:

    codice:
     $sql="INSERT INTO envo_textnews (newsid, data, topicid, title, text, posted) 
    VALUES ('', '$data', '$topicid', '$title', '$text', '$posted')";
    Perchè la variabile topicid viene inserita nel tabella del DB sempre uguale al numero dei topic a cui si riferisce, quando invece nel ciclo while visualizza la stessa variabile in modo corretto?
    Grazie per gli eventuali suggerimenti!
    Antropologia? Sì, grazie!
    http://www.antrocom.org

  2. #2
    ci sono degli errori in come viene scritto il form, un attimo che faccio un analisi più dettagliata.

  3. #3

    Re: il While, ll Select e l'Insert...

    Prima di tutto, il codice html perchè lo scrivi da PHP?
    Fai molta più fatica.... cmq... non fa niente...

    In grassetto ti ho scritto la parte che mancava!
    codice:
    <FORM METHOD=\"POST\" ACTION=\"insert_text.php\">
    [...]
    <td width=\"100%\" valign=\"middle\"><font face=\"Verdana\" size=\"1\">";
    
    //elenco argomenti
    
    $sql= "SELECT * FROM envo_textnews_top";
    $risultati_mysql=mysql_query($sql);
    echo "<select name=\"topicname\">
    <option value=\"\" selected>";
    while ($riga = mysql_fetch_array($risultati_mysql))
    {
      $topicid=$riga["topicid"];
      $topicname=$riga["topicname"];
      $topicimage=$riga["topicimage"];
      echo"<option value=\"$topicname\">$topicname</option> ";
    }
    
    echo" </select></td>";
    echo "<INPUT TYPE=\"hidden\" NAME=\"topicid\" value=\"$topicid\"> ";
    <INPUT TYPE=\"SUBMIT\" VALUE=\"Invia\" name=\"submit\"><INPUT TYPE=\"reset\" VALUE=\"Cancella\">
    [...]
    </FORM>
    Nel file non serve dichiarare nulli gli autoincrement, quindi omettili direttamente

    codice:
     $sql="INSERT INTO envo_textnews (data, topicid, title, text, posted) 
    VALUES ('$data', '$topicid', '$title', '$text', '$posted')";
    prova a vedere se già ti funziona... se no ci sono altri errori....



  4. #4
    Eh, purtroppo non funziona neanche con la chiusura di </option>! La cosa interessante è che appena fatto lo script funzionava, e poi si è "inceppato".
    Mah! Farò alcune prove, la cosa proprio non mi quadra...
    Antropologia? Sì, grazie!
    http://www.antrocom.org

  5. #5
    Originariamente inviato da Red Wolf
    Eh, purtroppo non funziona neanche con la chiusura di </option>! La cosa interessante è che appena fatto lo script funzionava, e poi si è "inceppato".
    Mah! Farò alcune prove, la cosa proprio non mi quadra...
    la variabile $topicid che usi e' solo e sempre l'ultima che hai dal result set essendo l'INPUT HIDDEN fuori dal ciclo while.

    dovresti associare il 'topicid' al value dell'option.

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

  6. #6
    Piero.Mac ha ragione, non solo...

    ...hai notato che nel select utilizzi la variabile TOPICNAME e nell'input hidden TOPICID?

    .... nella query manco esiste TOPICNAME! a che ti serve fare il select :-P

    forse questa andrebbe riscritta:

    echo"<option value=\"$topicid\">$topicname</option> ";

  7. #7
    Vero, avete ragione! Forse dovrei smetterla di fare codice di notte...
    Alla fine, ho scritto così:

    $sql= "SELECT * FROM envo_textnews_top";
    $risultati_mysql=mysql_query($sql);
    echo "<select name=\"topicid\">
    <option value=\"\" selected>";
    while ($riga=mysql_fetch_array($risultati_mysql))
    {
    echo "<option value=$riga[0]>$riga[1]";
    }

    echo" </select></td>";

    Grazie a tutti per l'aiuto!
    Antropologia? Sì, grazie!
    http://www.antrocom.org

  8. #8
    non utilizzare mai mysql_fetch_array();
    non c'è controllo sulle variabili, se aggiorni il database ed introduci un nuovo campo salta la query. Utilizza sempre mysql_fetch_assoc(); così crei un array con le key e sei sicuro di dove va a finire un campo o l'altro utilizzando le keys.

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.