Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    77

    aggiornare campo tabella tramite altra tabella

    ciao a tutti.
    Devo aggiornare un campo di una tabella camere1 ( id-stato) con il dato contenuto in
    un'altra tabella stato_pren (numero_camera-data_arrivo-data_partenza-stato)
    In pratica se la data odierna e' compresa o uguale alla data_arrivo e data_partenza il valore del campo stato della tabella camere1 deve assumere lo stesso valore del campo stato della tabella stato_pren.

    Ho fatto una query:
    <?php
    mysql_select_db($database_camere, $camere);
    $query_Recordset4 = "SELECT * FROM stato_pren,camere1 WHERE stato_pren.data_arrivo>='date' AND stato_pren.data_partenza<='date'";
    $Recordset4 = mysql_query($query_Recordset4, $camere) or die(mysql_error());
    $row_Recordset4 = mysql_fetch_assoc($Recordset4);
    $totalRows_Recordset4 = mysql_num_rows($Recordset4);
    ?>

    Dopo di che richiamo la query

    <?php if ($query_Recordset4 = true) {
    $updateSQL="UPDATE camere1 SET stato ='stato_pren.stato' WHERE stato_pren.numero_camere='camere1.id'";
    mysql_select_db($database_camere, $camere);
    $Result1 = mysql_query($updateSQL, $camere) or die(mysql_error());
    ?>

    Ma non ne vuole sapere di andare
    avete quache idea?

  2. #2
    http://dev.mysql.com/doc/refman/5.0/en/update.html

    codice:
     
    $updateSQL = "UPDATE camere1, stato_pren 
    SET camere1.stato = stato_pren.stato 
    WHERE stato_pren.numero_camere = camere1.id ";
    ho guardato solo il tuo update.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    77
    Ok l'update lo fa alla perfezione,pero' quando passo alla visualizzazione mi pone lo stato del primo record uguale x tutti
    supponiamo che la data arrivo e partenza del primo record soddisfano la query , se inserisco il secondo record con la data arrivo e partenza che non soddisfano la query me lo fa vedere con lo stesso stato del 1° record,ma non dovrebbe essere così xchè?

  4. #4
    aggiungi il controllo della data nella query UPDATE...
    codice:
    $updateSQL = "UPDATE camere1, stato_pren 
    SET camere1.stato = stato_pren.stato 
    WHERE stato_pren.numero_camere = camere1.id 
    AND '$date' BETWEEN stato_pren.data_arrivo AND stato_pren.data_partenza ";

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    77
    grazie funge.
    l'update era stato inserito in un campo area ripetuta e quindi pensavo che l'avrebbe fatto ma in realta non era così.
    grazie x l'aiuto

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    77
    perche' non esegue l'else?

    $date=date("Y-m-d");
    if (($row_Recordset4 ['data_arrivo']<=$date) && ($row_Recordset4 ['data_partenza']>=$date)){
    $updateSQL = sprintf("UPDATE camere1, stato_pren SET camere1.stato = stato_pren.stato WHERE stato_pren.numero_camere = camere1.id AND '$date' BETWEEN stato_pren.data_arrivo AND stato_pren.data_partenza ");
    mysql_select_db($database_camere, $camere);
    $Result1 = mysql_query($updateSQL, $camere) or die(mysql_error());
    }
    else { $updateSQL = sprintf("UPDATE camere1 SET camere1.stato = 'Y'");
    mysql_select_db($database_camere, $camere);
    $Result1 = mysql_query($updateSQL, $camere) or die(mysql_error());
    }
    ?>

  7. #7
    se fai una comparazione di date in php dovresti usare un UNIX TIMESTAMP.

    Pero' mi pare che se estrai il record secondo il criterio di data between ecc.... gia' la scelta del record sia stata fatta.

    poi selezioni il db nella IF e quindi nell'else sei sicuro di averlo selezionato?

    In altre parole bisognerebbe valutare anche quello che fai prima.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    77
    ciao c'e' un piccolo preblema sull'update che mi avevi detto

    $updateSQL = sprintf("UPDATE camere1, stato_pren SET camere1.stato = stato_pren.stato WHERE stato_pren.numero_camere = camere1.id AND '$date' BETWEEN stato_pren.data_arrivo AND stato_pren.data_partenza ");


    che poi ho inserito

    $date=date("Y-m-d");
    if (($row_Recordset4 ['data_arrivo']<=$date) && ($row_Recordset4 ['data_partenza']>=$date)){
    $updateSQL = sprintf("UPDATE camere1, stato_pren SET camere1.stato = stato_pren.stato WHERE stato_pren.numero_camere = camere1.id AND '$date' BETWEEN stato_pren.data_arrivo AND stato_pren.data_partenza ");
    mysql_select_db($database_camere, $camere);
    $Result1 = mysql_query($updateSQL, $camere) or die(mysql_error());
    }
    ?>

    Pero' funziona solo se nel database c'e' inserito come 1° record una camera con data_arrivo bassa cioè se inserisco prima una camera dal 18 al 20 e poi una camera dal 14 al 17 ed una terza dal 14 al 22 non va mentre se metto il contrario esegue tutto

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    77
    ariciao

    ho risolto in questo modo

    $date=date("Y-m-d");
    $updateSQL = sprintf("UPDATE camere1, stato_pren SET camere1.stato = stato_pren.stato WHERE stato_pren.numero_camere = camere1.id AND '$date' BETWEEN stato_pren.data_arrivo AND stato_pren.data_partenza ");
    mysql_select_db($database_camere, $camere);
    $Result1 = mysql_query($updateSQL, $camere) or die(mysql_error());
    }
    ?>

    praticamente ho tolto la riga

    if (($row_Recordset4 ['data_arrivo']<=$date) && ($row_Recordset4 ['data_partenza']>=$date)){

    inoltre ho aggiunto prima di $date=date("Y-m-d");

    {
    $updateSQL = sprintf("UPDATE camere1 SET camere1.stato = 'Y'");
    mysql_select_db($database_camere, $camere);
    $Result1 = mysql_query($updateSQL, $camere) or die(mysql_error());
    }

    In questo modo mi setta prima tutto a Y poi in base alla data arrivo se soddisfatta cambia lo stato .
    Da acuna prove fatte sembra che vada continuero' a testarlo
    ciao

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.