Prijzen check

Status
Niet open voor verdere reacties.
ik heb een 11 tal verschillende prijzen. Elke prijs zit dus gekoppeld aan een heel aantal getallen en wie als eerste een van deze getallen invoert wint de prijs... maar bv prijs 316 (zoals aangegeven in de tabel) is altijd de zelfde prijs... dus kan wel ergens in de code verwerkt worden denk ik...
 
Ik denk dat het zo moet gaan werken met de prijzen in ieder geval...
PHP:
<?php
/* Prijzen */
$prijzenArray = array(
"316" => "een fiets",
"12345" => "een waardenbon",
);
/* einde prijzen */

/* 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 != '". $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 '. $prijzenArray[$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 denk nog steeds dat het met die query niet goed zit en weet ook niet hoe ik het zo op kan gaan lossen... Het lijk mij handiger dat jij in phpMyAdmin de database exporteert en deze even naar mij mailt zodat ik hier lokaal kan testen.

Mijn e-mail is thadevil@helpmij.nl, mocht je nog meer bestanden hebben die hier bij horen zet alles dan even in een .zip bestand dan heb ik alles wat ik nodig heb :)
 
Hij geeft nu geen foutmelding meer maar zegt bij elke gebruiker die ik invoer: U kan maar 1x meedoen met deze actie...

Dus het werkt nog niet helemaal...

Ik zal thuis het een en ander exporteren en mailen!
 
Goed, 4 dingen die je moet doen wil het gaan werken met de code uit het bijgevoegde bestand.
  1. Alle bestanden in 1 map zetten (in ieder geval bij elkaar)
  2. In je database het veld getal van INT naar CHAR wijzigen in de tabel loten
  3. De MySQL gegevens naar jouw db aanpassen :)
  4. De prijzen even aanvullen in het script (Het getal staat voor het getal zoals het in de database bij prijs staat
Let wel op wanneer je loten gaat invoegen in de database dat je hem 5-cijferig maakt. Want als je 312 invult dan zal daar nooit een prijs op vallen omdat het formulier alleen codes met 5 cijfers accepteert ;)

Ohw ja, voor ik het vergeet: De stijl heb ik ook iets aangepast, hopelijk bevalt het je ;)
 

Bijlagen

Laatst bewerkt:
Helemaal SUPER:thumb::thumb::thumb::thumb:

Bijna alles werkt en de stijl is super!!!

Er is alleen nog 1 dingetje... Hij geeft de prijzen nog niet weer... dus wel u hebt gewonnen maar niet wat... En die getallen staan wel gelijk in de database en ook in de PHP...

Maar ik ben je nu al super dankbaar!
 
Dat had ik dus ook dat hij het niet goed doet...

Je moet dus niet het getal in de prijzenArray zetten maar het nummer dat bij prijs staat.

Dus als dit een rij uit je database is
Code:
LID | GETAL | PRIJS
4	00002	316

Dan moet je dus in de array aangeven
PHP:
"316" => "een cadeau",
 
Hij doet het helemaal!!!!!!

SUPER BEDANKT VOOR AL JE HULP!!!

Je bent fantastisch :thumb:
 
Nog even een puntje qua "organisatie", je vertelde dat elke keer op dezelfde getallen dezelfde prijs valt.

Is het "getal" dan wel anders? Want anders zou je gewoon elke keer dat nummer in kunnen vullen ook al heb je niet echt gewonnen met als conclusie dat degene die wel echt die prijs zo horen te krijgen de melding krijgt dat er al iemand anders voor hem/haar was.

Voor de rest succes met de loting ;)
 
Ik snap je vraag niet helemaal...

Ik probeer het nog een keer uit te leggen (sorry dat ik zo onduidelijk ben) :confused:

Ik heb zo'n 20.000 flyers verspreid met de nummers 1 - 20.000 (dit zijn de lotnummers).
Nu is de kans groot dat 10.000 flyers regelrecht de prullebak in gaan, die nummers worden dus nooit ingevoerd. Om nou te voorkomen dat de prijzen blijven liggen koppel ik meerdere nummers aan de prijzen. Dus stel ik heb een fiets in de loterij dan kan die gewonnen worden met de nummers: 14900 en 04589 en 02834. de eerste van die drie die reageert wint dus de fiets. Ik pas de tekst zo aan dat de anderen dan gewoon zien dat ze geen prijs hebben...

Zo duidelijk?
 
Het is duidelijk dat je mijn vraag niet snapte :)

maar bv prijs 316 (zoals aangegeven in de tabel) is altijd de zelfde prijs
Naar deze regel refereer ik. Ik neem aan dat je de loterij vaker uitvoert dus dan is de volgende keer weer prijs op 316. Maar is het lotnummer dan ook veranderd?

Dus in SQL en PHP:

1e loting
Code:
LID | GETAL | PRIJS
4	00002	316
PHP:
"316" => "een cadeau",

2e loting
Code:
LID | GETAL | PRIJS
4	00456	316
PHP:
"316" => "een cadeau",

Of is bij de 2e loting de inhoud van de tabel hetzelfde als de eerste loting?
 
Bij een tweede loting veranderen natuurlijk de lotnummers en gooien we alle tabellen weer leeg... Dan komen er ook weer andere prijzen dus... Maar we moeten eerst de eerste loting maar eens goed laten verlopen!

En daar heb je in elk geval heel erg mee geholpen!!! :thumb:
 
Hey, ik had nog een vraagje... ik hoop dat ik niet te lastig wordt?? :confused:

Is er ook een script voor dat als je dan gewonnen hebt dan je dan automatisch een bevestigingsmail krijgt met daarin een bevestiging dat je gewonnen hebt en wat en dan we zo snel mogelijk contact met hun opnemen?

Mag ik dit nog vragen? :o
 
En nog een klein vraagje :o

Hoe kan ik makkelijk een heel aantal prijzen inclusief nummers in de tabel "loten" plaatsen?

Alvast bedankt maar weer :thumb:
 
Inclusief mailen
PHP:
<?php 
/* Prijzen */
$prijzenArray = array( 
"400" => "een fiets", 
"316" => "een waardenbon", 
); 
/* einde prijzen */ 

