Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Estrazione casuale array

    Salve ragazzi anche se seguo questo forum da tempo,trovandolo utile ed esauriente,non avevo mai pubblicato nulla, adesso che mi ritrovo ad affrontare un ostacolo ostico in un progetto universitario e non trovando nessuno spunto per la soluzione mi trovo costretto a chiedere aiuto,essendo comunque la prima volta che programmo in php.
    Vi riassumo brevemente il progetto e vi dico dove sto riscontrando problemi:
    Il progetto è la realizzazione di un sito che consente agli studenti di effettuare dei test online sulle materie scelte e si struttura su due parti:
    lato insegnanti: registrazione, login, inserimento quesiti (domanda,risposta a, risposta b,risposta c,risposta d, risposta esatta) per la propria materia ;
    lato studenti: registrazione, login, scelta della materia su cui affrontare test, estrazione di n quesiti casuali tra quelli inseriti per la materia(nel mio caso3), tali quesiti vanno inseriti per mia scelta in dei label, lo studente seleziona le risposte corrette, e il sistema conteggia quante risposte sono state date corrette.
    Io ho già realizzato tutta la parte insegnanti, e la parte studenti fino alla scelta della materia. Ricavandomi l'id della materia che lo studente sceglie ne estraggo tutti gli id relativi ai quesiti tramite query:
    $query = " SELECT id FROM quesiti WHERE id_materia=$idmateria";
    $result = mysql_query( $query , $myconn) or die (mysql_error());
    $resrow = mysql_fetch_row($result);

    Avendo quest' array di id, come faccio ad estrarne in modo random 3 ed inserirli nei label da visualizzare all'utente?Grazie a chiunque mi fornirà aiuto

  2. #2
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Avendo quest' array di id
    http://php.net/manual/en/function.mysql-fetch-row.php , "mysql_fetch_row() fetches one row of data"

    La query per selezionare delle righe a caso:
    codice:
    SELECT id FROM quesiti WHERE id_materia = :id ORDER BY RAND() LIMIT 3
    https://www.google.it/?gws_rd=ssl#q=...+random+record

  3. #3
    Quote Originariamente inviata da .Kurt Visualizza il messaggio
    http://php.net/manual/en/function.mysql-fetch-row.php , "mysql_fetch_row() fetches one row of data"

    La query per selezionare delle righe a caso:
    codice:
    SELECT id FROM quesiti WHERE id_materia = :id ORDER BY RAND() LIMIT 3
    https://www.google.it/?gws_rd=ssl#q=...+random+record
    ti ringrazio sei stato gentilissimo!! non credevo fosse così semplice, stavo impazzendo, domani lo provo e ti faccio sapere..
    Quindi eseguendo la query suggerita e mettendola in un array in questo modo:
    $result = mysql_query( $query , $myconn) or die (mysql_error());
    $resrow = mysql_fetch_row($result);

    e i tre indici li estrarrò con $resrow[0] ,
    $resrow[1] , $resrow[2]?

  4. #4
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    e i tre indici li estrarrò con $resrow[0] , $resrow[1] , $resrow[2]?
    No, te lo chiarisce la documentazione. "mysql_fetch_row() fetches one row of data". Con le vecchie funzioni mysql_* hai bisogno di un loop per recuperare tutti i dati, qualcosa tipo
    codice:
    $array = array();
    while($row = mysql_fetch_assoc($result)){
        // stuff with $row['id']
        $array[] = $row['id'];
    }
    
    echo "Primo id: ", $array[0];
    echo "Secondo id: ", $array[1];
    echo "Terzo id: ", $array[2];
    Non ti dirò di non continuare con le funzioni mysql_* in favore di altre api, perché il lavoro lo portano comunque a termine. Ma considerati informato: le mysql_* sono deprecate e si dovrebbe utilizzare una delle due estensioni mantenute attivamente: pdo o mysqli.
    Ultima modifica di .Kurt; 30-01-2015 a 20:43

  5. #5
    Ti ringrazio per il supporto, dovrei essere in grado di completare il progetto!
    si so che le funzioni mysql_* sono deprecate e sono state sostituite da mysqli o pdo, ma dovevo consegnare questo progetto in 20 giorni,senza che il prof di database ci abbia fatto una sola lezione su php, solo lezioni su database e mysql.. quindi ho dovuto imparare in 2 giorni da autodidatta e una volta cominciato il progetto mi sono accorto di usare funzioni vecchie, ma non avendo tempo di ristudiarmi tutta la teoria ho scelto di continuare così.
    Se dovessi avere ancora problemi aggiorno il thread..Grazie infinite per la disponibilità

  6. #6
    Ultimo quesito perchè credo di essere arrivato alla soluzione finale. Come faccio a far apparire il contenuto di variabili dentro un label?
    Una volta procuratomi gli id col metodo suggerito mi procuro il quesito relativo così:

    $query = " SELECT Domanda, A, B, C, D, Risposta_esatta FROM quesiti WHERE id = $array[0]";
    $result = mysql_query( $query , $myconn) or die (mysql_error());
    $row = mysql_fetch_assoc($result);


    e ho provato a visualizzarne il contenuto in un label in questo modo:

    <form name="form1" method="post" action="">
    <?php $row['Domanda'] ?> </br>
    <p>
    <label>
    <input type="radio" name="radio" value= <?php $row['A'] ?>>
    <?php $row['A'] ?></label>
    <br>
    <label>
    <input type="radio" name="radio" value= <?php $row['B'] ?>>
    <?php $row['B'] ?></label>
    <br>
    <label>
    <input type="radio" name="radio" value= <?php $row['C'] ?>>
    <?php $row['C'] ?></label>
    <br>
    <label>
    <input type="radio" name="radio" value= <?php $row['D'] ?>>
    <?php $row['D'] ?></label>
    <br>
    </p>
    <p>
    <input type="submit" name="Submit" value="Invia">
    </p>
    </form>


    ma non appare nulla per quanto riguarda le variabili, visualizzo solo i "bottoni di scelta" del label, ma senza nessun contenuto.

  7. #7
    Quote Originariamente inviata da Giuseppephp Visualizza il messaggio
    Ultimo quesito perchè credo di essere arrivato alla soluzione finale. Come faccio a far apparire il contenuto di variabili dentro un label?
    Una volta procuratomi gli id col metodo suggerito mi procuro il quesito relativo così:

    $query = " SELECT Domanda, A, B, C, D, Risposta_esatta FROM quesiti WHERE id = $array[0]";
    $result = mysql_query( $query , $myconn) or die (mysql_error());
    $row = mysql_fetch_assoc($result);


    e ho provato a visualizzarne il contenuto in un label in questo modo:

    <form name="form1" method="post" action="">
    <?php $row['Domanda'] ?> </br>
    <p>
    <label>
    <input type="radio" name="radio" value= <?php $row['A'] ?>>
    <?php $row['A'] ?></label>
    <br>
    <label>
    <input type="radio" name="radio" value= <?php $row['B'] ?>>
    <?php $row['B'] ?></label>
    <br>
    <label>
    <input type="radio" name="radio" value= <?php $row['C'] ?>>
    <?php $row['C'] ?></label>
    <br>
    <label>
    <input type="radio" name="radio" value= <?php $row['D'] ?>>
    <?php $row['D'] ?></label>
    <br>
    </p>
    <p>
    <input type="submit" name="Submit" value="Invia">
    </p>
    </form>


    ma non appare nulla per quanto riguarda le variabili, visualizzo solo i "bottoni di scelta" del label, ma senza nessun contenuto.
    Risolto usando la echo :O

  8. #8
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    http://php.net/manual/it/function.echo.php
    Oppure, con la forma contratta, <?=$row['Domanda']?>

    Nota che non hai bisogno di una seconda query per recuperare questi dati, puoi farlo già con la prima.

  9. #9
    Ok ho finito tutto, l'unica cosa che non funziona è che il contatore delle risposte esatte non si incrementa, e non trovo la funzione di inserimento data odierna, CURDATE() non funziona.Posto la parte del codice interessata:





    if(isset($_POST['radio']) && isset($_POST['radio2']) && isset($_POST['radio3'])){
    $count =0;
    $scelta = $_POST['radio'];
    echo $scelta , $row['Risposta_esatta'];
    $scelta2 = $_POST['radio2'];
    echo $scelta2 , $row2['Risposta_esatta'];
    $scelta3 = $_POST['radio3'];
    echo $scelta3 , $row['Risposta_esatta'];


    if( $scelta === $row['Risposta_esatta'])
    $count = $count + 1;
    if( $scelta2 === $row2['Risposta_esatta'])
    $count = $count + 1;
    if( $scelta3 === $row3['Risposta_esatta'])
    $count = $count + 1;

    $query = " INSERT INTO prove_effettuate(date,id_studente,id_materia,rispo ste_esatte) VALUES ( '"CURDATE()"' , '".$id."' , '".$idmateria."' , '".$count."')";
    echo $query;
    }
    else
    {
    echo" Compila tutte le risposte";
    }

    So che non è stilisticamente perfetto ma ho premura di consegnare, e funziona tutto tranne i due problemi sopra elencati.
    Le echo di prova restituiscono i valori corretti e perfettamente uguali ma le condizioni if non sono dello stesso avviso! ho provato sia con == che con ===
    e resta il problema della data

  10. #10
    Quote Originariamente inviata da Giuseppephp Visualizza il messaggio
    CURDATE() non funziona
    Questo l'ho risolto con una vostra guida usando:
    $tmsp = strtotime("now");
    $date = date('d m Y',$tmsp);

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 © 2025 vBulletin Solutions, Inc. All rights reserved.