Visualizzazione dei risultati da 1 a 8 su 8

Discussione: query php

  1. #1

    query php

    Qualcuno mi puo spiegare il perche' facendo un'interrogazione in php al mio db in mysql e ordinando i risultati secondo un'ordine diverso ottengo un campo in meno?
    Sottolineo che sto memorizzando i risultati della mia query tramite l'istruzione mysql_fetch_array..

    Forse non sto considerando qualcosa d importante?


  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Un po' di codice per capire? (poco però, non ci postare tutta la pagina php :P)

  3. #3
    codice:
    <?php
    		
    		$queryPartenza = "SELECT nome_Aeroporto, nome_Compagnia, codice_Volo, ora_Inizio, ora_Fine, frequenza FROM Voli WHERE partenza_arrivo = 'p' AND CURDATE() BETWEEN inizio_Servizio AND fine_Servizio  ORDER BY ora_Inizio";
    		$response = mysql_query($queryPartenza);
    	
    		if(!$response){
    			die ("Query non riuscita : " . mysql_error());
    		}
    	
    		$array = mysql_fetch_array($response);
    		$weekdayQuery = mysql_query("SELECT WEEKDAY(CURDATE())");
    		$weekday = mysql_fetch_row($weekdayQuery);
    		
    	?>
    		
    	
    	
    	
    	<?php 
    		while($array = mysql_fetch_array($response)){
    		
    			if(($array['frequenza']{$weekday{0}})!= '-'){
    				
    				
    		?>	
    		 	 <tr bgcolor="Gray">
    		 		<td><?php echo $array['nome_Compagnia']."
    "; ?></td>
    		 		<td><?php echo $array['nome_Aeroporto']."
    "; ?></td>
    		 		<td><?php echo $array['codice_Volo']."
    "; ?></td>
    		 		<td><?php echo $array['ora_Inizio']."
    "; ?></td>
    		 		<td><?php echo $array['ora_Fine']."
    "; ?></td>
    		 		<td><?php echo statoVoli($array['ora_Inizio'])."
    "; ?></td> 
    			 </tr> 
    		 <?php	 
    			}
    		}
    	?>

    Se al posto di ORDER BY ora_Inizio metto ORDER BY nome_Aeroporto allora ottengo la stessa query eseguita dal prompt di mysql altrimenti sembra che il primo campo me lo salta e non capisco perche?

  4. #4
    Forse sono riuscito a risolvere la cosa anche se non ho capito il perche'.

    Ho provato a togliere la riga (subito dopo la select.. ) $array = mysql_fetch_array e lasciarla solo nel while ed ora ottengo la query completa a video.

    Ora come mai invocando due volte quella riga m salta un campo?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Un errore concettuale c'è
    Questa istruzione
    $array = mysql_fetch_array($response);

    La esegui due volte
    Una volta sopra e una nella while
    In questo modo è ovvio che il primo elemento viene saltato
    Prova ad eliminare la prima

  6. #6
    come mai dovrebbe saltare la riga?

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Non è che salta la riga... è che tu fai due letture di seguito, quindi il primo record non lo elabori

    Facciamo un esempio banale
    Tabella
    id - descrizione
    1 - valore1
    2 - valore2
    3 - valore3

    Il tuo modo
    Codice PHP:
    $sql "SELECT * FROM Tabella";
    $risultato mysql_query($sql)
    $riga mysql_fetch_assoc($risultato)
    while (
    $riga mysql_fetch_assoc($risultato))
      echo 
    $riga["descrizione"]."
    "

    Produrrà

    valore2
    valore3

    Poichè la prima esecuzione di $riga = mysql_fetch_assoc non viene seguita dall'echo e la variabile $riga viene subito rivalorizzata con il record successivo dalla fetch della while

    Il modo corretto è invece
    Codice PHP:
    $sql "SELECT * FROM Tabella";
    $risultato mysql_query($sql)
    while (
    $riga mysql_fetch_assoc($risultato))
      echo 
    $riga["descrizione"]."
    "

    Che produrrà
    Valore1
    Valore2
    Valore3

  8. #8
    OK PERFETTO! DUBBIO CHIARITO! SEI UN GRANDE ! GRAZIE!

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.