Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    15

    Problema con delle stringhe di codice php

    Salve e auguri a tutti quanti,
    Sono un utente nuovo del forum e, purtroppo, è da più di un giorno che non so dove battere la testa con una parte di codice che non preleva i dati dal mio database, anzi, mi stampa delle righe di errore.. Dunque mi rivolgo a voi per vedere di migliorare la mia abilità nel programmare.

    Come ogni volta che mi blocco sarà una cosa banale, ma non riesco davvero ad andarre avanti.
    Per precisare il codice riguarda un gioco online che sto creando. Di seguito è postato il codice, dopo il controllo della sessione dell' utente.

    Codice PHP:
    if($Nome!=""// se il nome è diverso da "".
    {
    $select=mysql_fetch_array(mysql_query("SELECT * FROM UTENTI WHERE Nome='$Nome'")); // prelevo i dati dalla tabella utenti dove il nome è uguale a quello della sessione.
    if($select[Bannato]=="0"){ // se l' utente non è bannato allora il codice ha inizio.
    $gilda=mysql_fetch_array(mysql_query("select * from GILDE where ID='$ID'")); // seleziono tutto dalla tabella gilde dove l' identificativo è uguale a quello con cui si è aperta la pagina; es. .php?ID=1
    $query=mysql_query("select * from CARICHE where ID_Gilda='$ID' ORDER by Grado"); // seleziono tutto dalla tabella cariche di gilda dove l' identificativo è sempre uguale a quello con cui si è aperta la pagina.
    if($Tipologia=="0"){ $dato="Mestiere"; } elseif($Tipologia=="1"){ $dato="Gilda"; } // se la tipologia è 0 si parla di Mestiere, se è 1 si parla di Gilda.
    $query2=mysql_query("select * from UTENTI where $dato='$gilda[Nome]'"); // appunto per questo seleziono tutti gli utenti che hanno stesso mestiere o gilda.
    $membri=mysql_num_rows($query2); // in queste ultime 3 righe, secondo l' errore stampato, dovrebbe esserci l' errore.
    while($exp=mysql_fetch_array($query2)){
    $exptot=$exptot+$exp[exp];

    Il resto del codice continua ma non sembra essere fonte di errore, da quel che ho capito potrebbe esser $dato a dare problemi ma è essenziale per la cosa che devo fare.

    Ringrazio in anticipo chi riesce a darmi qualche dritta, nonostante la giornata festiva.

    Distinti saluti!

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    sarebbe comodo sapere qual è l'errore

    comunque, tanto per cominciare, inserisci in ogni query la segnalazione di errore. Almeno hai una base di partenza per il debug

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    15
    Allora, gli errori che mi stampa sono:

    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource (line 27)
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource (line 28)

    rispettivamente la terzultima e la penultima riga che ho postato

    EDIT: ho provato ad inserire:

    or die ("Query non valida")

    in entrambe le query, e mi stampa query non valida 2, ossia riferendosi alla query2, quella a riga 26 per intenderci

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova a scrivere così
    Codice PHP:
    $query2=mysql_query("select * from UTENTI where ".$dato."='$gilda[Nome]'"
    Se non funziona, cosa molto probabile, dovresti provare a fare il debug sulle query per capire cosa chiedi esattamente al DB. Una cosa di questo tipo

    Codice PHP:
    $query2="select * from UTENTI where  "$dato"='$gilda[Nome]'";

    $esegui_query2 mysql_query($query2) or die ("La query
    $query2 ."
    non è riuscita: "
    .mysql_error()); 
    prova un po'

    EDIT: attenzione che ho cambiato il nome alla variabile che esegue la query... quindi dovrai cambiarlo anche dopo...

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Forse è sbagliata la query:
    $query2=mysql_query("select * from UTENTI where $dato='$gilda[Nome]'");

    vedi come viene scritta, prova così:
    Codice PHP:
    $query2_txt "select * from UTENTI where $dato='$gilda[Nome]'";
    echo 
    $query2_txt//vedi questo cosa ti stampa.
    $query2 mysql_query($query2_txt); 

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    15
    Grazie mille del supporto.

    Ho provato nel primo modo ma non cambia il problema;
    Nel secondo metodo invece mi stampa: Parse error: syntax error, unexpected '='


  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    15
    Scusate il doppio post, ma ora ho provato anche nel modo consigliato da Alhazred per "scovare" il problema.

    Come pensavo pure io, il problema dovrebbe risiedere su $dato, infatti mi stampa questo:

    select * from UTENTI where ='Gilda di prova'

    Abbiamo fatto un passo avanti

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    uhm... il primo metodo qual è?

    perché io te ne ho scritto due simili, poi ha risposto anche Alhazred.

    Comunque è solo un errore di sintassi, magari manca qualche ";" o apice...

  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sostituendo $query2_txt così?
    Codice PHP:
    $query2_txt "select * from UTENTI where ".$dato."='".$gilda[Nome]."'"

  10. #10
    Codice PHP:
    if($Nome!=""// se il nome è diverso da "".
    {
        
    $select=mysql_fetch_array(mysql_query("SELECT * FROM UTENTI WHERE Nome='$Nome'"));
        if(
    $select[Bannato]=="0") {
            
    $gilda=mysql_fetch_array(mysql_query("select * from GILDE where ID='$ID'"));
            
    $query=mysql_query("select * from CARICHE where ID_Gilda='$ID' ORDER by Grado");
            if(
    $Tipologia=="0") {
                
    $dato="Mestiere";
            } elseif(
    $Tipologia=="1") {
                
    $dato="Gilda";
            }
            
    $query2=mysql_query("select * from UTENTI where $dato='$gilda[Nome]'");
            
    $membri=mysql_num_rows($query2);
            while(
    $exp=mysql_fetch_array($query2)) {
                
    $exptot=$exptot+$exp[exp];
            }
        } 
    // questa lo aggiunta io
    // anche questa 

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.