Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: problema query

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107

    problema query

    Salve ,

    codice:
    $prova = mysql_query("SELECT count(*),Postazione,Giorni,Mesi,Ora_In FROM `prenotazione`"); 						
    
    while ($result = mysql_fetch_array($prova) ) {							
       $id=$result[0];	
       for($i=1;$i<=$id;$i++){	
             operazioni di confronto 
        }
    }
    i valori che vado a selezionare sono più di uno nella tabella il problema è che quando faccio i confronti,con i dati che vengono inviati attraverso un form html, questi avvengono solo con l'ultimo dato presente nella tabella e non con tutte

  2. #2
    Utente di HTML.it L'avatar di mrseo88
    Registrato dal
    Jan 2012
    residenza
    Italia
    Messaggi
    75
    Codice PHP:
    $prova mysql_query("SELECT Postazione,Giorni,Mesi,Ora_In
    FROM`prenotazione`"
    );     
                          
    while (
    $result mysql_fetch_array($prova) ) {                                              

    operazioni di confronto

     


  3. #3
    Codice PHP:

    $prova 
    mysql_query("SELECT Postazione,Giorni,Mesi,Ora_In FROM `prenotazione`");                         

    $record=array();
    $all=array();
    while (
    $result mysql_fetch_array($prova) ) {                            
       
    $record['Postazione']=$result['Postazione'];
       
    $record['Giorni']=$result['Giorni'];
       
    $record['Mesi']=$result['Mesi'];
       
    $record['Ora_In']=$result['Ora_In'];
       
    $all[]=$record;    
    }

    //in questo modo hai l'array $all che contiene degli array con tutti i parametri che vuoi

    $j=count($all);

    for(
    $i=0$i $j$i++)

    {
       
    //fai quello che vuoi

    prova così, l'ho scritta al volo posso essermi sbagliato..

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    grazie per la risposta, il for l'avevo messo perchè pensavo mi aiutasse a fare quello che devo.. ma in realtà con o senza non funziona..

    e non riesco a capire.. quello che devo fare è confrontare i dati che sono nel db con quelli che l'utente invia tramite form , se i dati sono uguali a quelli presenti ok non ho problemi. Il mio problema è che nel form l'utente mi invia delle fasce orarie del tipo 09:00-12:00 (che sono rese note all'utente tramite query su un'altra tabella in cui sono memorizzate tutte quelle possibili) ed io devo controllare che questa non sia già presente oppure parzialmente presente (esempio 09:00-10:00) nel db e stampargli dei messaggi di avviso che saranno:

    se gli orari sono esattamente uguali -> occupata

    se gli orari sono parzialmente occuapti -> fino alle ore x è occupato

    questi orari si riferiscono a delle postazioni e a gg e mesi diversi.

    Per fare questi controlli faccio delle operazioni di sottrazione tra le varie parti delle fasce orarie presenti nel db e quelle inviate, almeno dovrei, ma appunto avviene solo con l'ultima memorizzata e non con tutte...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    purtroppo continuo ad avere problemi.. quello che ho fatto è :

    codice:
     
     // controllo se la postazione è occupata per orario e giorno scelti
       
    	$sql="SELECT Postazione,Giorni,Mesi,Ora_in,id_utente FROM `prenotazione`".
    	"where Postazione='$postazione' AND Giorni='$giorni'AND Mesi='$mesi' AND Ora_In='$orari' AND id_utente !=".$_SESSION['matricola']." ";
    
    	$check=mysql_query($sql,$conn_db) or die(mysql_error());
    
    	// Mysql_num_row conta le righe della tabella
    	$count=mysql_num_rows($check);
    	
    	if($count==1){ 		
    			
    		$prova = mysql_query("SELECT Postazione,Giorni,Mesi,Ora_In FROM `prenotazione`");                          
    
    		$record=array(); 
    		$all=array(); 
    		while ($result = mysql_fetch_array($prova) ) {                             
       			$record['Postazione']=$result['Postazione']; 
       			$record['Giorni']=$result['Giorni']; 
       			$record['Mesi']=$result['Mesi']; 
       			$record['Ora_In']=$result['Ora_In']; 
       			$all[]=$record;     
    		}	 
    		$j=count($all); 
    
    		for($i=0; $i = $j; $i++) {
    				 
    			$or_db=explode(" ",$result[0]."".$result[1]."/".$result[2]."".$result[3]);	
    			list(,$val)=each($or_db);		//lista fascia oraria presente nel db
    			$val=$result[3];
    		
    			$campi=explode(" " ,$orari);
    			list(,$valore)=each($campi);	//lista fascia oraria scelta dall'utente
    		
    		   $diff_entrata=($val[0].$val[1])-($valore[0].$valore[1]);
    			$diff_uscita=($val[6].$val[7])-($valore[6].$valore[7]); 
    					
    			$ora_1aparte=$valore[0].$valore[1];  //orario iniziale scelto dall'utente
    			$ora_2aparte=$valore[6].$valore[7];		//orario finale scelto dall'utente			
    			
    			$val_1aparte=$val[0].$val[1];	//orario iniziale presente nel db		
    			$val_2aparte=$val[6].$val[7];		//orario finale presente nel db
    	
    				
    	     if(($diff_entrata <='0') && ($diff_uscita>='0')){ 
    		  		//orario di ingresso e di uscita scelto in fascia oraria prenotata ->> dB: 09:00-13:00 utente: 09:00-12:00
    		  		$errore="la fascia oraria scelta è interna ad una già prenotata"." orario nel db ".$val_1aparte.":00 ".$val_2aparte.":00"." orario scelto dall'utente ".$ora_1aparte.":00 ".$ora_2aparte.":00";	
    				$_SESSION['errore']=$errore;	
    				header("location:postazione.php?scritta=".$errore);
    		  }
    		  if(($diff_entrata <='0') && ($diff_uscita<'0')){		//DB: 09:00-12:00 utente: 09:00-13:00
    				// se l'orario d'ingresso scelto è uguale a quello presente nel db ma quello di uscita è maggiore
    				
    				$errore="la postazione è libera dalle ".$val_2aparte;		
    				$_SESSION['errore']=$errore;	
    				header("location:postazione.php?scritta=".$errore);	
    		  }
    		  /*else {
    				$errore="la fascia oraria scelta è già stata prenotata"." orario nel db ".$val_1aparte.":00 ".$val_2aparte.":00"." orario scelto dall'utente ".$ora_1aparte.":00 ".$ora_2aparte.":00";	
    				$_SESSION['errore']=$errore;	
    				header("location:postazione.php?scritta=".$errore);		  
    		  }*/		  
    		}//chiudo il for	  
    	 	  						
    	}

  6. #6
    hai provato a costruire l'array di array come ho scritto io?

  7. #7
    Al momento non ho tempo per guardare il tuo codice mi spiace.. l'unico consiglio che posso darti è debuggare su questa parte, ovvero testando parte per parte se fa quello che realmente ti dice.. prova a commentare un pezzo alla volta ed eseguire solo alcune parti, fatti stampare gli array ecc.. dovresti venirne a capo così!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    Nel while le variabili vengono salvati correttamente, infatti stampando questi valori (al di fuori del while):

    codice:
    		// i valori nelle variabili vengono salvati correttamente $record['Giorni']; $record['Mesi']; $record['Ora_In'];
    	
    		$or_db=explode(" ",$record['Postazione']."".$record['Giorni']."/".$record['Mesi']."".$record['Ora_In']);	
    		list(,$val)=each($or_db);		//lista fascia oraria presente nel db
    		$val=$record['Ora_In']; // -> c'è l'ultima fascia oraria memorizzata nel db (esempio 09:00-12:00)
    		
    		$val_1aparte=$val[0].$val[1];	//orario iniziale presente nel db		-> correttamente viene memorizzato ad esempio 09
    		$val_2aparte=$val[6].$val[7];		//orario finale presente nel db  -> correttamente viene memorizzato ad esempio 12
    è tutto ok , il problema è che

    1: il for mi va in loop
    2: se riscrivoi il for :

    codice:
    for($i = 0, $size = $j; $i < $size; ++$i) {
    			
     $or_db=explode(" ",$record['Postazione']."".$record['Giorni']."/".$record['Mesi']."".$record['Ora_In']);	
    list(,$val)=each($or_db);		//lista fascia oraria presente nel db
    echo $val=$record['Ora_In']."
    "; // -> c'è l'ultima fascia oraria memorizzata nel db (esempio 09:00-12:00)
    non va in loop però mi prende solo l'ultimo valore presente nel db.. :S come mai??

  9. #9
    Nn puoi usa un foreach al posto del for?

  10. #10
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    107
    Ho risolto così:

    codice:
    for($i = 0, $size = sizeof($all); $i < $size; ++$i) {
    			
    			$ora=array($all[$i]['Ora_In']);
    			
    			echo $ora[0]."
    ";
    }
    però $ora contiene tutte le fasce orarie, come faccio a separarle e ad accedere alle singole?

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.