gekozen optie verwijderen van lijst

Status
Niet open voor verdere reacties.

Dries80

Nieuwe gebruiker
Lid geworden
18 dec 2012
Berichten
2
Hallo allemaal,

mijn vraag:

Naar aanleiding van een huwelijk wil ik een site ontwerpen waar mensen een deel van de huwelijksreis kunnen sponsoren bij wijze van cadeau.
Hiervoor wil ik verschillende opties op de site plaatsen (vliegtuigtickets, transport, maaltijden, overnachtingen, enz...).
De bedoeling is dat iemand een optie kiest, vervolgens enkele gegevens invult, vervolgens op de "verzend"knop klikt en daarna krijgen wij automatisch een mail.
Dat zal me wel likken denk ik. Maar mijn probleem is dat alle gekozen opties moeten verdwijnen uit de lijst met opties.
Hoe kan ik dat best doen...???


Alvast bedankt!
 
Hoi Dries,

Je zou hiervoor (waarschijnlijk) een database moeten gebruiken. Dan zou je 2 tabellen maken waarbij de ene alle beschikbare cadeau's bevat en de andere alle (al) gekozen cadeau's, inclusief persoonsgegevens.
Voorbeeldje:

Snap_2012_12_19_at_11_51_10.png


SQL Export (om te importeren):
[sql]CREATE TABLE IF NOT EXISTS `beschikbare_cadeaus` (
`CadeauID` int(100) NOT NULL AUTO_INCREMENT,
`CadeauNaam` varchar(255) NOT NULL,
PRIMARY KEY (`CadeauID`),
UNIQUE KEY `CadeauNaam` (`CadeauNaam`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

INSERT INTO `beschikbare_cadeaus` (`CadeauID`, `CadeauNaam`) VALUES
(1, 'Gratis taxi'),
(2, 'Heerlijke maaltijd in 5 sterren restaurant'),
(3, 'Luxe 2-persoons overnachting in 5 sterren hotel'),
(4, 'Schoenen'),
(5, 'Taart'),
(6, 'Vliegtuigtickets');

CREATE TABLE IF NOT EXISTS `gekozen_cadeaus` (
`CadeauID` int(100) NOT NULL,
`PersoonNaam` varchar(255) NOT NULL,
`PersoonEmail` varchar(255) NOT NULL,
`PersoonTelefoon` varchar(255) NOT NULL,
PRIMARY KEY (`CadeauID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[/sql]

De PHP code:
PHP:
<!doctype html>
<html>
<body>
<?php
	$db = new PDO('mysql:host=localhost;dbname=huwelijk;charset=UTF-8', "root", "");
	if(isset($_POST['submit'])){
		if(isset($_POST['cadeauid'])){
			$cadeauid = $_POST['cadeauid'];
			$naam = $_POST['naam'];
			$mail = $_POST['mail'];
			$tel = $_POST['tel'];
			$query = $db->prepare("INSERT INTO gekozen_cadeaus VALUES(:id, :naam, :mail, :tel)");
			$query->bindValue(":id", $cadeauid);
			$query->bindValue(":naam", $naam);
			$query->bindValue(":mail", $mail);
			$query->bindValue(":tel", $tel);
			$query->execute();
			$query2 = $db->prepare("DELETE FROM beschikbare_cadeaus WHERE CadeauID = $cadeauid");
			$query2->execute();
			if($query->rowCount() > 0 && $query2->rowCount() > 0){
				echo "Dankjewel voor je gift!";
			}
			else{
				echo "Oeps, iets ging fout in de database..";
			}
		}
		else{
			echo "Kies wel een cadeau!";
		}
	}
	else{?>
		<form method="post" action="">
				<?php
					foreach($db->query("SELECT * FROM beschikbare_cadeaus") as $rij){
						echo "<input type='radio' name='cadeauid' value='" . $rij["CadeauID"] . "' id='cadeau_" . $rij["CadeauID"] . "' />";
						echo "<label for='cadeau_" . $rij["CadeauID"] . "'>" . $rij["CadeauNaam"] . "</label><br/>";
					}

				?>
		<br/>
		<label for="naam">Naam: </label><input type="text" name="naam" id="naam" /><br/>
		<label for="naam">Email: </label><input type="text" name="mail" id="mail" /><br/>
		<label for="naam">Telefoonnummer: </label><input type="text" name="tel" id="tel" /><br/>
		<input type="submit" name="submit" value="OK!" />
		</form>
	<?php }
?>
</body>
</html>

Resultaat:

Snap_2012_12_19_at_11_54_29.png


Hopelijk krijg je hier een beetje een idee van hoe je het kan aanpakken.
 

Bijlagen

  • Snap_2012_12_19_at_11_51_10.png
    Snap_2012_12_19_at_11_51_10.png
    4,5 KB · Weergaven: 12
OK, bedankt
Zal dan dadelijk maar eens naar de bib fietsen om een boek over mysql, databases,... te halen... :)
 
Hoi Dries,
Leuk bedacht! :)

Zou het misschien een idee zijn om in plaats van "DELETE FROM beschikbare_cadeaus" (optie wordt uit de lijst gehaald) de gekozen optie uit te laten grijzen en onklikbaar te maken?
  • Voordeel: de gulle gevers zien wat al gekozen is ("dan wil ik niet achter blijven"), en dan wordt het naarmate de tijd verstrijkt niet zo'n heel mager lijstje.
  • Nadeel: als het bruidspaar kijkt, zien ze al waar ze op kunnen rekenen en is het geen verrassing meer. - Maar als ze eerst de hele lijst gezien hebben, en later bepaalde dingen verdwenen zijn, dan weten ze dat ook (bij een goed geheugen of een printer)...

Mogelijke workarounds: het webadres van de pagina als "geheime pagina" alleen meedelen aan de kandidaat-gevers, of het IP-adres van het bruidspaar (c.q. van elk van hen) te pakken zien te krijgen, en dan daarvoor de toegang tot de keuzepagina onmogelijk maken. De laatste is natuurlijk minder safe, want vanaf een andere pc kunnen ze het dan wel zien.

Succes!
Met vriendelijke groet,
CSShunter
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan