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

    [HELP!]Variabile radio button va persa in pagina successiva

    Ciao ho un problema che non riesco a risolvere, sto seguendo un manuale on-line per imparare php, ma sono bloccato da un po' perchè succede che non riesco a far passare una variabile di un radio input alla pagina successiva.
    Ecco il codice di pagina 1, dove creo la variabile $roomNumb prendendo i dati ("id") da una tabella ("adventure") mysql. La inserisco poi con un ciclo WHILE nel campo "value" dal form radio. Il quale dovrebbe poi inviarla a pagina2 con method="post".

    Codice PHP:
    <html>
    <head>
    <title> PAGINA1</title>
    <style type="text/css"> body {color:red} td{color:white; background-color:blue} 
    th {color:white; background-color:red} </style>
    </head>
    <body>
    <?


    $connect
    =mysql_connect("localhost""root""root") or die ("no connection");
    mysql_select_db("adv1"$connect);
    $sql="SELECT * FROM adventure ORDER BY id";
    $result=mysql_query($sql$connect);

    print <<<HERE
    <form method="post"
    action="PAGINA2.php">
    HERE;

    while (
    $row=mysql_fetch_assoc($result)) {
        print 
    "<table border= 1 width=80%>\n";
    foreach (
    $row as $key=>$value) {
        
    $roomNumb=$row["id"];
        print <<<HERE
        <tr>
        <th width=10%>
    $key</th>
        <td>
    $value</td>
        </tr>
    HERE;
        }
    print <<<HERE
    <tr>
    <td colspan=2 align="center">
    <input type"radio"
    name="room"
    value="
    $roomNumb"> Modifica questa room //QUESTO VALORE NON PASSA
    <input type="submit"
    value="edit">
    </td></tr></table>

    HERE;

    }


    ?>
    <center> <input type = "submit"
    value = "edit indicated room">
    </center>
    </form>
    </body>
    </html>

    pagina2 (in teoria dovrebbe ricevere la variabile $room del form radio di pag1 , ma in realtà mi tiene sempre l'ultimo valore che viene creato dal ciclo WHILE di pag1)..
    codice:

    Codice PHP:
    <html>
    <head>
    <title> PAGINA2</title>
    <style type="text/css"> body {color:red} td{color:white; background-color:blue; width:20%; height:5em; text-align:center} </style>
    </head>
    <body>
    <?
    $room
    =$_POST['room']; //LA VARIABILE PASSA MA COL VALORE SBAGLIATO

    if(empty($room)) {
        
    $room="0";
    }


    $connect=mysql_connect("localhost""root""root") or die ("no connection");
    mysql_select_db("adv1"$connect);
    $sql="SELECT * FROM adventure WHERE id='$room'"////ECCOLA QUI

    // IL RESTO NON E' IMPORTANTE 

    $result=mysql_query($sql$connect);
    $mainRow=mysql_fetch_assoc($result);
    $theText=$mainRow["description"];
    $roomName=$mainRow["name"];
    $northList=makeList("north"$mainRow["north"]);
    $southList=makeList("south"$mainRow["south"]);
    $westList=makeList("west"$mainRow["west"]);
    $eastList=makeList("east"$mainRow["east"]);
    $roomNum=$mainRow["id"];

    print <<<HERE
    <form method="post"
    action="saveRoom.php">
    <table border=1>
    <tr>
    <td colspan=3>
    Room # 
    $roomNum:
    <input type="text"
    name="name"
    value="
    $roomName">
    <input type="hidden"
    name="id"
    value="
    $roomNum">
    </td>
    </tr>
    <tr>
    <td></td>
    <td>
    $northList</td>
    <td></td>
    </tr>
    <tr>
    <td>
    $westList</td>
    <td><textarea rows=5 cols=30 name="description">
    $theText</textarea>
    </td>
    <td>
    $eastList</td>
    </tr>
    <tr>
    <td></td>
    <td>
    $southList</td>
    <td></td>
    </tr>
    <tr>
    <td colspan=3>
    <input type="submit"
    value="save this room">
    </td>
    </tr>
    </table>
    </form>
    HERE;

    function 
    makeList($dir$current) {
        global 
    $connect;
    $listCode="<select name=$dir>";
     
    $sql="SELECT id, name FROM adventure";
     
    $result=mysql_query($sql$connect);
     
    $rowNum=0;
     while (
    $row=mysql_fetch_assoc($result)) {
         
    $id=$row["id"];
         
    $placeName=$row["name"];
         
    $listCode .="<option value = $id";
         if (
    $rowNum == $current) {
             
    $listCode .="         selected\n";
         }
         
    $listCode .=">$placeName</option>";
         
    $rowNum++;
     }
     return 
    $listCode;
    }

    print 
    "done";

    ?>
    </center>
    </body>
    </html>
    Ho iniziato da poco a studiare php, ho comunque visto che nel manuale che seguo (della serie absolute beginner) non c'è bisogno ogni volta di richiamare le variabili a inizio pagina con $_POST etc. (una roba che chiamano register_global settato su on o off che non ho capito bene cos'è) quindi probabilmente credo sia lì il problema perchè il resto del codice è uguale al loro..

    ciao grazie per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    356
    controlla l'html della pagina che ti viene creata...secondo me c'è qualche problema li...

    prova a vedere e magari incollala qui così ti diamo una mano!!
    Jekkil

  3. #3
    è normale che si comporti così:
    tu hai fatto un ciclo per elaborare il risultato di una query che restituisce più di un valore.
    Successivamente crei un form chiamato "room" in cui inserisci tutti i valori con il suo bel pulsante submit.
    Chiamandosi sempre ROOM è normale che, nel momento in cui chiami la seconda pagina, venga passato in POST il valore di room, ma, ovviamente, il valore di ROOM è quello dell'ultima riga elaborata nel tuo ciclo while.
    Spero di essere riuscito ad esprimere bene il concetto
    Se ho capito tutto bene dal tuo esempio, dovresti riuscire a dare un nome dinamico ai tuoi form (tipo room1, room2, etc...) che vengano poi passati singolarmente alla pagina successiva

  4. #4
    @ cristianpixio:
    scusa forse non ho capito quello che intendi, perchè a logica il codice dovrebbe funzionare così com'è... la variabile in questione è un campo "value" di un form radio che deve essere compilato dall'utente a PAGINA 1, quindi nel momento in cui il campo "name" del form radio viene inviato a PAGINA 2, la sua "value" corrispondente dovrebbe essere quella appunto selezionata dall'utente in precedenza.
    ...è questo che non capisco, sembra che il valore campo radio selezionato dall'utente non venga preso in considerazione...

    ç jekkill, stasera a casa provo a postare il codice html, comunque dove pensi sia l'errore?

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.