+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

passaggio array con $_session

  1. #1
    sciagallone non è in linea Novello
    Salve,
    avrei bisogno di capire come faccio, dopo aver fatto una select ed aver memorizzato i valori in un array $_Session, a visualizzarli in altra pagina html all'interno di una tabella...

    posto parte del codice

    //codice 1 pagina php
    $query="SELECT `domanda` , `risp1` , `risp2` , `risp3` , `risp4`, `n_domanda`, FROM `domanda WHERE `n_domanda` = '$n_domanda'";
    $risultato = mysql_query($query) or die($query. mysql_error());
    if (mysql_num_rows($risultato4) == 0)
    echo 'Nessuna riga trovata, niente da stampare quindi si esce';

    else
    {
    while($row = mysql_fetch_row($risultato))
    {
    $_SESSION['risp1'] = $row[0];
    $_SESSION['risp2'] = $row[1];
    $_SESSION['risp3'] = $row[2];
    $_SESSION['risp4'] = $row[3];
    }
    mysql_free_result($risultato); // Libera la memoria occupata dal risultato
    }

    //codice seconda pagina con tabella html

    <?php session_start();

    $testo_domanda = $_SESSION['domanda'];
    $risp1[] = $_SESSION['risp1'];
    $risp2[] = $_SESSION['risp2'];
    $risp3[] = $_SESSION['risp3'];
    $risp4[] = $_SESSION['risp4'];
    $n_domanda[] = $_SESSION['n_domanda'];

    <html>
    <body>

    [ connessione db ecc...]

    <tr>
    <td ><b> DOMANDA 1<?php echo $n_domanda[0];?></b></td>
    <td ><b>&nbsp; <?php echo $domanda[0]);?> </b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA A</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp1[0];?></b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA b</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp2[0];?></b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA c</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp3[0];?></b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA d</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp4[0];?></b></td>
    </tr>


    <table >
    <tr>
    <td ><b> DOMANDA 1<?php echo $n_domanda[0];?></b></td>
    <td ><b>&nbsp; <?php echo $domanda[1]);?> </b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA A</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp1[1];?></b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA b</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp2[1];?></b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA c</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp3[1];?></b></td>
    </tr>
    <tr>
    <td><b> RISPOSTA d</b></td> <td ><input type="radio" name="risposta" value="1"/></td><td ><b> <?php echo $risp4[1];?></b></td>
    </tr>




    <tr>

    <input type="submit" value="Invia">

    </td>
    </tr>
    </table>

    </body>
    <html>

    con questo codice ho fatto la prova di visualizzare due domande e le relative risposte che nel primo file php erano state memorizzate in $row[] (e sono sicuro che i dati ci stanno perchè facendo l'echo $row[0] visualizzava tutti i testi delle domande), ma richiamando i dati tramite session nel secondo file con la tabella html mi visualizza solo la prima domanda con le risposte e lascia vuote le celle della tabella per la seconda risposta...

    Dove sbaglio??? per favore datemi una mano...non conosco bene php e sicuramente non so gestire bene gli array e le sessioni...

  2. #2
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    Mi pare che non stai facendo quello che descrivi di voler fare...

    Premesso che $row[0], $row[1], ... sono il contenuto dei campi della singola riga
    In lettura a ogni ciclo vai a sovrascrivere i quattro oggetti in sessione con i dati dell'ultima riga recuperata. Quindi man mano che scorri il db vai a sovrascrivere quattro valori (che tutto sono meno che array) con i dati che ricavi.

    Se non ho capito male i quattro oggetti in sessione dovrebbero essere degli array. Per ottenere questo è meglio se li crei fuori dalla while, li riempi nella while, e li infili in sessione una volta che hai terminato la while. Questo tra l'altro ti permette di verificarne il contenuto prima di passare all'altra pagina (controllare il contenuto di $row è inutile - a te interessa quello che va a finire in $_SESSION).
    ℹ️ Leggi di più su bottomap ...

  3. #3
    sciagallone non è in linea Novello
    grazie mille della risposta...

    "Se non ho capito male i quattro oggetti in sessione dovrebbero essere degli array. Per ottenere questo è meglio se li crei fuori dalla while, li riempi nella while, e li infili in sessione una volta che hai terminato la while. Questo tra l'altro ti permette di verificarne il contenuto prima di passare all'altra pagina (controllare il contenuto di $row è inutile - a te interessa quello che va a finire in $_SESSION)."

    io volevo degli array session perchè non sapevo come gestire il passaggio dei dati, visto che la select mi restituisce 5 domanda` , 5 `risp1` , 5`risp2` , 5`risp3` , 5`risp4`, 5`n_domanda e che questi dati li devo visualizzare in pagine successive...

    quindi tu mi dici di creare gli array vuoti fuori dal while, riempirli dentro il while e poi metterli in session fuori dal while...non è che mi potresti far vedere un esempio che possa andare bene per il mio scopo???

    Grazie

  4. #4
    sciagallone non è in linea Novello
    salve a tutti...
    purtroppo non ho ancora risolto...
    ancora non ho capito bene come devo passare i risultati della select per memorizzarli in session e poterli usare reiterativamente per visualizzare una domanda con le relative risposte in una tabella html ognuna in una pagina singola.

    ho pensato a questo codice...

    while($row = mysql_fetch_row($risultato))
    {

    $testo_domanda = $row[0];
    $risp1 = $row[1];
    $risp2 = $row[2];
    $risp3 = $row[3];
    $risp4 = $row[4];
    $n_domanda = $row[5];


    for ($i=0;$i<=5; )
    {
    $_SESSION[$i]['testo_domanda'] = $testo_domanda;
    $_SESSION[$i]['distrattore1'] = $risp1;
    $_SESSION[$i]['distrattore2'] = $risp2;
    $_SESSION[$i]['distrattore3'] = $risp3;
    $_SESSION[$i]['distrattore4'] = $risp4;
    $_SESSION[$i]['n_domanda'] = $n_domanda;
    }
    }


    grazie a chiunque voglia perdere un po' del suo tempo per aiutarmi...

  5. #5
    sciagallone non è in linea Novello
    purtroppo non so proprio come fare...logicamente anche il codice scritto nel post precedente non funziona...come posso fare per salvare i singoli campi dei record risultati della select che sono in $row = mysql_fetch_row($risultato)
    in $_session per poter utilizzare i dati dei singoli record per le domande successive del test....riesco solo a visualizzarne una...

    per favore un aiuto....

  6. #6
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    Come detto si tratta di creare un array prima della while, durante la while riempirlo con un array contenente le varie colonne (uno ce l'hai già, è $row, ma puoi anche usare i vari $row[x] per riempire una tua struttura) e al termine della while inserire l'array in sessione. Quello che deve finire in sessione è un array A composto di una serie di array B (uno per ogni riga, con il generico B[i] che contiene il valore della colonna).

    La documentazione sugli array è piuttosto completa: PHP: Arrays - Manual
    Se non riesci a venirne a capo è il caso di fare qualche esperimento ed approfondirne bene il funzionamento. Un array vuoto lo crei semplicemente con $var=array();
    ℹ️ Leggi di più su bottomap ...

  7. #7
    L'avatar di Speed16
    Speed16 non è in linea Scolaretto
    Ciao sciagallone,
    premetto che la mia domanda può essere stupida ma voglio solo assicurarmi di una cosa. Hai avviato la sessione nella pagina 1? (session_start).

    Per il resto è giusto quello che bottomap ti ha detto.

    Ciao

    P.S. Usa i tag code per il codice
    ℹ️ Leggi di più su Speed16 ...

  8. #8
    sciagallone non è in linea Novello
    ciao...speed

    si ho aperto la sessione in tutte le pagine e passato i dati

    <code>for ($i=0; $i<=4; $i++)
    {
    echo "<form action=\"correttore.php\" method=\"post\">";
    $query5="SELECT commento1, commento2, commento3, commento4 FROM commenti WHERE `n_domanda` = '$n_domanda[$i]'";
    $risultato4 = mysql_query($query5) or die($query5. mysql_error());
    if (mysql_num_rows($risultato4) == 0)
    echo 'Nessuna riga trovata, niente da stampare quindi si esce';
    else
    {
    $commento1=array();
    $commento2=array();
    $commento3=array();
    $commento4=array();
    while($row = mysql_fetch_row($risultato4))
    {
    $commento1 = $row['commento1'];
    $commento2 = $row['commento2'];
    $commento3 = $row['commento3'];
    $commento4 = $row['commento4'];
    }
    $_SESSION['commento1'] = $commento1;
    $_SESSION['commento2'] = $commento2;
    $_SESSION['commento3'] = $commento3;
    $_SESSION['commento4'] = $commento4;

    mysql_free_result($risultato4); // Libera la memoria occupata dal risultato
    }
    echo"</form>";
    }
    </code>

    questo è quello che mi ha deto di fare bottom oppure non ho capito...

    ho letto la documentazione ma resto molto dubbioso...
    ad esempio una volta che ho inizializzato l'array $commenti1 e l'ho memorizzato in
    $_SESSION['commento1'] = $commento1;
    nella pagina dome mi serve lo recupero scrivendo
    $commento1 = htmlspecialchars($_SESSION['commento1']);

    ma poi nel ciclo che crea la tabella dove dovranno essere inseriti i dati come faccio a far visualizzare ad ogni ciclo uno dei 5 valori che si trovano nell'array $commenti1????

    se scrivi nella tabella $commenti1[$i];
    non visualizza nulla
    se scrivo $commenti1[0];
    non visualizza nemmeno il primo valore...

    insomma dove sbagli nel passaggio dei dati o quando cerco di visualizzarli nel ciclo???

    per favore datemi una mano che a forza di provare ormai il programma non fa più neanche quel poco che ero riuscito a fargli fare...

    aspetto consigli ed esempi di codice preziosissimi per un novellino come me...

  9. #9
    L'avatar di bottomap
    bottomap non è in linea Amanuense
    Ciao,

    Fatto salvo quanto detto da Speed16 più sopra, il consiglio spassionato è fare pratica e approfondire l'argomento prima di procedere oltre... rischi di bloccarti poco più avanti su cose altrettanto banali.

    Non sei molto lontano dalla soluzione, ma per inserire qualcosa in un array non puoi cercare di usare l'operatore di assegnamento.
    Se scrivi:
    $var = array();
    $var = "pippo";
    Non ottieni di inserire una stringa nell'array, ma di modificare la variabile $var. Questo è un errore che sottolinea una lacuna di fondo che è bene tu risolva prima di procedere. Rileggi bene la documentazione, ci sono degli esempi in cui un elemento viene inserito dentro un array.

    Riguardo al recupero del valore, da $session otterrai degli array (l'htmlspecialchars al limite si applica alle stringhe in essi contenute), che possono essere acceduti nella maniera consueta. Il problema è che non stai (di nuovo ) inserendo in sessione degli array.
    ℹ️ Leggi di più su bottomap ...

  10. #10
    sciagallone non è in linea Novello
    grazie bottom

    allora farò tesoro delle vostre risposte e cercherò di studiare bene prima di ripostare problemi...

    ma avevo capito dal tuo secondo post che "Un array vuoto lo crei semplicemente con $var=array();" ho evidentemente frainteso tutto...
    purtroppo è lo stesso problema che ho con la documentazione ....
    non ho trovato nessun esempio di riempimento di un array con dei risultati di una query gestiti con mysql_fetch_row o mysql_fetch_array....
    o come visualizzare in un ciclo ad ogni iterazione un campo di uno stesso array...

    avrei bisogno di qualcuno che mi facesse vedere qualche esempio di codice...
    mi sa che dovrò fare un corso perchè da solo, con il solo ausilio dei forum non risolvo nulla.

    grazie lo stesso
    Ultima modifica di sciagallone; 25-03-2014 20:21 

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Risposte: 5
    Ultimo Post: 16-12-2017, 17:48
  2. Passaggio array di controlli (come parametro) a funzione/sub
    Da spikexx84 nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 08-02-2011, 09:11
  3. [ASP.NET] Javascript e passaggio Array
    Da mikeee nel forum ASP 3, ASP .Net
    Risposte: 5
    Ultimo Post: 04-02-2008, 11:34
  4. [Win32] Passaggio di un array alla WndProc
    Da barraluca73 nel forum C/C++
    Risposte: 3
    Ultimo Post: 27-02-2006, 15:46
  5. [C/C++] Passaggio di array ad una funzione
    Da Diego Diego nel forum C/C++
    Risposte: 2
    Ultimo Post: 23-03-2005, 18:49