Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    estrarre risultato stored function

    Ciao ciao,
    seguivo la guida presa proprio qui su html.it

    per il codice:
    http://database.html.it/guide/lezion...lberghiere-ii/

    non ho capito benissimo il funzionamento.
    a me occorre gestire le prenotazioni e verificare la disponibilità camere attraverso una pagina php .. ma come estraggo i risultati delle stored function? come si richiama la funzione? come gestisco il tutto attraverso php?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    SE ti serve sapere solo se la stanza è disponibile in quyel periodo ,
    ti crei due tabelle una stanze e un'altra prenotazione

    esempio:

    tabella stanze
    id - camera

    Qui metterai tutte le stanze che possiede il tuo albergo

    tabella prenotazione
    id - camera - data_arrivo - data_partenza

    Qui andrai ad inserire via via le prenotazioni

    Poi ti crei una query

    select * from stanze WHERE NOT EXISTS (SELECT * FROM prenotazione WHERE prenotazione.camera = stanze.camera AND (prenotazione.data_arrivo < '$data_partenza_cliente' and '$data_arrivo_cliente' < prenotazione.data_partenza);

    e come risultato avrai tutte le stanze disponibili in quel periodo

  3. #3
    si grazie!

    ma per vedere se la stanza è già prenotata in un certo periodo di tempo?
    e se non è prenotata .. come faccio a prenotarla?

    grazie mille.

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    Per primo devi fare un controllo sulle stanze libere
    con la query che ti avevo scritto prima

    Codice PHP:
    select from stanze WHERE NOT EXISTS (SELECT FROM prenotazione WHERE prenotazione.camera stanze.camera AND (prenotazione.data_arrivo '$data_partenza_cliente' and '$data_arrivo_cliente' prenotazione.data_partenza); 
    poi un' inserimento nella tabella prenotazioni della stanza che vuoi prenotare con la relativa data_arrivo e data_partenza

  5. #5
    ok .. grazie .. ho capito.

    però ho un problema ... se eseguo questa query attraverso phpmyadmin:


    LOCK TABLES camere c READ, prenotazioni p READ,
    supplementi READ, prezzi READ, clienti WRITE,
    prenotazioni WRITE, supplementi_prenotati WRITE;
    SET @inizioPeriodo = '2006-06-03';
    SET @finePeriodo = '2006-06-10';
    SELECT c.* FROM camere c
    WHERE tipo = 'matrimoniale'
    AND NOT EXISTS
    (SELECT * FROM prenotazioni p WHERE p.camera = c.numero
    AND (p.periodoDal < @finePeriodo and @inizioPeriodo < p.periodoAl)
    );


    ottengo come risultato tutte le camere "matrimoniale" libere in quel periodo scelto.

    se eseguo la stessa query in php invece non mi da nulla.

    Ecco quello che scrivo in php:


    /* Connect to the MySQL server */
    $link = @mysql_connect ($dbserver, $dbuser, $dbpassword);
    if (! $link){
    echo ( "Unable to connect to db" );
    exit();
    }

    /* Select the database */
    if (!mysql_select_db ($db, $link) ) {
    exit ();
    }

    $query = "LOCK TABLES camere c READ, prenotazioni p READ,
    supplementi READ, prezzi READ, clienti WRITE,
    prenotazioni WRITE, supplementi_prenotati WRITE;
    SET @inizioPeriodo = '2006-06-03';
    SET @finePeriodo = '2006-06-10';
    SELECT c.* FROM camere c
    WHERE tipo = 'matrimoniale'
    AND NOT EXISTS
    (SELECT * FROM prenotazioni p WHERE p.camera = c.numero
    AND (p.periodoDal < @finePeriodo and @inizioPeriodo < p.periodoAl)
    );
    ";

    $sql = mysql_query ( $query );
    if ( $sql ) {
    $camere = array();
    while ( $result = mysql_fetch_array ( $sql ) ) {

    //* Extract the variables we want from the row
    $camera['numero'] = $result['numero'];
    $camera['piano'] = $result['piano'];
    $camera['tipo'] = $result['tipo'];
    $camera['lettiAggiunti'] = $result['lettiAggiunti'];
    $camera['optionals'] = $result['optionals'];

    // Add to the $clienti array
    $camere[] = $camera;
    }
    }

    //STAMPO IL RISULTATO
    if( is_array ($camere)){ /*LA RISPOSTA E' UN ARRAY*/
    $count = 0;
    while ( list ( $key, $val ) = each ( $camere ) ) {
    echo ( $camere[$count]['piano']).' - ';
    echo ( $camere[$count]['numero']).' - ';
    echo ( $camere[$count]['tipo']).' - ';
    echo ( $camere[$count]['lettiAggiunti']).' - ';
    echo ( $camere[$count]['optionals']."</br>" );
    $count++;
    }
    }



    dove sbaglio?
    la query in php come la devo scrivere?

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    Questa è semplice senza il tipo di camera

    Database composto:

    Tabella Camere
    id - numero_camera

    Tabella prenota
    id - numero_camera - data_arrivo - data_partenza

    Codice PHP:
    $query="SELECT * FROM camere WHERE NOT EXISTS (SELECT * FROM prenota WHERE camere.numero_camera = prenota.numero_camera  AND prenota.data_arrivo<='2006-06-10' AND prenota.data_partenza>='2006-06-03')";
            
    $res=mysql_query($query);
            while(
    $row=mysql_fetch_row($res))
            {
            
    $aa=$row[1]; ///NUMERO CAMERA.
    echo $aa;

    Poi nella query puoi mettere tante altre accortezze se singola o matrimoniale con aria condizionata - pay tv e tante altre cose che però dovrai sempre specificare anche nei database
    Poi al posto di LOCK TABLES ti consiglio di usare BEGIN, COMMIT E ROLLBACK

  7. #7
    "la voce" grazie mille per l'aiuto.

    Cmq seguendo questo tutorial:
    http://database.html.it/guide/lezion...lberghiere-ii/

    vorrei capire il funzionamento delle variabili nella query che ti avevo scritto precedentemente.
    te la riscrivo:


    LOCK TABLES camere c READ, prenotazioni p READ,
    supplementi READ, prezzi READ, clienti WRITE,
    prenotazioni WRITE, supplementi_prenotati WRITE;
    SET @inizioPeriodo = '2006-06-03';
    SET @finePeriodo = '2006-06-10';
    SELECT c.* FROM camere c
    WHERE tipo = 'matrimoniale'
    AND NOT EXISTS
    (SELECT * FROM prenotazioni p WHERE p.camera = c.numero
    AND (p.periodoDal < @finePeriodo and @inizioPeriodo < p.periodoAl)
    );


    allora .. @inizioPeriodo e @finePeriodo ... da php possono essere utilizzate?
    cerco di capire perchè questa query se lanciata da php non funziona.

    (le tabelle del db le puoi trovare alla pagina 29 dello stesso tutorial e cmq l'indirizzo è questo:
    http://database.html.it/guide/lezion...alberghiere-i/ )

    grazie mille per l'aiuto.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    ma la mia query ti funziona?
    Hai detto che quella query se lanciata da php non funziona, che errore ti da?

    Cmq quella query la dovresti scrivere così

    Codice PHP:
    LOCK TABLES camere READprenotazioni READ,
    supplementi READprezzi READclienti WRITE,
    prenotazioni WRITEsupplementi_prenotati WRITE;
    $inizioPeriodo '2006-06-03';
    $finePeriodo '2006-06-10';

    SELECT FROM camere 
    WHERE tipo 
    'matrimoniale'
    AND NOT EXISTS
    (SELECT FROM prenotazioni WHERE prenotazioni.camera camere.numero
    AND (prenotazioni.periodoDal '$finePeriodo' and  prenotazioni.periodoAl>'$inizioPeriodo')
    ); 
    e in un ciclo while otterrai il risultato

  9. #9
    grazie .. forse ho capito !!

    ho fatto così e funziona:

    Codice PHP:
    $inizioPeriodo "2006-05-03";
    $finePeriodo "2006-06-04";

    $query1 "LOCK TABLES camere c READ, prenotazioni p READ,
               supplementi READ, prezzi READ, clienti WRITE,
               prenotazioni WRITE, supplementi_prenotati WRITE "
    ;
    $query2 "SELECT c.* FROM camere c
                 WHERE tipo = 'matrimoniale' AND NOT EXISTS
                 (SELECT * FROM prenotazioni p WHERE p.camera = c.numero
                 AND (p.periodoDal < '
    $finePeriodo' and '$inizioPeriodo' < p.periodoAl))";

    $sql mysql_query $query1 );
    $sql mysql_query $query2 );

    if ( 
    $sql ) {
         
    $camere = array();
         while ( 
    $result mysql_fetch_array $sql ) ) {
              
    $camera['numero'] = $result['numero'];
              
    $camera['piano'] = $result['piano'];
              
    $camera['tipo'] = $result['tipo'];
              
    $camera['lettiAggiunti'] = $result['lettiAggiunti'];
              
    $camera['optionals'] = $result['optionals'];

              
    $camere[] = $camera;
         }

    così dentro $camere[] ho il risultato.

    Ora ho un altro problema ... sempre con quelle maledette variabili MySQL ...

    Da questa query:

    SELECT prezzo('$inizioPeriodo','$finePeriodo','$tipo_came ra') +
    (SELECT SUM(prezzo * DATEDIFF('$finePeriodo','$inizioPeriodo'))
    FROM supplementi WHERE codice IN (1,5))
    INTO @prezzoTotale";

    Come faccio ad estrarre il valore di @prezzoTotale?
    ho provato a fare:

    $query1 = "SELECT prezzo('$inizioPeriodo','$finePeriodo','$tipo_came ra') +
    (SELECT SUM(prezzo * DATEDIFF('$finePeriodo','$inizioPeriodo'))
    FROM supplementi WHERE codice IN (1,5))
    INTO @prezzoTotale";

    $query2 = "SELECT @prezzoTotale";

    $sql = mysql_query ( $query );
    $sql2 = mysql_query ( $query2 );
    $prezzoTotale = mysql_fetch_array($sql2);
    print_r($prezzoTotale);


    ma mi stampa questo:

    Array ( [0] => [@prezzoTotale] => )


    cosa mi consigli???

    cmq ... grazie mille !

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    non capisco

    Codice PHP:
    $query2 "SELECT @prezzoTotale"
    cmq prova a fare

    Codice PHP:
    echo $query1
    e vedi cosa ti dice

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