Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    245

    [if] non capisco perchè!

    anche oggi sono già esausto su cose che sembrano ridicole .
    parliamo di un semplice confronto :
    codice:
    $cosae='BRONZO';							$testlvl=0;
    							$testlvl=ifsilver($userid);
    							if ($testlvl>0);
    							{
    								$cosae='ARGENTO';
    							}
    							$testlvl=ifgold($userid);
    							if ($testlvl>0);
    							{
    								$cosae='ORO';
    							}
    							echo "cosa ".$cosae." test :".$testlvl;exit();
    come vedete stampo $cosae che è sempre = ORO mentre $testlvl = 0 ..
    questa la funzione ifgold :
    codice:
    $ent = "SELECT ut_gold from utenti WHERE ut_id =".$cod;     $rslt = $conn->query($ent); 
    	 if ( $rslt->rowCount() > 0 )
    	  {
    		foreach ($rslt as $row):
    	       if (is_null($row[0])) 
    		   {
    			   return 0;
    		   }
    		   else
    		   {
    		   return $row[0];
    		   }
    	    endforeach;
    	  }
    ditemi qualcosa perchè impazzisco....

    Ovviamente la funzione ifgold, come ifsilver, funzionano regolarmente e tornano o 0 e il codice trovato....

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    A parte il risultato che non è quello che ti aspetti, ma secondo me proprio la logica del codice è sbagliata.
    Codice PHP:
    $cosae='BRONZO';

    $testlvl=0;

    // metti che questa ti dice > 0 e quindi è ARGENTO
    $testlvl=ifsilver($userid);
    if (
    $testlvl>0);
    {
        
    $cosae='ARGENTO';
    }

    // testi comunque anche questa, metti che ti dice > 0, quindi è ORO
    $testlvl=ifgold($userid);
    if (
    $testlvl>0);
    {
        
    $cosae='ORO';
    }

    // qui ti stampa ORO, ARGENTO te lo sei perso
    echo "cosa ".$cosae." test :".$testlvl;
    exit(); 
    Anche se non può essere sia ORO che ARGENTO, comunque io invece di 2 if metterei un if/else if, perché in tal caso se fosse ARGENTO ed è impossibile che sia anche ORO è inutule eseguire il test ifgold(), è solo uno spreco di tempo per eseguire un'operazione di cui già sai l'esito.

    Comunque intanto prova a mettere dentro gli if
    echo 'argento: ' . $testlvl . '<br>';
    echo 'oro: ' . $testlvl;

    per vedere se entra nell'if e il valore ritornato dalla funzione.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2016
    Messaggi
    245
    grazie.
    si certo la riga prima era piu complessa l'ho messa appositamente cosi per capire dove falliva.
    entra sempre nella ultima if (gold) non c'è verso....ho cambiato i tipi da numerici a booleani a stringhe....sempre li passa....

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Sì, ma se ti si dice di mettere degli echo per vedere cosa stampa poi dillo anche a noi, perché se lo sai solo tu noi non ti possiamo aiutare.

    Altra prova, dopo
    $testlvl=ifsilver($userid);
    e
    $testlvl=ifgold($userid);

    metti
    var_dump($testlvl);

    cosa dice?

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Perche non fai una funzione che ti torni il metallo ?

    alla fin fine hai una sola riga.

    echo "cosa ".metallo($userid);
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.