Visualizzazione risultati 1 fino 22 di 22

Discussione: [php e mysql] utilizzare variabile presa dal db

  1. #1
    Guest

    Predefinito [php e mysql] utilizzare variabile presa dal db

    buona sera , facendo una pagina sul mio sito mi sono servite delle variabili che dovevo prendere dalla tabella del db , facendo questo ho fatto un ciclo while che stampa il contenuto della tabella ' tabella ' , con tutti i vari campi , in questo caso $fetch['prova'] però poi ho notato che questa variabile è valida solo nel ciclo , se io volessi usare questa variabile fuori dal ciclo come dovrei fare ? grazie a chi mi saprà risp

  2. #2
    palla000 non è connesso Utente attivo
    Data registrazione
    12-07-2008
    Residenza
    trieste
    Messaggi
    278

    Predefinito

    mmm metti il codice
    cmq basta ke fai un altra variabile tipo
    $riga = mysql_fetch_array($query) senza fare il while

  3. #3
    Guest

    Predefinito

    rapidissimo D: grazie ora provo .. EDIT : non funziona .. EDIT o meglio qualcosa si muove :D anche se non fa quello che volevo fare ,, sulla tabella ho dato un campo livello , e se un utente ha un determinato livello e vede una determinata pagina con un if , ma non funziona
    Ultima modifica di babilonia6 : 05-03-2009 alle ore 00.09.57

  4. #4
    L'avatar di seneca
    seneca non è connesso Super Moderatore
    Data registrazione
    18-12-2004
    Residenza
    la Città Eterna
    Messaggi
    8,376

    Predefinito

    Posta il codice che usi, spiegando bene cosa vuoi ottenere.


    -- Aut Roma Aut Nihil!

  5. #5
    Guest

    Predefinito

    ok
    Codice PHP:
    <?php
    $sql
    = mysql_query("SELECT utente,data,livello FROM tabella ORDER BY utente ASC");
    while((
    $fetch = mysql_fetch_array($sql)) ) {
    echo
    "<a href=\"opzioni.php?page=profili&action=".$fetch['utente']."\">".$fetch['utente']."</a>" ;
    echo
    " registrato il ";
    echo
    $fetch['data'] ;

    if(
    $fetch['livello']=="0") $liv="livello0";
    elseif(
    $fetch['livello']=="1") $liv="livello1";
    elseif(
    $fetch['livello']=="2") $liv="livello2";
    elseif(
    $fetch['livello']=="3") $liv="livello3";
    echo
    " &nbsp;".$fetch['utente']." &egrave; ".$liv."<br />";
    }
    ?>
    questo stampa i ' dati ' . Bene fatto questo poi ad esempio faccio
    Codice PHP:
    if($fetch['livello']=="3"){ //una determinata pagina// } else{ //un'altra pagina// }
    così non funziona , da sempre la seconda pagina , quella dell'else
    Ultima modifica di babilonia6 : 05-03-2009 alle ore 00.44.41

  6. #6
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Sintatticamente ti dovrebbe bastare scrivere $fetch; oppure $fetch = null; prima del ciclo while: in questo modo, la variabile resterà definita anche dopo il termine del ciclo.

    Piuttosto mi preoccuperei di un'altra cosa: terminato il ciclo, sei sicuro che l'eventuale valore di $fetch sia ancora valido e utilizzabile? E a quale utente si riferisce?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  7. #7
    Guest

    Predefinito

    Sostituisci i vari if per il livello con

    Codice:
    $liv="livello".$fetch['livello'];
    fa la stessa cosa ed è più pulito! Ciao
    Ultima modifica di jaleko : 05-03-2009 alle ore 18.54.49

  8. #8
    Guest

    Predefinito

    dunque per i $liv è fatto così , se livello = 0 , 0 = utente , 1= moderatore ecc :D , per dementialsite , non ne sono sicuro anzi , sono sicuro che non funzionerebbe , per far si che $fetch abbia un valore e sia ancora utilizzabile cosa dovrei fare ? :D grazie

  9. #9
    Guest

    Predefinito

    Prova a mettere

    Codice:
    echo $fetch['utente'].' '.$fetch['altro'];
    dopo il while e controlla se i valori sono corretti!
    Ultima modifica di jaleko : 05-03-2009 alle ore 18.55.01

  10. #10
    Guest

    Predefinito

    non riesco proprio .. potreste farmi un esempio funzionante basato sul codice che ho postato ? grazie P.S. il problema è sempre lo stesso , ovvero la variabile è valida solo nel ciclo , al di fuori del ciclo no

  11. #11
    Guest

    Predefinito

    Codice:
    <?php
    $i = 0;
    
    while($i < 10)
    {
    	$i++;
    }
    echo $i;
    ?>
    All'uscita del ciclo $i vale 10 come deve essere!

    Hai provato a inserire echo $fetch['utente']; dopo il ciclo? cosa scrive? il valore è corretto?
    Ultima modifica di jaleko : 05-03-2009 alle ore 18.23.18

  12. #12
    Guest

    Predefinito

    jaleko, sei pregato di usare gli appositi tag quando posti del codice, soprattutto se quest'ultimo è di una lunghezza interessante.


    ciao!

  13. #13
    Guest

    Predefinito

    se metto echo , non da niente xD , quella lista stampa tutti gli utenti registrati , se lo metto fuori dal while non stampa niente

  14. #14
    palla000 non è connesso Utente attivo
    Data registrazione
    12-07-2008
    Residenza
    trieste
    Messaggi
    278

    Predefinito

    devi fare
    if($fetch['livello'] == 0)
    senza le virgolette x lo zero

  15. #15
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Rimettiamo in ordine un po' le idee:
    - inizializzare la variabile $fetch prima del ciclo, come ti ho spiegato sopra, non è sufficiente. Il motivo? Dopo l'ultima esecuzione del ciclo viene rieseguito il test all'inizio, mysql_fetch_array restituisce un valore non valido (e lo assegna a $fetch) e salta alle fasi successive. Il valore nullo a $fetch è ormai stato assegnato, e quindi non è più utilizzabile come facevi nel ciclo.
    - da ciò consegue che devi utilizzare un'altra variabile (chiamiamola $user), che sia inizializzata prima del ciclo e reimpostata al suo interno in quale modo. Quello che non è chiaro è la logica che sta dietro a questa reimpostazione: con quali criteri selezioni l'utente in modo da eseguire il reindirizzamento che cerchi di fare, visto che non è escluso che la query te ne possa restituire più di uno?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  16. #16
    Guest

    Predefinito

    corretto anche questo , anche se il problema è un altro , grazie comunque ( per palla ) EDIT . $liv al momento è inutile quindi lo tolgo , poi per il livello, sulla tabella ogni utente ha un campo ' livello ' i livelli vanno da 0 a 3 ( di default 0 ) 0= utente , poi volevo fare in modo che se il livello è 1 o 2 o 3 mostra alcune pagine che ai livelli 0 invece non mostra
    Ultima modifica di babilonia6 : 05-03-2009 alle ore 18.44.14

  17. #17
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da babilonia6 Visualizza messaggio
    ... poi volevo fare in modo che se il livello è 1 o 2 o 3 mostra alcune pagine che ai livelli 0 invece non mostra
    Ripeto qui: il livello di quale degli utenti che ti restituisce la query deve provocare questo?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  18. #18
    Guest

    Predefinito

    si si quello che restituisce la query :D

  19. #19
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da babilonia6 Visualizza messaggio
    si si quello che restituisce la query :D
    Ripeto per l'ultima volta: la query che hai scritto, per come è costruita e analizzata, può restituirti più utenti.

    Di quali utenti devi visualizzare le informazioni aggiuntive? Di tutti o di uno solo? E in quest'ultimo caso, sotto quali criteri va selezionato (ha il livello più alto, il nome utente particolare, o cos'altro)?

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  20. #20
    Guest

    Predefinito

    di tutti di tutti , l'intenzione era quella di stampare gli utenti :

    $fetch['utente'] registrato il $fetch['data'] il livello di $fetch['utente'] è $fetch['livello']
    PER tutti gli utenti
    poi da la , dato che verificavo il livello , volevo riutilizzare questa variabile per fare quell' if di cui ho parlato

  21. #21
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da babilonia6 Visualizza messaggio
    di tutti di tutti , l'intenzione era quella di stampare gli utenti :

    $fetch['utente'] registrato il $fetch['data'] il livello di $fetch['utente'] è $fetch['livello']
    PER tutti gli utenti
    poi da la , dato che verificavo il livello , volevo riutilizzare questa variabile per fare quell' if di cui ho parlato
    Allora questa cosa devi farla DENTRO al ciclo, non puoi farla fuori... finché la variabile $fetch non viene riassegnata (leggi: l'iterazione del ciclo finisce), puoi riutlizzarla come ti pare, anche per fare dei semplici test...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  22. #22
    Guest

    Predefinito

    farla nel ciclo è praticamente impossibile nel mio caso , verrebbe troppo complicato, comunque ho provato a fare un'altra query a parte , fatta apposta per il livello , ma nemmeno quella funzona , non so più che fare .. EDIT: scusate per ' estrarre ' una variabile dal database , in questo caso $livello e utilizzarla
    Codice PHP:
    $livello= mysql_query("SELECT livello FROM registrazione");
    giustamente non basta , dopo cosa dovrei mettere di preciso ?
    Ultima modifica di babilonia6 : 08-03-2009 alle ore 20.36.23

Regole di scrittura

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