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

    Errore di esposizione dati

    Ciao a tutti... premetto che sono un novellino con il php e mysql quindi verosimilmente avrò scritto male il mio script, ma mi succede una cosa stranissima:
    in pratica faccio una query al db per estrarre un singolo dato da un record una cosa tipo...

    Codice PHP:
    for($i 0$i 7$i++){
        
    $res mysql_query('SELECT voto FROM lezioni WHERE studente = '.$Classe[$i]);
        
    $Voti[$i] = $res;
            
        
    $res1 mysql_query('SELECT nickname FROM studenti WHERE id = '.$Classe[$i]);
        
    $Nomi[$i] = $res1;

    Come vedete vorrei riempire due array con i dati ottenuti (ovviamente le ho prima dichiarate normalmente ), però nella pagina viene stampata una cosa assurda:

    studente1: Resource id #6 - Resource id #5
    studente2: Resource id #8 - Resource id #7
    studente3: Resource id #10 - Resource id #9
    studente4: Resource id #12 - Resource id #11
    studente5: Resource id #14 - Resource id #13
    studente6: Resource id #16 - Resource id #15
    studente7: Resource id #18 - Resource id #17


    Secondo voi dove sbaglio? Sempre che si possa capire da quello che vi ho riportato.
    n.b: $Classe[] è un'altra array riempita precedentemente e perfettamente funzionante dato che faccio un print di tutti i suoi elementi e il loro contenuto è esatto!

    Vi prego aiutatemi!

  2. #2
    Come non detto... ho risolto da solo... popolavo male l'array, posto cmq il codice che ho usato così se qualcuno vuole mi mette una soluzione migliore:

    Codice PHP:
    $Voti = array();
    $Nomi = array();

    for(
    $i 0$i 8$i++){
        
    $res mysql_query('SELECT voto FROM lezioni WHERE studente = '.$Classe[$i]);
        
    $temp mysql_fetch_array($res);
        
    $Voti[$i] = $temp[0];
            
        
    $res1 mysql_query('SELECT nickname FROM studenti WHERE id = '.$Classe[$i]);
        
    $temp mysql_fetch_array($res1);
        
    $Nomi[$i] = $temp[0];


  3. #3
    hai trovato da solo la soluzione... ricordati che l'array generato dalla funzione mysql_fetch_array() lo puoi chiamare, oltre che per posizione (e io non lo sapevo, l'ho scoperto leggendo questo tuo post!), anche x chiave "nome", dove il nome di ogni singola "cella" altro non è che il nome della colonna del db...
    Però forse in questo caso, visto che devi copiare (perchè copiarlo, non ti basta quello che hai già?? ) va benissimo la tua soluzione =)
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  4. #4
    Originariamente inviato da iraiscoming223
    perchè copiarlo, non ti basta quello che hai già??
    In che senso?
    Il mio problema è che non so se l'array dove deposito i dati che ho chiamato Temp sposta l'indice ... cioè.. detto terra terra... non è che se non uso le altre arrey poi mi ritrovo alla fine del For con un'array temp contenente un solo elemento ossia l'ultimo estratto dalla query? Non si rischia di sovrascrivere sempre il valore su Temp[0]? :master:

  5. #5
    non so se ho capito quello che mi chiedi ma provo a risponderti comunque (se non ho capito nulla mandami pure al diavolo )
    L'array creato dalla funzione mysql_fetch_array() è un array pieno di informazioni derivanti, appunto, da qualche query mysql.. Una volta creato lo usi e lo gestisci come tutti gli altri array...
    Vuoi estrarre tutti i valori dall'array perchè magari hai più righe? Puoi usare un while per estrapolare il tutto:
    Codice PHP:
    // Supponiamo la tabella ha due righe (e le recupero entrambe)
    // e le colonne che si chiamano id, nome, cognome, telefono
    while($array1 mysql_fetch_array($qualchequery))
    {
    echo 
    "ID: " $array1['id'];
    echo 
    "\nNome: " $array['nome'];
    echo 
    "\nCognome: " $array1['cognome'];
    echo 
    "\nTelefono: " $array1['telefono'];
    echo 
    "
    "
    ;

    Supponendo, come ho scritto, che la tabella abbia due righe, il codice nel while viene eseguito due volte, uno per ogni riga, appunto...

    questo era quello che chiedevi? (posto che ho usato un while al posto del for)
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

  6. #6
    mmm... non so se ho capito bene... cmq proverò ad applicare la cosa al mio caso e vediamo se funzia. In ogni caso, facendo così dovrei risparmiare risorse no?! Cioè implemento un'array in meno quindi il tutto gira più velocemente... almeno credo.
    Grazie cmq

  7. #7
    si è esatto. Ovvio che su script di piccoli dimensioni nemmeno ti accorgerai della differenza... Però a livello di logica funziona così.
    E poi se proprio vuoi fare il "pignolo" sull'efficienza e l'utilizzo di memoria, quando non ti servono più i dati di una query puoi utilizzare mysql_free_result() o mysql_clean_results() (o qualcosa del genere, purtroppo ora non riesco a controllare la funzione)
    Questa e' la mia firma! Lo so, e' una mezza schifezza.
    Un sito
    - skype non è per consulenze online -

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.