--
-- 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
Volgens mij gaat het erom dat je geen variabelen moet nummeren, zeg gewoon wat ze doen.
En mysqli_query werkt niet meet meerdere queries inéén.
Dus voer twee aparte mysqli_query() uit met je INSERT.
if (mysqli_query($conn, $sql ,$sql1)) {
is dit is dus onzin. Leuk bedacht, maar gaat niet werken.
Bij twijfel: Check php.net/{functienaam} en bekijk de mogelijkheden en syntax.
Je hebt sowieso informatie van het resultaat van de eerste query nodig in de tweede query.
Het is dus zaak dat je de eerste query eerst uitvoert. Daarna zou je $sql prima kunnen hergebruiken, of je plaatst de query-tekst meteen in de aanroep, dan heb je niet eens een variabele nodig.
Maar ik heb ff terug zitten kijken in jouw historie.
Ik denk dat het voor de beeldvorming handig is als je hier gewoon even stap voor stap doorheen gaat en niet alles tegelijkertijd probeert te doen. Debug waarden, kijk of INSERTs slagen en of er iets in de database zit.
Begin eens met het uitvoeren van één INSERT-query. De documentatie is hier niet direct heel duidelijk over, maar met behulp van mysqli_insert_id() kun je het auto-increment id van het laatst geINSERTe record opvragen. Deze stop je vervolgens in je tweede query.
Dat mysql_insert_id() is de "vraag autoincrement id op van query #1"-stap uit het bovenstaande boodschappenlijstje. Als je deze gewoon stap voor stap implementeert ben je klaar (althans, met het invoer-deel). En zo zou je in zijn algemeenheid ook code moeten ontwikkelen. Bedenk eerst WAT je gaat doen, en vul het dan simpelweg een voor een in.
Ja, maar gebruik dan fatsoenlijke variabele-namen i.p.v. een nietszeggende $sql en $sql1.
En vergeet de mysqli_real_escape_string() niet!!!
Die "Niks gevonden" slaat ook nergens op, omdat een INSERT querie niks zoekt. Dat doet SELECT.
En dan alsnog controleer je in het geval van een SELECT met een mysqli_num_rows() of een record bestaat.
Merk op: rand() genereert waarden in een relatief klein bereik. Je maakt er met sha256 wel een lekkere lange "random" string van, maar die is dus niet zo random als dat ie eruit ziet. Je kunt dan beter in een loopje en met random_int() echt willekeurig karakters achter elkaar zetten: