Prijzen check

Status
Niet open voor verdere reacties.
Ik zou het heel erg fijn vinden als een van jullie (jij ;)) dat kan doen... kben zelf even de richting kwijt... Ik snap het vaak wel als ik het lees... maar om het zo maken vind ik moeilijk...
 
PHP:
<?php
/* MySQL Config */
$link = mysql_connect('localhost', '{gebruiker}', '{password}') or die('Could not connect: ' . mysql_error());
mysql_select_db('jeugdmeeting_nl') or die('Could not select database');
/* End Config */

/* Check of formulier is verzonden */
if(isset($_POST['submit'])) {
  /* Foutmelding "buffer" */
  $errorMsg = array();
  /* eind buffer */

  //Controle(s) op naam
  if(empty($_POST['naam'])) {
    $errorMsg[] = 'U bent vergeten een naam in te vullen.';
  }
  // Controle(s) op postcode
  if(empty($_POST['postcode'])) { 
    $errorMsg[] = 'U bent vergeten een postcode op te geven.';
  }
  // Controle(s) op huisnummer
  if(empty($_POST['huisnummer'])) {
    $errorMsg[] = 'U bent vergeten een huisnummer op te geven.';
  } elseif(!is_numeric($huisnummer)) {
    $errorMsg[] = 'Het ingevoerde huisnummer is niet geldig.';
  }
  // Controle(s) op e-mail
  // Eerst controleren op foute tekens
  $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
  if(empty($email)) {
    $errorMsg[] = 'U bent vergeten een email adres op te geven';
  } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    // Email validatie uitgevoerd
    $errorMsg[] = 'Het door u ingevulde e-mailadres is ongeldig.';
  }
  // Controle(s) op code
  if(empty($_POST['code'])) {
    $errorMsg[] = 'U bent vergeten het lotnummer in te voeren.';
  } elseif(!is_numeric($code)) {
    $errorMsg[] = 'Het ingevoerde lotnummer is niet geldig.';
  }

  // Kijken of er fouten zijn
  if(count($errorMsg) > 0) {
    echo 'De volgende fouten zijn geconstateerd: <br /><br />';
    foreach($errorMsg AS $error) {
      echo $error .'<br />';
    }
  } else {
    // Kijken of er een prijs op het getal is gevallen
    $lotQuery = "SELECT lid, prijs FROM loten WHERE getal ='". $_POST['getal'] ."'";
    $lotResult = mysql_query($lotQuery) or die(mysql_error());
    if(mysql_num_rows($lotResult) > 0) {
      // Er is een prijs -> kijken of die prijs niet al is vergeven
      $lotRow = mysql_fetch_array($lotResult);
      $lid = $lotRow['lid'];
      $prijs = $lotRow['prijs'];
      $winnaarQuery = "SELECT prijs
                       FROM winnaars w
                       INNER JOIN loten l
                       ON w.lid=l.lid";
      $winnaarResult = mysql_query($winnaarQuery) or die(mysql_error());
      $winnaarRow = mysql_fetch_array($winnaarResult);
      if($winnaarRow['prijs'] != $prijs) {
        $insertQuery = "INSERT INTO winnaars (lid,naam,postcode,huisnummer,email) values ('$lid','".$_POST['naam']."','".$_POST['postcode']."','".$_POST['huisnummer']."','". $email ."')";  
        mysql_query($insertQuery) or die(mysql_error());
        echo 'Gefeliciteerd, u heeft de '. $prijs .'e prijs gewonnen.';
      } else {
        echo 'Helaas, iemand voor u heeft de '. $prijs .'e prijs al gewonnen.';
      }
    } else {
      echo 'Helaas, op uw getal is geen prijs gevallen.';
    }
  } else {
?>
<form action="" method="post">
Naam: <input type="text" name="naam" /><br />
Postcode: <input type="text" name="postcode" maxlength="7" /><br />
Huisnummer: <input type="text" name="huisnummer" maxlength="4" /><br />
E-mail: <input type="text" name="email" /><br />
Code: <input type="text" name="getal" /><br /><br />
<input type="submit" name="submit" value="Verstuur" />
</form>

<?php
}
?>
Volgens mij moet hij zo in ieder geval controleren op de velden. De rest heb ik nog niet uitgewerkt. Het handigst is om het stapje voor stapje te doen zodat je niet straks van allerlei foutmeldingen krijgt.
 
