Somma su punti con controllo vip

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti...
Ho un problema da cui non riesco a venirne fuori... Io ho due tabelle : Punti e Fidelity, Nella tabella Fidelity vengono registrati i dati dell'utente, compreso barcode e il dato vip (boolean 1=si 0 =no).
Fin qui tutto ok, riesco tranquillamente a inserire i dati nel DB con i dovuti controlli.
Il problema sorge quando deve inserire dei punti a questo cliente.

Ho una pagina di provenienza dove viene digitato il barcode della tessera, controllo se esiste e lo porto alla pagina di inserimento.
Nella pagina di inserimento compilo il piccolo form che lo contiene.Anche fin qui tutto ok.
Il problema nasce ora.... Io devo fare in modo che nel momento in cui premo "aggiungi punti" devo controllare nella tabella Fidelity se vip = 1, se cosi fosse aggiungere i punti compresi di decimali, nel caso opposto invece se vip = 0 devo togliere i decimali dei punti ed inserirli .
La parte che toglie i decimali l'ho fatta ed è perfettamente funzionate, mentre la parte di controllo vip non mi riesce... posto il codice :

PHP:
<?php
session_start();
include('connect.php');
$Barcode=trim(htmlspecialchars($_POST['Barcode']));
$dataacquisto=trim(htmlspecialchars($_POST['dataacquisto']));
$dataITA="$dataacquisto";
$convert=explode('/',$dataITA);
$dataUSA=$convert[2]."-".$convert[1]."-".$convert[0];
$importo=trim(htmlspecialchars($_POST['importo'])); $numeroscnt=trim(htmlspecialchars($_POST['numeroscnt']));$punti=trim(htmlspecialchars($_POST['punti']));
//$punti=floor($punti);
$mail=trim(htmlspecialchars($_POST['mail']));
$sql = "SELECT * FROM fidelity WHERE barcode='$Barcode'";
$rows=mysql_fetch_array($sql);
if('vip' == '1')
{
	$query = "INSERT INTO fidelitypoint ( id,barcode,dataacquisto,importoscnt,numeroscnt,punti) 
VALUES (NULL, '$Barcode','$dataUSA','$importo', '$numeroscnt', '$punti')";

if (@mysql_query($query)) {
	echo ' <body bgcolor="#000000"> <p align="center"><table cellspacing=5 cellpadding=5 align="center">
<tr>
<td colspan="2">
<img src="images/logo.png" align="middle" />
</td>
</tr>
<tr>
<td colspan="2">
<font size="+3" color="#FFFFFF">Punti inseriti correttamente!</font>
</td>
</tr>
</p>
</table>
</body>';
 } else {
 exit('<p> Errore inserimento punti: ' . mysql_error() . '</p>');
}
} else {
	$punti=floor($punti);
	$query1 = "INSERT INTO fidelitypoint ( id,barcode,dataacquisto,importoscnt,numeroscnt,punti) 
VALUES (NULL, '$Barcode','$dataUSA','$importo', '$numeroscnt', '$punti')";

if (@mysql_query($query1)) {
	echo ' <body bgcolor="#000000"> <p align="center"><table cellspacing=5 cellpadding=5 align="center">
<tr>
<td colspan="2">
<img src="images/logo.png" align="middle" />
</td>
</tr>
<tr>
<td colspan="2">
<font size="+3" color="#FFFFFF">Punti inseriti correttamente!</font>
</td>
</tr>
</p>
</table>
</body>';
 } else {
 exit('<p> Errore inserimento punti: ' . mysql_error() . '</p>');
}
}
	 ?>
</body>
</html>

Sapete aiutarmi per favore?
Ah un ultima cosa, il barcode viene passato in sessione dalla prima schermata, poi nel form dopo come variabile.

Inserisco anche le varie parti prima del controllo vip.

Controllo barcode:

PHP:
<?php
session_start();
//CONNESSIONE AL DATABASE
include('connect.php');
//RECUPERA DATI DAL FORM
$mail = $_POST['mail'];
$mail = addslashes(htmlspecialchars(($_POST['mail'])));
$Barcode = $_POST['Barcode'];
$Barcode = addslashes(htmlspecialchars(($_POST['Barcode'])));
if($Barcode =="" ){
	
	
	if($mail==""){
		?>
    <script>
        alert('Il campo mail deve essere riempito!');
        location.href='puntifidelity.htm';
    </script>
    <?php
	}else{
	 if((!isset($_POST['mail'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['mail'])))
			{
            echo "Attenzione, formato email non valido.";
            //ritorno al form
            }else{
			$ctrl_mail = @mysql_query("SELECT * FROM fidelity            WHERE mail='$mail'") or die (mysql_error());
                   if(@mysql_num_rows($ctrl_mail)>0)
                   {
			       $_SESSION['mail'] = $mail;
				 ?>
    <script>
        location.href='fidelitypoint.php';
    </script>
    <?php
                   }else{
					   ?>
    <script>
        alert('Email non trovata');
        location.href='puntifidelity.htm';
    </script>
    <?php
				   }
	             }
		}
		}else{
			$ctrl_barcode = @mysql_query("SELECT * FROM fidelity WHERE barcode='$Barcode'") or die (mysql_error());
                if(@mysql_num_rows($ctrl_barcode)>0)
                {
			    $_SESSION['barcode'] = $Barcode;
				 ?>
    <script>
        location.href='fidelitypoint.php';
    </script>
    <?php
                }else{
					  ?>
    <script>
        alert('Barcode non trovato');
        location.href='puntifidelity.htm';
    </script>
    <?php
				   }
}
?>

Nel caso sia presente form di isnerimento e calcolo automatico dei punti :

PHP:
<?php
session_start();
include('connect.php');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inserimento punti</title>
<style type="text/css">
body {
	font: Eras MediUM ITC;
	color:#FFF;
	background-color: #000;
}
</style>
<style type="text/css">
#main {
	width:672px;
	height:300px;
	position:absolute;
	top:30%;
	left:50%;
	margin:-150px 0 0 -336px;
	color: #000;
}
.testo {
	color: #FFF;
}
</style>
</head>

<body bgcolor="#000000">
<div id="main">
<form action="aggiungi_punti.php" method="post" name="inserisci"> 
<table cellspacing=5 cellpadding=5 align="center">
<tr>
<td colspan="2" bgcolor="#000000">
<img src="images/logo.png" align="middle" />
</td>
</tr>
<tr>
<td class="testo">
Inserisci punti a BARCODE :
</td> 
<td>
<input name="bcode" type="text" id="bcode" readonly="readonly" value="
<?php
echo $_SESSION[barcode];
?> 
">
</td>
</tr>
<tr>
<td class="testo">
Inserisci punti a EMAIL:
</td> 
<td>
<input name="email" type="text" id="email" readonly="readonly" value="
<?php 
echo $_SESSION[mail];
?> 
">
</td>
</tr>
<tr>
<td class="testo">
Data Acquisto:
</td>
<td class="testo">
    <input name="dataacquisto" type="text" id="dataacquisto" value=""> 
</td>
</tr>
<tr>
<td class="testo">
Importo Scontrino:
</td>
<td class="testo">	
<input type="text"  name="importo" onKeyUp="vendita()" value="" id="importo" size=35/>
</td>
</tr>
<tr>
<td class="testo">
Numero Scontrino:
</td>
<td class="testo">
   <input name="numeroscnt" type="text" id="numeroscnt" value=""> 
</td>
</tr>
<tr>
<td class="testo">
Punti
</td>
<td class="testo">
<input type="text" readonly value="0" name="punti" id="punti" size=35/>
</td>
</tr> 
<tr>
<td class="testo">	
<input name="mail" type="hidden" value="<?php echo $_SESSION[mail]; ?>">
<input name="barcode" type="hidden" value="<?php echo $_SESSION[barcode]; ?>">
<input name="sottrazione" type="hidden" onKeyUp="vendita()" id="sottrazione" value="20">
</td>
</tr>
<tr>
<td colspan="2" class="testo">
    <input name="inserisci" type="submit" id="inserisci" value="Inserisci"> 
</td>
</tr>
</table>
</form> 
</div>
<script type="text/javascript">
function vendita() {
    var importo = 0.0+document.getElementById('importo').value;
    var sottrazione = 0.0+document.getElementById('sottrazione').value;
    if (importo <= 0 || sottrazione <= 0){
        document.getElementById('Vendita').value = "--";
    }else{
        //var ven = parseInt((acq * 100) / ric);
        //var numero = (acq * ric) / 100;
        var numeroivato = (importo / sottrazione);
        var punti = numeroivato.toFixed(2);
        document.getElementById('punti').value = punti;
    }
}
</script>
</body>
</html>

Grazie a tutti per le eventuali risposte.
 
stai confrontando due stringhe : sarà sempre false
forse volevi scrivere
PHP:
if($row['vip'] == 1)

mamma che disattenzione.... scusa la stupidaggine... Dopo provo ma credo che sia sicuramente per quello che non funziona.... Ti sembra esatto il resto del codice?
 
Ho un altro problema.... Non riesco a capire come posso fare per fare la somma dei punti di ogni barcode.... Nel senso... Se io voglio sapere i punti della card numero 1234567890123 come faccio???
 
mi sembra di aver capito che non fai un vero aggiornamento ma inserisci ogni volta una riga
forse era megli se impostavi il tutto per fare un UPDATE dei punti comunque protresti usare questa semplice query

Codice:
SELECT sum(punti) as somma_punti FROM fidelitypoint WHERE barcode = "1234567890123";
 
ora la provo.... Ma una domanda... Somma punti è un campo fittizio vero?
 

Discussioni simili