--
-- Table structure for table `account`
--
CREATE TABLE IF NOT EXISTS `account` (
`u_id` int(11) NOT NULL AUTO_INCREMENT,
`u_naam` varchar(250) NOT NULL,
`avatar` varchar(250) NOT NULL,
PRIMARY KEY (`u_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
--
-- Table structure for table `tickets`
--
CREATE TABLE IF NOT EXISTS `tickets` (
`token` CHAR(40) NOT NULL,
`ticket_naam` varchar(250) NOT NULL,
`ticket_datum` date NOT NULL,
`plaats` varchar(250) NOT NULL,
`prijs` int(2) NOT NULL,
`betaallink` varchar(250) NOT NULL,
`u_id` int(11) NOT NULL,
PRIMARY KEY (`token`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
?php
// retrieve token
if (isset($_GET["listing"]) && preg_match('/^[0-9A-F]{40}$/i', $_GET["listing"])) {
$token = $_GET["listing"];
}
else {
throw new Exception("niks gevonden");
}
// verify token
$query = $db->prepare("SELECT u_id, ticket_naam FROM tickets INNER JOIN account ON tickets.ticket_id = account.u_id WHERE token = ?");
$query->execute(array($token));
$row = $query->fetch(PDO::FETCH_ASSOC);
$query->closeCursor();
if ($row) {
extract($row);
}
else {
throw new Exception("niks gevonden");
}
$row["u_naam"];
$row["ticket_naam"];
?>
wat nou het idee moet wezen zodra ik 1 aanmaak wil ik dat die een aparte token code krijgt met link zodat je van de table users informatie leest en de tickets van die user die code kunnen mensen dan sturen zodat ze de pagina kunnen zien iemand tips/ of beetje op weg kan helpen
Nota bene, waarom zou je het user id uit de user tabel willen (be)trekken? Als je een echte relationele database hebt waarbij tickets.u_id een foreign key is naar de account-tabel dan is al gegarandeerd dat deze user bestaat. Het enige waar ik dan eventueel nog op zou controleren is of het account nog actief is (of geen "deleted" flag heeft ofzo) maar het is (dan) niet nodig om het user id te verifiëren via de user tabel. Op dit moment is het wat mij betreft dus nogal "loos" dat je de user tabel betrekt in je query.
Dat gezegd hebbende, ik denk dat je er (dus) ook verstandiger aan doet om hier een echte relationele database van te maken, te meer omdat dit een soort van administratief systeem betreft. De InnoDB-engine is hier bij uitstek geschikt voor (in tegenstelling tot de MyISAM engine). Ook zou ik een uitgebreidere character set/encoding gebruiken dan latin1.
Er valt nog aardig veel winst te pakken bij een ander (en m.i. beter) database-ontwerp.
EDIT je overschrijft nog steeds je eerste query ($sql). Het is niet nodig om een tweede variabele $sql1 te definiëren. Een fout is met zo'n variabele-naam snel gemaakt.
De flow is als volgt:
definieer query #1
voer query #1 uit
vraag autoincrement id op van query #1
definieer query #2 met gebruikmaking van dit id
voer query #2 uit
maar als ik nu bestandje tickets.php aanmaak
dan moet ik het via get oproepen toch.
maar hoe weet ik dan als de token link bij welk formulier hoort die ingevuld is,
zodat die data afleest
zou je misschien de sql query kunnen schrijven zodat ik een idee heb
Check Thomas zijn workflow eens?
Als je wilt controleren of een token van een ticket klopt, dan kan je die $_GET in de WHERE plaatsen. Uiteraard speelt het escapen hier ook weer een belangrijke rol.
ja alleen snap ik niet hoe ik die sql combineer
definieer query #1
voer query #1 uit
vraag autoincrement id op van query #1
definieer query #2 met gebruikmaking van dit id
voer query #2 uit
Je geeft de link ergens door, bijvoorbeeld via e-mail of via knippen en plakken bij wijze van test.
Vervolgens heb je een (ander) stuk code die dat allemaal weer uitleest, dat staat los van het bovenstaande.
Het helpt natuurlijk als je weet wat er precies in je database is gezet zodat je kunt testen en debuggen terwijl je iets aan het bouwen bent.
In het bovenstaande codefragment staat je link al:
http://example.com/tickets.php?listing=$result
Het gaat hierbij om $result, die plak je in de aanroep naar je tickets(.php) script. Maar die moet dan dus wel goed in de database staan en de validatie moet ook kloppen, anders kom je niet zover.
---
Laten we het over een andere boeg gooien. Het "invoer" script en het "uitlees" script zouden zelfs los van elkaar ontwikkeld kunnen worden als je een afspraak hebt over hoe je informatie doorgeeft. Dit ligt al grotendeels vast in de databasedefinitie.
Dus je zou zelfs met het uitleesscript kunnen beginnen zolang je maar wat testdata in je database hebt staan.
Oftewel: welke data staat er op dit moment in je database waar je mee aan de slag zou kunnen gaan?