Laatst bewerkt:
ik krijg nu deze foutmelding:

Parse error: syntax error, unexpected T_ELSE in /customers/jeugdmeeting.nl/jeugdmeeting.nl/httpd.www/test/index.php on line 74

PS: ik zie dat de wachtwoorden e.d. nog in de tekst staan... zou je die er uit kunnen halen voordat iedereen ermee aan de haal gaat?

tnx
 
Ik was een haakje sluiten vergeten :o

Als het goed is moet dit script het beter doen. (Wel even de DB gegevens wijzigen ;))
PHP:
<?php 
/* MySQL Config */ 
$link = mysql_connect('localhost', '{gebruiker}', '{password}') or die('Could not connect: ' . mysql_error()); 
mysql_select_db('jeugdmeeting_nl') or die('Could not select database'); 
/* End Config */ 

/* Check of formulier is verzonden */ 
if(isset($_POST['submit'])) { 
  /* Foutmelding "buffer" */ 
  $errorMsg = array(); 
  /* eind buffer */ 

  //Controle(s) op naam 
  if(empty($_POST['naam'])) { 
    $errorMsg[] = 'U bent vergeten een naam in te vullen.'; 
  } 
  // Controle(s) op postcode 
  if(empty($_POST['postcode'])) {  
    $errorMsg[] = 'U bent vergeten een postcode op te geven.'; 
  } 
  // Controle(s) op huisnummer 
  if(empty($_POST['huisnummer'])) { 
    $errorMsg[] = 'U bent vergeten een huisnummer op te geven.'; 
  } elseif(!is_numeric($huisnummer)) { 
    $errorMsg[] = 'Het ingevoerde huisnummer is niet geldig.'; 
  } 
  // Controle(s) op e-mail 
  // Eerst controleren op foute tekens 
  $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); 
  if(empty($email)) { 
    $errorMsg[] = 'U bent vergeten een email adres op te geven'; 
  } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
    // Email validatie uitgevoerd 
    $errorMsg[] = 'Het door u ingevulde e-mailadres is ongeldig.'; 
  } 
  // Controle(s) op code 
  if(empty($_POST['code'])) { 
    $errorMsg[] = 'U bent vergeten het lotnummer in te voeren.'; 
  } elseif(!is_numeric($code)) { 
    $errorMsg[] = 'Het ingevoerde lotnummer is niet geldig.'; 
  } 

  // Kijken of er fouten zijn 
  if(count($errorMsg) > 0) { 
    echo 'De volgende fouten zijn geconstateerd: <br /><br />'; 
    foreach($errorMsg AS $error) { 
      echo $error .'<br />'; 
    } 
  } else { 
    // Kijken of er een prijs op het getal is gevallen 
    $lotQuery = "SELECT lid, prijs FROM loten WHERE getal ='". $_POST['getal'] ."'"; 
    $lotResult = mysql_query($lotQuery) or die(mysql_error()); 
    if(mysql_num_rows($lotResult) > 0) { 
      // Er is een prijs -> kijken of die prijs niet al is vergeven 
      $lotRow = mysql_fetch_array($lotResult); 
      $lid = $lotRow['lid']; 
      $prijs = $lotRow['prijs']; 
      $winnaarQuery = "SELECT prijs 
                       FROM winnaars w 
                       INNER JOIN loten l 
                       ON w.lid=l.lid"; 
      $winnaarResult = mysql_query($winnaarQuery) or die(mysql_error()); 
      $winnaarRow = mysql_fetch_array($winnaarResult); 
      if($winnaarRow['prijs'] != $prijs) { 
        $insertQuery = "INSERT INTO winnaars (lid,naam,postcode,huisnummer,email) values ('$lid','".$_POST['naam']."','".$_POST['postcode']."','".$_POST['huisnummer']."','". $email ."')";   
        mysql_query($insertQuery) or die(mysql_error()); 
        echo 'Gefeliciteerd, u heeft de '. $prijs .'e prijs gewonnen.'; 
      } else { 
        echo 'Helaas, iemand voor u heeft de '. $prijs .'e prijs al gewonnen.'; 
      } 
    } else { 
      echo 'Helaas, op uw getal is geen prijs gevallen.'; 
    }
  }
} else { 
?> 
<form action="" method="post"> 
Naam: <input type="text" name="naam" /><br /> 
Postcode: <input type="text" name="postcode" maxlength="7" /><br /> 
Huisnummer: <input type="text" name="huisnummer" maxlength="4" /><br /> 
E-mail: <input type="text" name="email" /><br /> 
Code: <input type="text" name="getal" /><br /><br /> 
<input type="submit" name="submit" value="Verstuur" /> 
</form> 

<?php 
} 
?>
 
Ik heb nog steeds een foutmelding als ik niks invul:

Fatal error: Call to undefined function filter_var() in /customers/jeugdmeeting.nl/jeugdmeeting.nl/httpd.www/test/index.php on line 29

Goeiemorgen trouwens :)
 
Die melding komt waarschijnlijk omdat je geen PHP5 hebt.
Vervang dit
PHP:
 // Controle(s) op e-mail  
  // Eerst controleren op foute tekens  
  $email = filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);  
  if(empty($email)) {  
    $errorMsg[] = 'U bent vergeten een email adres op te geven';  
  } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {  
    // Email validatie uitgevoerd  
    $errorMsg[] = 'Het door u ingevulde e-mailadres is ongeldig.';  
  }
door
PHP:
 // Controle(s) op e-mail
  if(empty($_POST['email'])) {  
    $errorMsg[] = 'U bent vergeten een email adres op te geven';  
  }
  // Hier moet nog een extra controle worden uitgevoerd met een patroon
Voorlopig controleert hij alleen of het veld is ingevuld. Het commentaar er onder moet mij er aan herinneren dat daar nog een extra check moet komen :)
 
Als het goed is heb ik wel PHP5 maar goed, de controles doen het nu :D

Super!:thumb: En nu... :o
 
Als jij de huidige database structuur even door geeft dan weet ik wel wat er nu komt ;)
 
Winnaars

Wid (int)11 Auto_increment key
did (int)11
lid (int)11

Loten

lid (int)11 auto_increment key
getal (int)5
prijs (int)60

Gebruikers

gid (int)11 auto_increment key
gebruikersnaam (varchar)50
wachtwoord (varchar)32

deelnemers

did (int)11 auto_increment key
naam (varchar)75
postcode (varchar)7
huisnummer (varchar)4
email (varchar)50

Al denk ik dat gebruikers in eerste instantie niet gebruikt hoeft te worden omdat die voor een 'admin' is??
 
Oke, wat er nu moet worden gedaan is de gegevens in de tabel deelnemers opslaan.
Daarnaast moet er bij een prijs de id van de deelnemer in de tabel winnaars worden toegevoegd
PHP:
<?php  
/* MySQL Config */  
$link = mysql_connect('localhost', '{gebruiker}', '{password}') or die('Could not connect: ' . mysql_error());  
mysql_select_db('jeugdmeeting_nl') or die('Could not select database');  
/* End Config */  

