Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 55

Discussione: Problemuccio con sintassi php

  1. #1
    Guest

    Predefinito

    Ciao ragazzi, so che voi mi aiuterete con grande facilità...
    Allora vi spiego il mio problema...io dovrei stampare i una strnga che è contenuta in una matrice, diciamo che questa matrice è formata da 5 colonne, di cui la prima è la domanda e le altre 4 sono le possibili risposte...tipo

    Quanto fa 2+2? 1 2 3 4
    Come ti chiami? 1 2 3 4
    etc etc
    ora siccome ne deve stampare 10 io ho fatto un for...con questo codice

    for ($i=0;$i<=10;$i++)
    {
    //stampo la domanda i con le sue risposte
    echo "$domande[$DomSce][0]<br>";
    echo "<input type=\"radio\" name=\"domanda$DomSce\" value=\"ris1\">$domande[$DomSce][1]<br>";
    echo "<input type=\"radio\" name=\"domanda$DomSce\" value=\"ris2\">$domande[$DomSce][2]<br>";
    echo "<input type=\"radio\" name=\"domanda$DomSce\" value=\"ris3\">$domande[$DomSce][3]<br>";
    echo "<input type=\"radio\" name=\"domanda$DomSce\" value=\"ris4\">$domande[$DomSce][4]<br>";
    }
    dove $DomSce è la variabile che indica la riga da prendere...solo che non funziona molto bene perchè questo è il risultato:

    [0]
    [1]
    [2]
    [3]
    [4]
    [0]
    [1]
    [2]
    [3]
    [4]
    [0]
    [1]
    [2]
    [3]
    [4]
    per 10 volte e per di più i gruppi di radio button si chiamano allo stesso modo (presumo quindi che non riconosca il nome del radio con la variabile) e quindi ne fa selezionare uno su tutte le risposte...

    vi prego help...

    grazie

    luk.

  2. #2
    L'avatar di gve
    gve
    gve non è connesso Utente storico
    Data registrazione
    26-01-2003
    Residenza
    Brescia
    Messaggi
    2,964

    Predefinito

    Io di solito, per il semplice fatto che a me risulta più chiaro, preferisco usare l'operatore di concatenazione stringhe, cioè "." , anzichè includere le variabili nella stringa; puoi provare così; mi spiego meglio con un esempio, nel caso non lo conoscessi:
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris1\">".$domande[$DomSce][1]."<br>";
    | Regolamento del Forum | Regolamento di AlterVista | FAQ di AlterVista | Netiquette |

    GVE = GVE Virtual Extension
    AVCM #: 6637

  3. #3
    Guest

    Predefinito

    Azz così non scrive proprio nulla...
    innanzi tutto è corretto il caricamento della matrice così?

    $spiegazioni[7][0]="Domanda 8"; //domanda 8
    $spiegazioni[7][1]="Spiegazione1"; //risposta 1
    $spiegazioni[7][2]="Spiegazione2"; //risposta 2
    $spiegazioni[7][3]="Spiegazione3"; //risposta 3
    $spiegazioni[7][4]="Spiegazione4"; //risposta 4

    ???

    e poi ho modificato il for così:

    for ($i=0;$i<=10;$i++)
    {
    //stampo la domanda i con le sue risposte
    echo $domande[$DomSce][0]."<br>";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris1\">".$domande[$DomSce][1]."<br>";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris2\">".$domande[$DomSce][2]."<br>";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris3\">".$domande[$DomSce][3]."<br>";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris4\">".$domande[$DomSce][4]."<br>";
    }

    ma mi mette solo i radio button e nemmeno selezionabili in modo corretto a gruppi: vedi risultato

    lukino85.altervista.org



    luk.

  4. #4
    Guest

    Predefinito

    scusami, ma se la matrice si chiama $spiegazioni, xchè la richiami con
    $domande ???

    fai una prova rapida invece di:
    echo $domande[$DomSce][0]."<br>";

    metti:
    echo $spiegazioni[$DomSce][0]."<br>";


  5. #5
    Guest

    Predefinito

    Perchè in realtà sono 3 le matrici e ho preso il caricamento della prima che ho trovato, ma c'è anche il caricamento uguale di $domande...

    luk.

  6. #6
    Guest

    Predefinito

    echo '<input type="radio" name="domanda'.$DomSce.'" value="ris1">'.$domande[$DomSce][1].'<br>';

    Conoscete la differenza tra apici singoli e doppi?
    In questo modo il codice viene eseguito in modo più veloce, ed é anche più leggibile...

  7. #7
    Guest

    Predefinito

    Non scrive esattamente nulla come prima...

    ma almeno è corretto il caricamento della matrice??

    $domande[8][0]="Domanda 9"; //domanda 9
    $domande[8][1]="Risposta 1"; //risposta 1
    $domande[8][2]="Risposta 2"; //risposta 2
    $domande[8][3]="Risposta 3"; //risposta 3
    $domande[8][4]="Risposta 4"; //risposta 4

    se si 'ndo sta l'errore??

    luk.

  8. #8
    Guest

    Predefinito

    allora, visto che sei tu, ti dico come fare....

    [code:1:9cf229db63]
    <?

    $domande[0][0]="Domanda 1";
    $domande[0][1]="Spiegazione1& quot;; //risposta 1
    $domande[0][2]="Spiegazione2& quot;; //risposta 2
    $domande[0][3]="Spiegazione3& quot;; //risposta 3
    $domande[0][4]="Spiegazione4& quot;; //risposta 4

    $domande[1][0]="Domanda 2";
    $domande[1][1]="Spiegazione1& quot;; //risposta 1
    $domande[1][2]="Spiegazione2& quot;; //risposta 2
    $domande[1][3]="Spiegazione3& quot;; //risposta 3
    $domande[1][4]="Spiegazione4& quot;; //risposta 4

    $domande[2][0]="Domanda 3";
    $domande[2][1]="Spiegazione1& quot;; //risposta 1
    $domande[2][2]="Spiegazione2& quot;; //risposta 2
    $domande[2][3]="Spiegazione3& quot;; //risposta 3
    $domande[2][4]="Spiegazione4& quot;; //risposta 4


    for ($DomSce=0;$DomSce<=2;$DomSce++)
    {
    //stampo la domanda i con le sue risposte
    echo $domande[$DomSce][0]."<br& gt;";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris1\">".$domande[$D omSce][1]."<br>";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris2\">".$domande[$D omSce][2]."<br>";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris3\">".$domande[$D omSce][3]."<br>";
    echo "<input type=\"radio\" name=\"domanda".$DomSce."\" value=\"ris4\">".$domande[$D omSce][4]."<br>";
    }

    ?>
    [/code:1:9cf229db63]

    ecco quà, perfettamente funzionante.....
    ho modificato la if, xchè com' era scritta prima, ti scriveva 10 volte sempre la stessa cosa, così invece ti scrive le 3 domande che ho inserito...

  9. #9
    Guest

    Predefinito

    se vuoi vedere l'output, vai qui http://jole.altervista.org/g.php penso sia questo che volevi fare..... :?

  10. #10
    aeclanum non è connesso Utente
    Data registrazione
    25-03-2003
    Messaggi
    210

    Predefinito

    Credo che il problema sia il fatto che il for gestisce la variabile i che quindi cambia, ma il resto del codice non la usa (ne usa un'altra e cioè $domsce)

  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da Jole
    ho modificato la if, xchè com' era scritta prima, ti scriveva 10 volte sempre la stessa cosa, così invece ti scrive le 3 domande che ho inserito...
    scusa, qui avevo sbagliato a scrivere, ho modificato appunto la for e non la if...........

  12. #12
    Guest

    Predefinito

    Grandissimi ragazzi, attingendo un po' di qua e un po' di la alla fine sono arrivato alla conclusione...


    luk.

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da numerone
    echo '<input type="radio" name="domanda'.$DomSce.'" value="ris1">'.$domande[$DomSce][1].'<br>';

    Conoscete la differenza tra apici singoli e doppi?
    In questo modo il codice viene eseguito in modo più veloce, ed é anche più leggibile...
    cmq non è proprio quella la differenza fondamentale tra apici singoli o doppi eheh ^_^

  14. #14
    Guest

    Predefinito

    Grande php4all compliementoni per la grafica, cmq qeullo è risolto.
    Solo che ora ho un grandissimissimo problemone e quindi ho bisogno del vostro aiuto.
    Via allego però il file php altriemnti da spiegare è impossibile.
    http://lukino85.altervista.org/index.php.txt
    Ho allegato il file.php.txt perchè non sapevo come fare senza farlo eseguire, così riuscite a vedere il codice.
    Allora vi spiego...
    Se vedete il codie è diviso da un grande if...

    la prima parte è quella che viene eseguita al caricamento della pagina, dove vengono scelte randomo 10 domande dalla matrice, e vengono stampate.
    In un array chiamato $fatte ci stanno i numeri delle domande che sono state fatte, e fin qua tutto bene.
    Quano si clicca su correggi, viene ricaricata la pagina ma si entra nell'elseif dove action vale correggi.
    All'interno di questa parte io dovrei effettuare la correzione delle risposte, solo che per farlo avrei bisogno (come scritto nel comdice come commento) dell'array $fatte per sapere quali sono state fatte e anche delle risposte che ha dato l'utente, solo che quando ho cliccato correggi ovviamente tutti i dati sono spariti e una volta che ricarico la apgina partendo dall'elseif, tutti gli array e le variabili usate prima sono vuote.

    Ora io vi chiedo come posso fare, oppure c'è un modo zenza usare l'if di inserire un blocco ad un certo punto e far proseguire l'esecuzione dello script da li in poi quando si clicca su correggi così non perdo i dati??
    Fate voi, cmq preferisco la programmazione windows piuttosto che la programmazione web...uffa però all'uni ci fanno fare questa quindi...

    grazie

    luk.

  15. #15
    Guest

    Predefinito

    Ti ho mandato un pm dove ho scritto che non posso guardare lo script in dettaglio xchè domani parto e starò fuori casa un bel po' ç_ç

    è molto confusionario il codice di quella pagina, non c'ho capito na mazza eheh ^_^

    senti una cosa, nel mio sito tra i download nella sezione vari c'è un test caratteriale..scaricalo e guarda un po' il codice magari ti torna d'aiuto

    fa un po schifo il codice xchè l'ho fatto alla svelta per un utente del sito, cmq funziona ^_^ eheh

    quando torno se nn hai già risolto ti darò una mano!

  16. #16
    Guest

    Predefinito

    prima di tutto, facciamo in modo che ad essere passato sia un array e non variabili singole, questo ci facilita il compito successivi... quindi:

    modifichiamo inserendo delle parentesi quadre in questo blocco

    [code:1:33ae214701]

    echo "<input type=\"radio\" name=\"domanda[".$DomSce."] \" value=\"ris1\">".$domande[$D omSce][1]."<br>";
    echo "<input type=\"radio\" name=\"domanda[".$DomSce."] \" value=\"ris2\">".$domande[$D omSce][2]."<br>";
    echo "<input type=\"radio\" name=\"domanda[".$DomSce."] \" value=\"ris3\">".$domande[$D omSce][3]."<br>";
    echo "<input type=\"radio\" name=\"domanda[".$DomSce."] \" value=\"ris4\">".$domande[$D omSce][4]."<br><br>&q uot;;

    [/code:1:33ae214701]

    a questo punto, è molto semplice ritrovare tutti i valori...

    [code:1:33ae214701]
    /*a questo punto dovrei disporre dell'array $fatte per sapere quali sono le domande che sono state fatte
    e un modo di capire quali sono le risposte che l'utente ha dato e quindi intercettare con uno switch
    i radio button che ha premuto per ogni domanda per poter assegnare i punti relativi a quella domanda
    recuperandoli dalla matrice*/
    for ($i=0;$i<=10;$i++) { echo $domanda[$i]."<br>"; }

    [/code:1:33ae214701]


  17. #17
    Guest

    Predefinito

    Si ho capito, ma quando io clicco su correggi viene caricata nuovamente la pagina e quell'array li non è più memorizzato da nessuna parte e non viene passato. Quindi quandi ricarico la pagina perdo tutti i dati, a me andrebbe bene anche di non ricaricare la pagina, ma di eseguire un pezzo di script al caricametno della pagina e il resto dello script alla pressione del tasto, altrimenti non mi serve a nulla mettere l'if, ma fare due pagine php diverse.

    luk.

  18. #18
    Guest

    Predefinito

    se fai come ti ho detto io, i dati non vengono persi, ma vengono passati alla pagina successiva che poi è la stessa....

  19. #19
    Guest

    Predefinito

    guarda, ti ho uppato la pagina

    http://jole.altervista.org/index.php


  20. #20
    Guest

    Predefinito

    Sei un grande...però come faccio a prenderla la pagina...
    c'è un modo di scaricarla senza che il codice venga eseguito?
    e poi ho provato adesso ma mi da delle risposte sbagliate...
    cioè in pratica non ho capito come viene gestito quel vettore e cosa ci viene salvato dentro, in pratica io dovrei avre un vettore con il numero di domande che sono state fatte del tipo:
    $fatte=2,5,6,1, etc di modo che so quali sono le domande che sono state fatte,
    e poi un vettore con le relative risposte
    $rispdate=ris1,ris3, etc che corrispondano al vettore delle domande fatte

    e così io posso assegnare i punti

    grazie

    luk.

  21. #21
    Guest

    Predefinito

    ho rinominato il file index.txt scaricalo qui: http://jole.altervista.org/index.txt

    è molto semplice ritrovare le risposte, in $domanda[0] hai la risposta alla dimanda 0, in $domanda[1] hai la risposta alla domanda 1 e così via....

  22. #22
    Guest

    Predefinito

    ah ora ho capito perchè vengono mischiate, si ma...
    quando avrò la matrice con 200 domande non funziona più perchè io avrò

    Domanda 43
    Domanda 26
    Domanda 89
    Domana 12
    Domanda 143

    etc

    e nel vettore $fatte avrò 43, 26, 89, 12, 143 etc

    quando quindi andrò nella seconda fase non avrò nel vettore $domanda[0] la risposta alla domanda 43 bensì alla domanda 0 che magari non è nemmeno stata scelta.

    Ecco infatti ho fatto ora una prova... ho provato a mettere 13 domande, e pur dando tutte le risposte alle 10 domande scelte nella correzione mi risulta che alcune sono senza risposta.
    Io dovrei riuscire ad avere nella seconda parte un vettore o anceh una matrice con scritto il numero assoluto (cioè quello che sta nella amtrice domande) della domanda fatta e di fianco la risposta che è stata data.
    tipo:

    43, ris1
    32, ris4
    187, ris3

    etc

    luk.

  23. #23
    Guest

    Predefinito

    Citazione Originalmente inviato da ingcinema
    ah ora ho capito perchè vengono mischiate, si ma...
    quando avrò la matrice con 200 domande non funziona più perchè io avrò

    Domanda 43
    Domanda 26
    Domanda 89
    Domana 12
    Domanda 143

    etc

    e nel vettore $fatte avrò 43, 26, 89, 12, 143 etc

    quando quindi andrò nella seconda fase non avrò nel vettore $domanda[0] la risposta alla domanda 43 bensì alla domanda 0 che magari non è nemmeno stata scelta.

    luk.
    in $domanda[0] avrai risposta 12, in $domanda[1] avrai risposta 26......
    allora.... per ovviare a questo, basta fare un sort delle domande subito dopo averle scelte in questo modo
    [code:1:70947df71b]
    }
    } //chiude il primo while
    sort($fatte); //ordino le domande
    //HO IL VETTORE $FATTE CON ALL'INTERNO (da 0 a 9) LE DOMANDE DA FARE
    echo "<form method='POST' action='index.php'>";
    [/code:1:70947df71b]

    così ci sarà la corrispondenza di posizione tra domanda e risposta

  24. #24
    Guest

    Predefinito

    Guarda, ho aggiornato quello che avevo scritto prima nel post, e anche emttendo il sort non funziona, perchè il sort mi ordina le domande, ma a parte che io non le voglio ordinate e poi da quello che ho capito facendo così succede questo:
    se io ho la domanda 28
    $domanda[28]=ris1;
    $domanda[43]=ris3;
    $domanda[187]=ris2;

    etc

    qaundo io nella seconda parte vado con il for a scandire domanda uso un indice che va da 0 a 9 e quidni mi va a vedere cosa c'è in
    $domanda[0];
    $domanda[1];
    $domanda[2];
    etc e non troverà nulla

    giusto??

    e poi scusa perchè il vettore $domanda lo passa di la mentre il vettore $fatte no??
    non c'è un modo per passare direttamente il vettore $fatte in blocco?

    luk.

  25. #25
    Guest

    Predefinito

    scusami, il fatto che erano 10 mi avevano confuso.... eliminiamo il sort...
    vediamo un pò...
    per far passare anche $fatte, aggiungiamo un'altra input al form in questo modo....

    [code:1:fe98e6a2a3]
    echo "<input type=\"hidden\" name=\"fatte\" value=\"";
    foreach ($fatte as $dom) echo $dom.",";
    echo "\">";
    echo "<input type=\"submit\" name=\"correggi\" value=\"Correggi\">";

    [/code:1:fe98e6a2a3]

    perfetto, ora fatte è passata, allora alla fine andiamo a leggere le domande e le risposte in questo modo....


    [code:1:fe98e6a2a3]
    recuperandoli dalla matrice*/

    $fatte=explode(",",substr($fatte , 0, -1));
    foreach ($fatte as $dom) echo "domanda:<b>".$dom."&l t;/b> risposta:<b>".$domanda[$dom-1]."</b><br>";

    [/code:1:fe98e6a2a3]

    ora dovrebbe essere perfetto!!!

    puoi vedere il funzionamento al solito link:
    http://jole.altervista.org/index.php

  26. #26
    Guest

    Predefinito

    e scaricarlo se ti serve qui http://jole.altervista.org/index.txt

  27. #27
    Guest

    Predefinito

    Grazie Jole sei un genio. Ora non ho tempo devo prendere il treno per torino, ma appena arrivo provo a sistemarlo e vedere anche di capire la logica di quello che è stato fatto che è importante...

    per adesso grazie mille...

    spero di non aver più bisogno, se ne avessi ti chiederò....

    luk.

  28. #28
    Guest

    Predefinito

    prego figurati, avvisami quando i file sul mio spazio non ti servono più, così li cancello........ buon ritorno....

  29. #29
    Guest

    Predefinito

    Scusa il ritardo, no no cancella pura tutto, avevo copiato subito.
    Solo una cosa per cuiosità
    a cosa serve l'explode, magari mi potrà riservire

    grazie

    luk.

  30. #30
    Guest

    Predefinito

    ok, allora cancello..........

    explode, serve a dividere una stringa in più parti, suddividendola in base al separatore passato come argomento.

    esempio, ho la stringa $i="1,7,3,2,5"

    volendo trasformare questa stringa in un array uso la virgola come separatore (potrei usare anche più caratteri come delimitatore)

    $trasforma=explode(",",$i);

    a questo punto $trasforma[0] sarà = 1 , $trasforma[1] sarà = 7 ecc..

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •