Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    31

    query database e blocco utente

    CIao!
    Mi servirebbe una mano con questo codice..

    Codice PHP:
     //  devo verificare che ci siano almeno 12 ore di tempo per l'inizio del tour, altrimenti devo avvisare che è necessario contattare direttamente l'azienda per avere la conferma della prenotazione. 
    #int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst])
                      
    $oggi=date("Y-m-d-H-i-s",time());
                      
    $pezzididata=explode("-"$oggi);
                      
    $anno=$pezzididata[0];
                      
    $mese=$pezzididata[1];
                      
    $giorno=$pezzididata[2];
                      
    $ore=$pezzididata[3];
                      
    $minuti=$pezzididata[4];
                      
    $secondi=$pezzididata[5];

                      
    $domani=mktime($ore+12$minuti$secondi$mese$giorno$anno);

                      
    $pezzididata=explode("-"$data_tour);
                      if (
    $_SESSION['lang']=="it"){
                        
    $anno=$pezzididata[2];
                        
    $mese=$pezzididata[1];
                        
    $giorno=$pezzididata[0];
                      }
                     
                      else{
                        
    $anno=$pezzididata[0];
                        
    $mese=$pezzididata[1];
                        
    $giorno=$pezzididata[2];
                  }        
                      
    $pezzidiorario=explode("."$ora_tour);
                      
    $ore=$pezzidiorario[0];
                      
    $minuti=$pezzidiorario[1];
                      
    $inizio_tour=mktime($ore$minuti0$mese$giorno$anno);
                      
                      
    $qualcunoHaPrenotato false;
                      
    $tipo_prenotazione $mat_tour["$i"]["id"];
                      
    // questa variabile verrà usata nella pagina reserv_wrtesql.php
                      // per decidere il tipo di prenotazione effettuata
                      
    $_SESSION['tipo_prenotazione'] = $mat_tour["$i"]["id"];
                      
                      
    $connessione mysql_connect($host$user$pwd) or die("Connessione non riuscita: " mysql_error());
                      
    $lastst mysql_select_db ('DB');
                      
    $data_tour $anno."-".$mese."-".$giorno;
                      
    $query "select from prenotazioni where tipo_preonotazione='".$tipo_prenotazione."' and (mattina='".$data_tour."' or pomeriggio='".$data_tour."')";
                      
    $result mysql_query($query);
                      
    $num_rows mysql_num_rows($result);
                      if (
    $num_rows>0
                              
    $qualcunoHaPrenotato true;
                      
    mysql_free_result($result);
                                          
                        
    # blocco se la data corrente è a meno di dodici ore dall'inizio del tour
                      
    if ($domani>$inizio_tour && !$qualcunoHaPrenotato)
                      {
                            
    $_SESSION['error2'].=$err_4_2s;
                            
    header("location: ".$dominio."reserv2.php");
                            exit;
                        }        
            } 
    in pratica, se un utente prenota un tour, se troppo vicino al suo inizio ( meno di dodici ore )
    l'utente dev'essere boccato; se il tour è però già stato prenotato da qualcun altro ( query al DB )
    allora l'utente può continuare.


    Io faccio la query che controlli se ci sono tour prenotati per quel giorno ( mattina o pomeriggio )
    in caso positivo ( $qualcunoHaPrenotato) l'utente può andare avanti, altrimenti no...
    Però non funziona!
    Cosa sbaglio?
    Grazie.

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prova a fare una echo della query per vedere cosa sbagli

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    31
    l'echo risponde questo...

    Codice PHP:
    select from prenotazioni where tipo_preonotazione='t1' and (mattina='2010-10-21' or pomeriggio='2010-10-21'
    dunque mi pare giusto poichè io ho selezionato quel giorno li...
    però poi se provo a prenotare un tour già prenotato a meno di dodici ore il codice mi blocca lo stesso mentre invece dovrebbe farmi continuare, perchè trova nel db una data ed tour uguale...

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    $query = "select * from prenotazioni where tipo_preonotazione='".$tipo_prenotazione."' and (mattina='".$data_tour."' or pomeriggio='".$data_tour."')";

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    31
    nada...non funziona comunque

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    31
    BOOOOOOOOOOOOOOOOOOOOM !!!!!!!!!!!!!!!!



    funziona!!!!!

    era un banale errore di digitazione ( tipo_preonotazione invece che tipo_prenotazione )

    Grazie mille dell'aiuto sei stao genitlissimo!!!!

  7. #7
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    prova ad eseguire la query sul db per vedere se ti tira su qualche dato

  8. #8
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    ecco risolto

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    31


    dimenticavo un pezzo...

    praticamente il sito ha due lingue...italiano ed inglese...

    con relativo scambio delle date... ( YYYY-mm-dd ) in inglese ( dd-mm-YYYY ) in italiano.
    Ecco, l'INSERT nel DB viene fatto solo in inglese, quindi anche se uno prenota nel sito italiano poi la data nel DB viene scritta nel formato ( YYYY-mm-dd ).

    Però nella pagina, al momento del controllo la data è in formato mm-dd-YYYY, quindi in sostanza il controllo non funziona se uno prova dal sito italiano, perchè la data che uno sceglie, anche se la stessa, oggi per esempio, differisce per fomato dalla data scritta nel DB !

    Io scelgo 15-10-2010, ma il controllo lo effettua su una data scritto 2010-10-15...
    Come faccio a 'girare' la data italiana per permettergli di fare il controllo sul db?
    La cosa che comlica è che dovrei girarla solo momentaneamente, giusto per fagli fare il controllo.
    è possibile?

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    31
    funziona...semplicemente avevo commentato questa riga...

    Codice PHP:

                      $data_tour 
    $anno."-".$mese."-".$giorno

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 © 2024 vBulletin Solutions, Inc. All rights reserved.