• User Attivo

    Il codice completo lo trovi nel primo post (io poi ho modificato con il GET come mi hai consigliato te, ma sempre col medesimo problema)!


  • ModSenior

    TI ho chiesto di riscriverlo proprio perchè dopo lo hai modificato, e non posso sapere dove sbagli senza vedere entrambe le pagine allo stato attuale.


  • User Attivo

    Ok col GET/POST ci sono riuscito, posto il codice:

    Pagina "1.php"
    [PHP]
    <?php
    include("conn.php"); ?>
    <form name="form" method="get" action="11.php">
    <select name="pippo">
    <?php
    $risultato=mysql_query("SELECT id, nome FROM utenti, $conn);
    if (!$risultato)
    {
    die("La tabella selezionata non esiste " . mysql_error());
    }
    while ($riga=mysql_fetch_array($risultato))
    {
    //ho aggiunto la variabile $qqq
    $qqq = "<option value="".$riga["id"]."">".$riga["id"]."</option>";echo $qqq;}?>
    </select><input type="submit" name="submit" id="submit" value="Invia"></form>
    [/PHP]

    Pagina "11.php"
    [PHP]
    <?php echo $_GET["pippo"]; ?>
    [/PHP]

    Questo è risolto 🙂
    Complichiamo un po' le cose: tra la pagina "1.php" e la pagina "11.php" c'è di mezzo un'altra pagina, per di più i parametri che vorrei passare non sono solamente "id" e "nome" ma anche "indirizzo", "città" ecc. Per questo motivo usavo le SESSION.
    [PHP]
    <?php
    $risultato=mysql_query("SELECT id, nome, indirizzo, citta FROM utenti , $conn);
    if (!$risultato)
    {
    die("La tabella selezionata non esiste " . mysql_error());
    }
    while ($riga=mysql_fetch_array($risultato))
    {
    // nel menù a tendina si deve vedere solo l'id, ma devo passare tutti i parametri del SELECT sotto forma di SESSION
    $qqq = "<option value="".$riga["id"]."">".$riga["id"]."</option>";
    echo $qqq;
    }
    // SE IO QUI METTO COSI'
    $_SESSION['id'] = $riga['id'];
    $_SESSION['nome'] = $riga['nome'];
    $_SESSION['indirizzo'] = $riga['indirizzo'];
    $_SESSION['citta'] = $riga['citta'];
    // MI PASSA SEMPRE L'ID=1, quindi devo fare in modo che al variare di ciò che clicco nel menù a tendina vari la creazione delle SESSION!?>
    [/PHP]

    Grazie anticipatamente 🙂


  • ModSenior

    Puoi passare anche quelli come GET, perchè ti sei fissato ad usare per tutto le sessioni?
    Tra l'altro se utilizzi le sessioni per queste cose, ed un visitatore apre 2 schede nel browser, hai un bel pò di problemi.


  • User Attivo

    C'è una ragione non sono un fanatico delle session! 😛
    E' che questa pagina oltre al menù a tendina ha davvero molti altri campi, i quali vanno passati sotto POST poiché è unico il modulo in cui è inserita la moltitudine dei form 🙂


  • ModSenior

    E quindi le sessioni che c'entrano?


  • User Attivo

    Nella prima pagina creo le sessioni, nella seconda non mi occorrono, nella terza pagina mi serve richiamarle.


  • ModSenior

    Perchè non puoi passarle dalla prima alla seconda, e dopo dalla seconda alla terza?


  • User Attivo

    Ho capito va ti spiego dettagliatamente: la prima pagina inserisci i valori, ci sono vari cicli if e se tutto è corretto inserisce i valori immessi nel database. Se l'inserimento è andato a buon fine, viene visualizzato un link che ti manda ad un'altra pagine di riepilogo dei dati inseriti. In questa pagina di riepilogo io stampavo i valori session dei parametri che prima ho postato, per tutti gli altri invece facevo una query select e li stampavo.
    Ora se te mi consigli il GET va benissimo, mi fido ciecamente perché le mie conoscenze sono terra terra, l'unica cosa è che non so proprio che codice usare così :sun:


  • ModSenior

    Allora le sessioni puoi eliminarle tranquillamente.
    Solitamente il passaggio dei dati per un inserimento avviene con metodo POST, se dopo devi mandare l'utente ad una pagina di riepilogo lo mandi verso una pagina del tipo riepilogo.php?id_riepilogo=X
    La pagina riepilogo.php dovrebbe prendere i dati esclusivamente dal database, non da session od altro.


  • User Attivo

    Perfetto!
    Ultima cosa: come faccio a tirare fuori una variabile id da questa stringa? (mi serve per il WHERE della SELECT) 🙂

    [PHP]
    while ($riga=mysql_fetch_array($risultato))
    {
    $qqq = "<option value="".$riga["id"]."">".$riga["id"]."</option>";
    echo $qqq;
    [/PHP]


  • ModSenior

    Se il select si chiama pippo la trovi in $_POST['pippo'] se il form è con metodo post, se è GET lo trovi in $_GET['pippo']


  • User Attivo

    E solo per completezza (dovesse servire in altre occasioni): qualora avessi usato una SESSION?


  • ModSenior

    Non si può fare direttamente, session serve per altri scopi, non per queste cose.


  • User Attivo

    Sarò duro di comprendonio ma proprio non riesco a risolvere il problema:
    In questa pagina "1.php" devo inserire molti dati, quindi uso il POST, tramite i CICLI IF verifico se ci sono errori, qualora è andato tutto a buon fine in alto alla pagina "1.php" mi dà il link al visualizza riepilogo (11.php).
    Nella pagina "1.php" c'è anche questo maledetto menù a tendina dove scegliere un numero

    [PHP]
    while ($riga=mysql_fetch_array($risultato)){
    $idcon = $riga["id"];
    $nomecon = $riga["nome"];
    $qqq = "<option value= "" . $idcon . "">" . $nomecon . "</option>";
    echo $qqq;[/PHP]
    Il link che mi fa andare alla pagina di riepilogo -come mi hai suggerito- ha: 11.php?id_riepilogo=$qqq:
    [PHP]
    if (!empty($errori))
    {$messaggio = "Errore nella compilazione dei campi del form";}else{$messaggio = "Inserimento avvenuto!!" . "<br/>" . "Vedi il <a href='11.php?id_riepilogo=$qqq'>RIEPILOGO!</a>";}[/PHP]
    Così nell'url mi trovo: "11.php?id_riepilogo=<option value= "1">1</option>" che tra l'altro è errato perché nel menù a tendina io avevo scelto 4 e non 1.
    La domanda è: nella pagina riepilogo (11.php) come faccio a catturare il parametro 4 (che mi serve per la condizione WHERE del SELECT)??

    Scusa ancora e grazie 🙂


  • ModSenior

    Esempio:
    [php]
    <form action="pagina2.php" method="get">
    <select name="ciao">
    <option value="1">1</option>
    <option value="2">2</option>
    </select>
    <input type="submit" />
    </form>
    [/php]

    Pagina2.php
    [php]
    if(isset($_GET['ciao']))
    echo $_GET['ciao'];
    [/php]

    Prova questo codice, e capisci come funziona.


  • User Attivo

    Eh ma il problema è che non posso usare il GET perché nella prima pagina ho 80 campi da riempire tra cui anche il menù a tendina!


  • ModSenior

    Usi il post, non cambia nulla.


  • User Attivo

    Il GET non lo posso utilizzare perché è una pagina con troppi inserimenti, il POST neppure perché le pagine non sono consequenziali! :arrabbiato:


  • ModSenior

    Perchè non vuoi fare le cose come ti ho detto io, per queste cose si usa un database.
    La pagina 1 con il form salva i dati su un database, e nella pagina 3 recuperi i dati dal database.