/* Check of formulier is verzonden */  
if(isset($_POST['submit'])) {  
  /* Foutmelding "buffer" */  
  $errorMsg = array();  
  /* eind buffer */  

  //Controle(s) op naam  
  if(empty($_POST['naam'])) {  
    $errorMsg[] = 'U bent vergeten een naam in te vullen.';  
  }  
  // Controle(s) op postcode  
  if(empty($_POST['postcode'])) {   
    $errorMsg[] = 'U bent vergeten een postcode op te geven.';  
  }  
  // Controle(s) op huisnummer  
  if(empty($_POST['huisnummer'])) {  
    $errorMsg[] = 'U bent vergeten een huisnummer op te geven.';  
  } elseif(!is_numeric($huisnummer)) {  
    $errorMsg[] = 'Het ingevoerde huisnummer is niet geldig.';  
  }  
  // Controle(s) op e-mail  
  // Eerst controleren op foute tekens 
  if(empty($email)) {  
    $errorMsg[] = 'U bent vergeten een email adres op te geven';  
  }
  // Hier moet nog een extra controle worden uitgevoerd met een patroon

  // Controle(s) op code  
  if(empty($_POST['code'])) {  
    $errorMsg[] = 'U bent vergeten het lotnummer in te voeren.';  
  } elseif(!is_numeric($code)) {  
    $errorMsg[] = 'Het ingevoerde lotnummer is niet geldig.';  
  }  

  // Kijken of er fouten zijn  
  if(count($errorMsg) > 0) {  
    echo 'De volgende fouten zijn geconstateerd: <br /><br />';  
    foreach($errorMsg AS $error) {  
      echo $error .'<br />';  
    }  
  } else {
    // Geen fouten -> Deelnemer in database stoppen
    $deelnemerQuery = "INSERT INTO deelnemers (naam,postcode,huisnummer, email)
                        VALUES ('". $_POST['naam'] ."', '". $_POST['postcode'] ."', '". $_POST['huisnummer'] ."', '". $_POST['email'] ."')";
    mysql_query($deelnemerQuery) or die(mysql_error());
    $did = mysql_insert_id();
    // Kijken of er een prijs op het getal is gevallen  
    $lotQuery = "SELECT lid, prijs FROM loten WHERE getal ='". $_POST['getal'] ."'";  
    $lotResult = mysql_query($lotQuery) or die(mysql_error());  
    if(mysql_num_rows($lotResult) > 0) {  
      // Er is een prijs -> kijken of die prijs niet al is vergeven  
      $lotRow = mysql_fetch_array($lotResult);  
      $lid = $lotRow['lid'];  
      $prijs = $lotRow['prijs'];  
      $winnaarQuery = "SELECT prijs  
                       FROM winnaars w  
                       INNER JOIN loten l  
                       ON w.lid=l.lid";  
      $winnaarResult = mysql_query($winnaarQuery) or die(mysql_error());  
      $winnaarRow = mysql_fetch_array($winnaarResult);  
      if($winnaarRow['prijs'] != $prijs) {  
        $insertQuery = "INSERT INTO winnaars (lid, did) values ('". $lid ."','". $did ."')";    
        mysql_query($insertQuery) or die(mysql_error());  
        echo 'Gefeliciteerd, u heeft de '. $prijs .'e prijs gewonnen.';  
      } else {  
        echo 'Helaas, iemand voor u heeft de '. $prijs .'e prijs al gewonnen.';  
      }  
    } else {  
      echo 'Helaas, op uw getal is geen prijs gevallen.';  
    } 
  } 
} else {  
?>  
<form action="" method="post">  
Naam: <input type="text" name="naam" /><br />  
Postcode: <input type="text" name="postcode" maxlength="7" /><br />  
Huisnummer: <input type="text" name="huisnummer" maxlength="4" /><br />  
E-mail: <input type="text" name="email" /><br />  
Code: <input type="text" name="getal" /><br /><br />  
<input type="submit" name="submit" value="Verstuur" />  
</form>  

<?php  
}  
?>
Wat er nu dus nieuw is is dat er elke invulling in de tabel deelnemers moet komen en bij een prijs moet van die deelnemer de id ook worden doorgegeven naar de winnaars-tabel.
 
Als ik hem helemaal volledig invul krijg ik toch nog een paar foutmeldingen namelijk deze:

Het ingevoerde huisnummer is niet geldig.
U bent vergeten een email adres op te geven
U bent vergeten het lotnummer in te voeren.

Dus zit er iets fout in de controle?
 
Een paar variabele namen waren nog achtergebleven :)

PHP:
<?php   
/* MySQL Config */   
$link = mysql_connect('localhost', '{gebruiker}', '{password}') or die('Could not connect: ' . mysql_error());   
mysql_select_db('jeugdmeeting_nl') or die('Could not select database');   
/* End Config */   

/* Check of formulier is verzonden */   
if(isset($_POST['submit'])) {   
  /* Foutmelding "buffer" */   
  $errorMsg = array();   
  /* eind buffer */   

  //Controle(s) op naam   
  if(empty($_POST['naam'])) {   
    $errorMsg[] = 'U bent vergeten een naam in te vullen.';   
  }   
  // Controle(s) op postcode   
  if(empty($_POST['postcode'])) {    
    $errorMsg[] = 'U bent vergeten een postcode op te geven.';   
  }   
  // Controle(s) op huisnummer   
  if(empty($_POST['huisnummer'])) {   
    $errorMsg[] = 'U bent vergeten een huisnummer op te geven.';   
  } elseif(!is_numeric($_POST['huisnummer'])) {   
    $errorMsg[] = 'Het ingevoerde huisnummer is niet geldig.';   
  }   
  // Controle(s) op e-mail   
  // Eerst controleren op foute tekens  
  if(empty($_POST['email'])) {   
    $errorMsg[] = 'U bent vergeten een email adres op te geven';   
  } 
  // Hier moet nog een extra controle worden uitgevoerd met een patroon 

  // Controle(s) op code   
  if(empty($_POST['getal'])) {   
    $errorMsg[] = 'U bent vergeten het lotnummer in te voeren.';   
  } elseif(!is_numeric($_POST['getal'])) {   
    $errorMsg[] = 'Het ingevoerde lotnummer is niet geldig.';   
  }   

  // Kijken of er fouten zijn   
  if(count($errorMsg) > 0) {   
    echo 'De volgende fouten zijn geconstateerd: <br /><br />';   
    foreach($errorMsg AS $error) {   
      echo $error .'<br />';   
    }   
  } else { 
    // Geen fouten -> Deelnemer in database stoppen 
    $deelnemerQuery = "INSERT INTO deelnemers (naam,postcode,huisnummer, email) 
                        VALUES ('". $_POST['naam'] ."', '". $_POST['postcode'] ."', '". $_POST['huisnummer'] ."', '". $_POST['email'] ."')"; 
    mysql_query($deelnemerQuery) or die(mysql_error()); 
    $did = mysql_insert_id(); 
    // Kijken of er een prijs op het getal is gevallen   
    $lotQuery = "SELECT lid, prijs FROM loten WHERE getal ='". $_POST['getal'] ."'";   
    $lotResult = mysql_query($lotQuery) or die(mysql_error());   
    if(mysql_num_rows($lotResult) > 0) {   
      // Er is een prijs -> kijken of die prijs niet al is vergeven   
      $lotRow = mysql_fetch_array($lotResult);   
      $lid = $lotRow['lid'];   
      $prijs = $lotRow['prijs'];   
      $winnaarQuery = "SELECT prijs   
                       FROM winnaars w   
                       INNER JOIN loten l   
                       ON w.lid=l.lid";   
      $winnaarResult = mysql_query($winnaarQuery) or die(mysql_error());   
      $winnaarRow = mysql_fetch_array($winnaarResult);   
      if($winnaarRow['prijs'] != $prijs) {   
        $insertQuery = "INSERT INTO winnaars (lid, did) values ('". $lid ."','". $did ."')";     
        mysql_query($insertQuery) or die(mysql_error());   
        echo 'Gefeliciteerd, u heeft de '. $prijs .'e prijs gewonnen.';   
      } else {   
        echo 'Helaas, iemand voor u heeft de '. $prijs .'e prijs al gewonnen.';   
      }   
    } else {   
      echo 'Helaas, op uw getal is geen prijs gevallen.';   
    }  
  }  
} else {   
?>   
<form action="" method="post">   
Naam: <input type="text" name="naam" /><br />   
Postcode: <input type="text" name="postcode" maxlength="7" /><br />   
Huisnummer: <input type="text" name="huisnummer" maxlength="4" /><br />   
E-mail: <input type="text" name="email" /><br />   
Code: <input type="text" name="getal" /><br /><br />   
<input type="submit" name="submit" value="Verstuur" />   
</form>   

<?php   
}   
?>
 
Oke dat werkt allemaal! :thumb::thumb:

Hij slaat deelnemers op, hij laat zien dat je een prijs hebt gewonnen, koppelt dit aan een deelnemers id...

Dat werkt...

Nu moet (als ik het goed heb) er nog gecontroleerd worden of de deelnemers al geregistreerd staan... Eigenlijk moet elk vak gecontroleerd worden denk ik? :o
 
Nu moet (als ik het goed heb) er nog gecontroleerd worden of de deelnemers al geregistreerd staan... Eigenlijk moet elk vak gecontroleerd worden denk ik? :o

Ik denk het niet, anders dan krijg je dat mensen met de postcode 1234AB allemaal niet meer kunnen controleren of ze prijs hebben wanneer al iemand met die postcode voorkomt.

Het zal dus een combinatie moeten worden van (ik denk) naam, postcode+huisnummer en het email-adres.

Heb je ook al gecontroleerd of de andere checks op prijzen nog werken (Dus dat de {x}e prijs al is vergeven of dat er op het lotnummer niets is gevallen)
 
