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

    Problemi con query, risultato sempre vero

    Ho due tabelle Azienda e promoAzienda: nella prima ci sono salvati i dati inerenti alle aziende, nella seconda le promozioni attive di ogni azienda. Come chiave condivisa utilizzo l'id dell'azienda, che viene salvata anche nella tabella promoAzienda con nome id_az.
    Quando però cerco di recuperare le promozioni attive per ogni azienda , la query mi restituisce sempre un risultato vero anche quando non ce ne sono.
    Posto il codice:
    html:
    Codice PHP:
    <?php

        $promo 
    = new promoBusinessClass();
        
    $business = new businessClass(); 
        
        
    $connection->connessioneMysql('root''''localhost''administration');    
        
        
    $bList $business->businessList(); // recupero la lista delle aziende
        
    ?>
    <!DOCTYPE unspecified PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <body>
        <div>
          [url="PromoBusiness/new.php"] Nuova promozione [/url]
            <div>
            <?php 
                
    if($bList !== false)
                {
                    while(
    $record=mysql_fetch_array($bList))
                    {
            
    ?>
                


                <div id="promo">
                    <div id="azienda"><?php echo $record['rag_soc'];?></div>
                    <div id="elencoPromo">
                        <?php 
                        $promoList 
    ='';
                            
    $promoList $promo->promoBusinessList($record['id']);
                            if(
    $promoList !== false)
                            {
                                while(
    $record2=mysql_fetch_array($promoList))
                                {
                        
    ?>
                                <div id="titoloPromo">[b]<?php echo $record2['titolo'];?>[/b]</div>
                                <div id="descPromo"><?php echo $record2['descrizione'];?></div>
                                <div id="button">[url="PromoBusiness/modify.php?id=<?php echo $record2['id'];?>"]Modifica[/url]   -    [url=""]Elimina[/url]</div>
                        <?php    
                                
    }
                            }
                            else 
                                    echo 
    "Nessuna promozione presente";
                        
    ?>
                    </div>
                </div>
            <?php 
                    
    }
                }
                else 
                    echo 
    "Nessuna azienda inserita ";
            
    ?>
          
           
                  
            </div>
       
           
        </div>    
        
    </body>
    </html>

    la classe
    codice:
    <?php
    
    class promoBusinessClass	{
    	
    	public function promoBusinessList($idBusiness){
    		
    		$sql="SELECT * FROM promoAzienda WHERE id_az='".$idBusiness."'"; 
    		$result=mysql_query($sql);
    		if($result !== false)
    			return $result;
    		else 	
    			return false;
    	}
    	
    	public function getPromoBusinessById($id){
    		
    		$sql="SELECT * FROM promoAzienda WHERE id='".$id."'"; 
    		$result=mysql_query($sql);
    		if($result !== false)
    			return $result;
    		else
    			return false;
    	}
    }
    Le due query evidenziate mi ritornano sempre un valore 'TRUE' anche quando dovrebbe essere 'FALSE'

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    bhè, il trovare 0 righe è pur sempre aver portato a termine con successo la query... forse devi verificare che il numero di righe estratte sia maggiore di 0 per decidere se ci sono promozioni o no. Il risultato mi sa che è falso solo se la query non va a buon fine (ovvero, FALSE on error)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Chiami la funzione businessList(), ma nella classe che hai postato non c'è.

    L'id delle aziende è un intero? Se si, togli gli apici attorno alla clausola WHERE

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,508
    Originariamente inviato da Andrea1979
    bhè, il trovare 0 righe è pur sempre aver portato a termine con successo la query... forse devi verificare che il numero di righe estratte sia maggiore di 0 per decidere se ci sono promozioni o no. Il risultato mi sa che è falso solo se la query non va a buon fine
    Vero.

  5. #5
    Funziona, ho inserito un controllo con il mysql_num_rows e adesso è tutto ok. Dunque in qualsiasi query di ricerca devo controllare il numero effettivo di righe ? e la query ritorna false solo in caso di errore?
    Grazie per le risposte

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.