/* MySQL Config */
$link = mysql_connect('localhost', 'root', 'root') or die('Could not connect: ' . mysql_error());
mysql_select_db('loting') or die('Could not select database');
/* End Config */

/* Mail variabelen */
$mailFrom = ""; // Wat is het e-mailadres waarvan het verstuurd moet worden
$mailName = ""; // Namens wie wordt de mail verstuurd
$mailSubject = "Loting"; // Het onderwerp van de mail
$mailBody = "--- Dit is een automatisch gegenereerd bericht ---"; // De inhoud van de mail
# HIERONDER NIET AANPASSEN, tenzij je weet wat je doet #
$mailHeaders = "MIME-Version: 1.0\r\n";
$mailHeaders .= "Content-type: text/plain; charset=utf-8\r\n";    
$mailHeaders .= "From: ". $mailName ." <". $mailFrom .">\r\n";
/* Einde mail variabelen */ 

/* Functie voor het weergeven van "mooie" foutmeldingen */
function errorMsg($string) {
  echo '<div id="errorMsg">'."\n";
  echo '<h3>De volgende fouten zijn geconstateerd</h3>'."\n";
  echo '<ol>'."\n";
  echo $string;  
  echo '</ol></div>'."\n";
}
/* Einde functie */

/* Controle variable */
$process = false;
/* Eind controle variabele */
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>Loting</title>
 <!-- CSS -->
 <style type="text/css" media="screen">
   @import "uni-form.css";
   .uniForm #succesMsg{
    background: #66FF66;
    border:1px solid #df7d7d;
    border-width:1px 0;
    margin:0 0 1em 0; padding:1em;
}
 </style>