Klopt, je hebt gelijk... De combinatie moet niet mogelijk zijn... Volgens mij werkt het allemaal... Ook als ik meerdere nummers invoer met dezelfde prijs... dus volgens mij klopt dat allemaal...

Is er ook nog een mogelijkheid dat de prijzen i.p.v. nummers teksten worden? :rolleyes:

En is het ook mogelijk dat je bij code verplicht 5 cijfers in moet vullen? (sorry voor het vele vragen en super bedankt voor alle hulp!!)
 
Laatst bewerkt:
Is er ook nog een mogelijkheid dat de prijzen i.p.v. nummers teksten worden? :rolleyes:

Wat bedoel je hiermee? Waar kan ik de prijzen vandaan halen dan? Uit de tabel Winnaars? Zo ja wat heb je daar in staan dan? Een bedrag in euro's?

Die controle op 5 getallen is nu ingevoerd.

PHP:
<?php    
/* MySQL Config */    
$link = mysql_connect('localhost', '{gebruiker}', '{password}') or die('Could not connect: ' . mysql_error());    
mysql_select_db('jeugdmeeting_nl') or die('Could not select database');    
/* End Config */    

/* Check of formulier is verzonden */    
if(isset($_POST['submit'])) {    
  /* Foutmelding "buffer" */    
  $errorMsg = array();    
  /* eind buffer */    

  //Controle(s) op naam    
  if(empty($_POST['naam'])) {    
    $errorMsg[] = 'U bent vergeten een naam in te vullen.';    
  }    
  // Controle(s) op postcode    
  if(empty($_POST['postcode'])) {     
    $errorMsg[] = 'U bent vergeten een postcode op te geven.';    
  }    
  // Controle(s) op huisnummer    
  if(empty($_POST['huisnummer'])) {    
    $errorMsg[] = 'U bent vergeten een huisnummer op te geven.';    
  } elseif(!is_numeric($_POST['huisnummer'])) {    
    $errorMsg[] = 'Het ingevoerde huisnummer is niet geldig.';    
  }    
  // Controle(s) op e-mail    
  // Eerst controleren op foute tekens   
  if(empty($_POST['email'])) {    
    $errorMsg[] = 'U bent vergeten een email adres op te geven';    
  }  
  // Hier moet nog een extra controle worden uitgevoerd met een patroon  

  // Controle(s) op code    
  if(empty($_POST['getal'])) {    
    $errorMsg[] = 'U bent vergeten het lotnummer in te voeren.';    
  } elseif(!is_numeric($_POST['getal'])) {    
    $errorMsg[] = 'Het ingevoerde lotnummer is niet geldig.';    
  } elseif(strlen($_POST['getal']) != 5) {
    $errorMsg[] = 'Het ingevoerde getal bevat geen 5 getallen.';
  }

  // Kijken of er fouten zijn    
  if(count($errorMsg) > 0) {    
    echo 'De volgende fouten zijn geconstateerd: <br /><br />';    
    foreach($errorMsg AS $error) {    
      echo $error .'<br />';    
    }    
  } else {
    // Geen fouten -> Deelnemer in database stoppen  
    $deelnemerQuery = "INSERT INTO deelnemers (naam,postcode,huisnummer, email)  
                        VALUES ('". $_POST['naam'] ."', '". $_POST['postcode'] ."', '". $_POST['huisnummer'] ."', '". $_POST['email'] ."')";  
    mysql_query($deelnemerQuery) or die(mysql_error());  
    $did = mysql_insert_id();

    // Checken of persoon uniek is
    $checkQuery = "SELECT naam, postcode, huisnummer, email
                 FROM deelnemers
                 WHERE did NOT '". $did ."'
                 AND LOWER(naam) = '". $_POST['naam'] ."'
                 OR
                  (LOWER(postcode) = '". $_POST['postcode'] ."'
                   AND huisnummer = '". $_POST['huisnummer'] ."')
                 OR LOWER(email) = '". $_POST['email'] ."'";
    $checkResult = mysql_query($checkQuery) or die(mysql_error());
    if(mysql_num_rows($checkResult) > 0) {
      echo 'U kunt maar 1x mee doen aan deze actie.';
    } else {
      // Kijken of er een prijs op het getal is gevallen    
      $lotQuery = "SELECT lid, prijs FROM loten WHERE getal ='". $_POST['getal'] ."'";    
      $lotResult = mysql_query($lotQuery) or die(mysql_error());    
      if(mysql_num_rows($lotResult) > 0) {    
        // Er is een prijs -> kijken of die prijs niet al is vergeven    
        $lotRow = mysql_fetch_array($lotResult);    
        $lid = $lotRow['lid'];    
        $prijs = $lotRow['prijs'];    
        $winnaarQuery = "SELECT prijs    
                         FROM winnaars w    
                         INNER JOIN loten l    
                         ON w.lid=l.lid";    
        $winnaarResult = mysql_query($winnaarQuery) or die(mysql_error());    
        $winnaarRow = mysql_fetch_array($winnaarResult);    
        if($winnaarRow['prijs'] != $prijs) {    
          $insertQuery = "INSERT INTO winnaars (lid, did) values ('". $lid ."','". $did ."')";      
          mysql_query($insertQuery) or die(mysql_error());    
          echo 'Gefeliciteerd, u heeft de '. $prijs .'e prijs gewonnen.';    
        } else {    
          echo 'Helaas, iemand voor u heeft de '. $prijs .'e prijs al gewonnen.';    
        }    
      } else {    
        echo 'Helaas, op uw getal is geen prijs gevallen.';    
      }   
    }
  }   
} else {    
?>    
<form action="" method="post">    
Naam: <input type="text" name="naam" /><br />    
Postcode: <input type="text" name="postcode" maxlength="7" /><br />    
Huisnummer: <input type="text" name="huisnummer" maxlength="4" /><br />    
E-mail: <input type="text" name="email" /><br />    
Code: <input type="text" name="getal" /><br /><br />    
<input type="submit" name="submit" value="Verstuur" />    
</form>    

<?php    
}    
?>
Hopelijk doet hij het, deze hoort ook de unieke deelnemers te checken. Hij zal ongetwijfeld niet werken maar de fout hoor ik wel. (Zal wel een query fout zijn)
 
Dit is de fout die hij geeft bij een zelfde gebruiker:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''12' AND LOWER(naam) = 'Bouke Weening' OR ' at line 3

De controle op het in te voeren nummer werkt wel!!! :thumb:

De prijzen zitten nu als volgt in elkaar:

lid getal prijs
0 00002 316
2 00316 400
3 00317 316

Je hebt dus een 'getal' waar de prijs op valt, het lotnummer dus. En de prijs daaraan gekoppeld. Als je nu gewonnen hebt laat hij zien: je hebt de 316e prijs gewonnen... hier wil ik dan graag tekst hebben als: je hebt het cd pakket gewonnen... bv. kan dat ook?
 
Dat met de prijzen kan alleen wanneer je ergens die fysieke prijzen bekend hebt.

Ik hoop dat deze 'versie' iets beter zal werken.
PHP:
<?php     
/* MySQL Config */     
$link = mysql_connect('localhost', '{gebruiker}', '{password}') or die('Could not connect: ' . mysql_error());     
mysql_select_db('jeugdmeeting_nl') or die('Could not select database');     
/* End Config */     

/* Check of formulier is verzonden */     
if(isset($_POST['submit'])) {     
  /* Foutmelding "buffer" */     
  $errorMsg = array();     
  /* eind buffer */     

  //Controle(s) op naam     
  if(empty($_POST['naam'])) {     
    $errorMsg[] = 'U bent vergeten een naam in te vullen.';     
  }     
  // Controle(s) op postcode     
  if(empty($_POST['postcode'])) {      
    $errorMsg[] = 'U bent vergeten een postcode op te geven.';     
  }     
  // Controle(s) op huisnummer     
  if(empty($_POST['huisnummer'])) {     
    $errorMsg[] = 'U bent vergeten een huisnummer op te geven.';     
  } elseif(!is_numeric($_POST['huisnummer'])) {     
    $errorMsg[] = 'Het ingevoerde huisnummer is niet geldig.';     
  }     
  // Controle(s) op e-mail     
  // Eerst controleren op foute tekens    
  if(empty($_POST['email'])) {     
    $errorMsg[] = 'U bent vergeten een email adres op te geven';     
  }   
  // Hier moet nog een extra controle worden uitgevoerd met een patroon   

  // Controle(s) op code     
  if(empty($_POST['getal'])) {     
    $errorMsg[] = 'U bent vergeten het lotnummer in te voeren.';     
  } elseif(!is_numeric($_POST['getal'])) {     
    $errorMsg[] = 'Het ingevoerde lotnummer is niet geldig.';     
  } elseif(strlen($_POST['getal']) != 5) { 
    $errorMsg[] = 'Het ingevoerde getal bevat geen 5 getallen.'; 
  } 

  // Kijken of er fouten zijn     
  if(count($errorMsg) > 0) {     
    echo 'De volgende fouten zijn geconstateerd: <br /><br />';     
    foreach($errorMsg AS $error) {     
      echo $error .'<br />';     
    }     
  } else { 
    // Geen fouten -> Deelnemer in database stoppen   
    $deelnemerQuery = "INSERT INTO deelnemers (naam,postcode,huisnummer, email)   
                        VALUES ('". $_POST['naam'] ."', '". $_POST['postcode'] ."', '". $_POST['huisnummer'] ."', '". $_POST['email'] ."')";   
    mysql_query($deelnemerQuery) or die(mysql_error());   
    $did = mysql_insert_id(); 

    // Checken of persoon uniek is 
    $checkQuery = "SELECT naam, postcode, huisnummer, email 
                   FROM deelnemers 
                   WHERE did NOT '". $did ."' 
                   AND LOWER(naam) = '". strtolower($_POST['naam']) ."' 
                   OR LOWER(postcode) = '". strtolower($_POST['postcode']) ."' 
                   AND huisnummer = '". $_POST['huisnummer'] ."') 
                   OR LOWER(email) = '". strtolower($_POST['email']) ."'"; 
    $checkResult = mysql_query($checkQuery) or die(mysql_error()); 
    if(mysql_num_rows($checkResult) > 0) { 
      echo 'U kunt maar 1x mee doen aan deze actie.'; 
    } else { 
      // Kijken of er een prijs op het getal is gevallen     
      $lotQuery = "SELECT lid, prijs FROM loten WHERE getal ='". $_POST['getal'] ."'";     
      $lotResult = mysql_query($lotQuery) or die(mysql_error());     
      if(mysql_num_rows($lotResult) > 0) {     
        // Er is een prijs -> kijken of die prijs niet al is vergeven     
        $lotRow = mysql_fetch_array($lotResult);     
        $lid = $lotRow['lid'];     
        $prijs = $lotRow['prijs'];     
        $winnaarQuery = "SELECT prijs     
                         FROM winnaars w     
                         INNER JOIN loten l     
                         ON w.lid=l.lid";     
        $winnaarResult = mysql_query($winnaarQuery) or die(mysql_error());     
        $winnaarRow = mysql_fetch_array($winnaarResult);     
        if($winnaarRow['prijs'] != $prijs) {     
          $insertQuery = "INSERT INTO winnaars (lid, did) values ('". $lid ."','". $did ."')";       
          mysql_query($insertQuery) or die(mysql_error());     
          echo 'Gefeliciteerd, u heeft de '. $prijs .'e prijs gewonnen.';     
        } else {     
          echo 'Helaas, iemand voor u heeft de '. $prijs .'e prijs al gewonnen.';     
        }     
      } else {     
        echo 'Helaas, op uw getal is geen prijs gevallen.';     
      }    
    } 
  }    
} else {     
?>     
<form action="" method="post">     
Naam: <input type="text" name="naam" /><br />     
Postcode: <input type="text" name="postcode" maxlength="7" /><br />     
Huisnummer: <input type="text" name="huisnummer" maxlength="4" /><br />     
E-mail: <input type="text" name="email" /><br />     
Code: <input type="text" name="getal" /><br /><br />     
<input type="submit" name="submit" value="Verstuur" />     
</form>     

<?php     
}     
?>
 
Hij geeft nu deze fout:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''16' AND LOWER(naam) = 'bouke weening' ' at line 3

Waar zou ik die prijzen fysiek dan neer moeten zetten? weer in een aparte tabel? of kan ik het ergens anders aan linken?
 
De query zal ik thuis even naar kijken.

Wanneer de prijzen altijd hetzelfde zijn kun je ze ook ergens binnen de code wegstoppen. Anders is inderdaad een tabel handiger.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan