Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    42

    Creare un trigger da PHP??

    Ciao ragazzi,
    dovrei risolvere un problemino:
    il requisito prima che venga confermata una prenotazione e quindi inserita la prenotazione di un film nella tabella prenotazioni, un trigger deve verificare disponibilità del credito nella tabella utenti che sia > 0,2 euro.
    Io l'ho scritta così però non sò se da PHP si possono generare trigger e se non si può come faccio passare a Mysql la variabile dell'utente corrente???
    Codice PHP:
    <?php
    include("dbconnect.php");
     
    if (
    $_POST['submit'] == "PRENOTA")

    {   
        
    $_SESSION['trigger'] ="CREATE TRIGGER scala_credito
                               AFTER INSERT ON prenotazioni
                               SET utenti.credito = utenti.credito - 0.2 
                               WHERE utenti.User=\""
    .$_POST['user']."\" ";
        
        
    mysql_db_query($_SESSION['trigger']) or die (mysql_error());
        
        
    $_SESSION['query'] = " insert into prenotazioni (UserID,IdFilm,NumPosti)
                                  values(\""
    .$_POST['user']."\",\"".$_POST['scelta']."\",\"".$_POST['posti']."\") ";
        
    mysql_query($_SESSION['query']) or die (mysql_error());
        
        
    $_SESSION['elimina_trigger'] = "DROP TRIGGER [cinema.] scala_credito";
        
    mysql_query($_SESSION['elimina_trigger']) or die (mysql_error());
        
        echo 
    "   <html><style type='text/css'>
                 <!--
                    body {
                            background-color: #FFFF00;
                         }
                  -->
                  </style>
                         <body>
                         </body>
                  
                  </html>
             "
    ;    
        echo 
    " <h2>Prenotazione eseguita correttamente!! </h2>";             

    }
    else
    {
     echo 
    "Errore inserimento valori, prego ripetere";
    }


    ?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    42
    ...dimenticavo...

    dopo aver verificato la disponibilità deve anche scalare il credito di 0,2......

  3. #3

    Re: Creare un trigger da PHP??

    Originariamente inviato da alby.82
    Ciao ragazzi,
    dovrei risolvere un problemino:
    il requisito prima che venga confermata una prenotazione e quindi inserita la prenotazione di un film nella tabella prenotazioni, un trigger deve verificare disponibilità del credito nella tabella utenti che sia > 0,2 euro.
    Io l'ho scritta così però non sò se da PHP si possono generare trigger e se non si può come faccio passare a Mysql la variabile dell'utente corrente???
    Ho l'impressione che stai confondendo i Triggers con le stored procedure.
    Non ha molto senso infatti creare/distruggere triggers in questa maniera. Tanto più che per gestirli devi assegnare a Php privilegi tali da renderlo assolutamente pericoloso.
    Semplicemente i triggers non hanno bisogno di essere chiamati per attivarsi, si attivano autonomamente al verificarsi della condizione che hai predefinito. Nel caso sopra AFTER INSERT di un record in prenotazioni.
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    42
    quindi non va fatto da PHP ma direttamente da Mysql quando creo il database....ma come faccio a creare un trigger generico che mi controlli il credito di un utente se l'ID utente lo ricevo solo al momento del login e della prenotazione del film????

    Cioè posso fare:

    CREATE TRIGGER scala_credito BEFORE INSERT ON prenotazioni
    FOR EACH ROW
    BEGIN
    IF Utenti.credito >=0.2 THEN
    SET Utenti.credito=Utenti.credito - 0.2

    END;

    Come faccio a selezionare però solo l'utente che sta per prenotare??

  5. #5
    Uno spunto, comunque leggiti la documentazione del manuale sui triggers.

    Codice PHP:
    CREATE TRIGGER scala_credito_trg BEFORE INSERT 
        ON prenotazioni
        
    FOR EACH ROW
    BEGIN
        UPDATE Utenti SET 
            credito 
    = IF (credito >=0.2,credito 0.2,credito)
        
    WHERE 
            utenti_id 
    = NEW.utente_fk
    END 
    Qualunque imbecille può inventare e imporre tasse. (Maffeo Pantaleoni)

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.