Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555

    Sottrarre due variabili

    Salve ragazzi,
    il problema è questo. Ho un form, con una disponibilità di biglietti. Il form permette di acquistare fino a 5 biglietti per singolo utente. Ecco quel che vorrei fare. Fare in modo che quando la disponibilità raggiunge zero non sia più possibile acquistare. Ossia, sottrarre dal totale biglietti disponibili la quantità acquistata da singolo utente.

    Sin qui nessun problema, faccio così:

    Codice PHP:
    $newdisponibilita $disponibilita $numero;

    include(
    "config.php");
    mysql_connect($db_host,$db_user,$db_password,$db_name) or die ("non riesco a connettermi");
    mysql_select_db("$db_name") or die ("Non riesco a selezionare il database");

    mysql_query("UPDATE eventi SET disponibilita = '".$newdisponibilita."'") or die(mysql_error());
    ?> 
    come vedete poi faccio una query che mi aggiorna il numero di biglietti a disposizione. Ma che accade? che l'operazione prosegue anche sotto lo zero, ossia inizia a darmi numeri negativi. Se ho 0 biglietti e ne acquisto 5 mi viene -5 la nuovadisponibilità. Ecco, vorrei che il tutto si bloccasse a zero, senza andare al di sotto. Come posso fare?

  2. #2
    io metterei una check constraint sul campo "disponibilita" della tabella "eventi":

    codice:
    ALTER TABLE eventi ADD CONSTRAINT chk_positive_disp CHECK (disponibilita >= 0);

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Perdonami ma non ho ben capito. Che fa questa query e in che punto andrebbe inserita?

  4. #4
    Originariamente inviato da marckhh
    Perdonami ma non ho ben capito. Che fa questa query e in che punto andrebbe inserita?
    http://en.wikipedia.org/wiki/Check_Constraint

    considera che non tutti i DB la supportano. Verifica nella documentazione del tuo DB.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Non c'è un modo più semplice, tipo un controllo if sulla variabile nuovadisponibilita?

    Dirgli che se nuovadisponibilita è minore del numero di biglietti che si intende acquistare, l'acquisto non è disponibile. Una sorta di controllo come sui form. Non è fattibile?

  6. #6
    Originariamente inviato da marckhh
    Non c'è un modo più semplice, tipo un controllo if sulla variabile nuovadisponibilita?

    Dirgli che se nuovadisponibilita è minore del numero di biglietti che si intende acquistare, l'acquisto non è disponibile. Una sorta di controllo come sui form. Non è fattibile?
    La soluzione più semplice e definitiva è proprio quella d'aggiungere la check constraint che t'ho indicato.

    Se invece preferisci via php: bloccare, direttamente od indirettamente, la tabella "eventi", leggere il campo "disponibilita" ed effettuare l'update solo se è positivo, quindi sbloccare la tabella, sei liberissimo di farlo.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    555
    Cosa intendi per bloccare e sbloccare?
    Potresti farmi un esempio in php?

  8. #8

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.