</head>
<body>
<form method="post" class="uniForm">
<?php
/* Check of formulier is verzonden */
if(isset($_POST['submit'])) {
  $process = true;
  /* 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.';
  } elseif (!preg_match("/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)*\.([a-zA-Z]{2,6})$/", $_POST['email'])) {
    $errorMsg[] = 'Het ingevoerde e-mailadres is ongeldig.';
  }
  // 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) {
    $fullerror = '';
    foreach($errorMsg AS $error) {
      $fullerror.= '<li>'. $error .'</li>'."\n";
    }
    errorMsg($fullerror);
  } else {
    // Checken of persoon uniek is
    $checkQuery = "SELECT naam, postcode, huisnummer, email
                   FROM deelnemers
                   WHERE (LOWER(postcode) ='". strtolower($_POST['postcode']) ."' AND huisnummer = '". $_POST['huisnummer'] ."')
	       OR LOWER(naam) = '". strtolower($_POST['naam']) ."'
	       OR LOWER(email) = '". strtolower($_POST['email']) ."'
	       ";
    $checkResult = mysql_query($checkQuery) or die(mysql_error());
    if(mysql_num_rows($checkResult) > 0) {
      errormsg('<li>U kunt maar 1x mee doen aan deze actie.</li>');
    } else {
      $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());
          mail($_POST['email'], $mailSubject, $mailBody, $mailHeaders);
          echo '<div id="succesMsg">Gefeliciteerd, u heeft '. $prijzenArray[$prijs] .' gewonnen.</div>';
        } else {
          errorMsg('Helaas, iemand voor u deze prijs al gewonnen.');
        }
      } else {
        errorMsg('Helaas, op uw getal is geen prijs gevallen.');
      }
    }
  }
}
?>
 <fieldset class="inlineLabels" style="width:300px;">
  <legend>Uw gegevens</legend>
  <div class="ctrlHolder">
   <label for="naam">Naam</label>
   <input name="naam" id="naam" value="<?= $process ? $_POST['naam'] : '' ?>" size="25" type="text" class="textInput" />
  </div>
  <div class="ctrlHolder">
   <label for="postcode">Postcode</label>
   <input name="postcode" id="postcode" value="<?= $process ? $_POST['postcode'] : '' ?>" size="7" maxlength="6" type="text" class="textInput" />
  </div>
  <div class="ctrlHolder">
   <label for="huisnummer">Huisnummer</label>
   <input name="huisnummer" id="huisnummer" value="<?= $process ? $_POST['huisnummer'] : '' ?>" size="5" maxlength="4" type="text" class="textInput" />
  </div>
  <div class="ctrlHolder">
   <label for="email">E-mailadres</label>
   <input name="email" id="email" value="<?= $process ? $_POST['email'] : '' ?>" size="25" type="text" class="textInput" />
  </div>
  <div class="ctrlHolder">
   <label for="getal">Code</label>
   <input name="getal" id="getal" value="<?= $process ? $_POST['getal'] : '' ?>" size="6" maxlength="5" type="text" class="textInput" />
  </div>
  <div class="buttonHolder">
   <button type="submit" name="submit" class="submitButton">Verstuur</button>
  </div>
 </fieldset>
</form>
</body>
</html>
Bovenin staan wat variabelen welke je kunt veranderen.

Hoe je de loten toewijst mag je zelf uit gaan zoeken, ik denk dat ik je ver genoeg op weg heb geholpen. Tijd om zelf wat PHP te gaan schrijven ;)
 
Oke, dat ga ik zelf uitvinden...

Maar het laatste script wat je gepost hebt, daar staat toch nergens de tekst in die in de mail moet komen? Is het script wel compleet zo?

Groet,
 
voor het genereren van de inhoud van de tabellen heb ik nu dit:
PHP:
<?php

/* MySQL Config */
$link = mysql_connect('localhost', '*****', '**********') or die('Could not connect: ' . mysql_error());
mysql_select_db('f*******') or die('Could not select database');
/* End Config */

 

for($i = 50001; $i <= 51000; $i++) {

            $query = "INSERT INTO loten (getal, prijs) VALUES(".$i.", 1)";

            }

 

?>

Klopt dat ongeveer?
 
Niet?
PHP:
$mailBody = "--- Dit is een automatisch gegenereerd bericht ---"; // De inhoud van de mail
Beetje aanpassen lijkt mij...

Daarnaast doet je eigen script niet veel. Het voert een FOR-lus uit van 50001 (? Waarom niet gewoon 1?) maar doet vervolgens niets met $query :confused:
 
PHP:
$query = mysql_query($query);

Dat erbij en hij werkt volgens mij... Tenminste dat doet hij ;)

Maar dat mailen werkt nog niet... ook na het een en ander aangepast te hebben krijg ik nog geen mail... helaas... Waar kan dat nog aan liggen??
 
Kun je sowieso wel mails versturen?

Maak een nieuw document aan met
PHP:
mail("jouwadres@domein", "Test", "Dit is een test");
Wel even je eigen adres invullen natuurlijk. Als je dat hebt gedaan surf je naar die pagina en als het goed is moet je dan een mailtje ontvangen.

Zo niet, vraag dan even bij je hosting na of het mogelijk is.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan