Hallo,
ik ben bezig met een systeem

--  
 -- 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
de token genereert ook automatisch
de gebruikersnaam kunnen ze sowieso niet aanpassen
heb het nou als volgende

<?php
include 'config.php';
if (!isset ($_GET['listing'])) // if not isset
$token = $_GET["listing"];
{
  $_GET['listing'] = 1;
    
}
$sql = " ";
$result = $conn->query($sql);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {
        echo "naam: " . $row["naam"]. " - ticket_titel: " . $row["ticket_titel"]. " " . $row["avatar"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>

maar hoe zou ik de sql query moeten uitvoeren
gaat via een join denk ik ?
want wil de data ophalen van de toko code die bij de gebruiker hoort en daarna de gegevens van de gebruiker uitvoeren
Als je data uit een of meerdere tabellen wilt halen, en hier een relatie tussen zit, dan is een JOIN noodzakelijk.
dus zoiets


$sql2 = "SELECT * FROM account INNER JOIN tickets ON account.u_naam = '" . $row['u_naam'] . "'" WHERE tickets.token = '" . $row['token'] . "'";
Maar.... Waarom op naam, en niet op ID koppellen? Stel dat iemand zijn naam veranderd? Nu moet je dat in je hele database doen. Niet handig.
de functie naam veranderen bouw ik er niet in, dus dat maakt niet uit
krijg de volgende foutmelding
Parse error: syntax error, unexpected 'WHERE' (T_STRING) in C:\xampp\htdocs\lees.php on line 9
Dan doe je wat fout. Als je een goede editor hebt moet je de fout wel kunnen zien.
Dus kom eens met wat code.

<?php
include 'config.php';
if (!isset ($_GET['listing'])) // if not isset
$token = $_GET["listing"];
{
  $_GET['listing'] = 1;
    
}
$sql = "SELECT * FROM account INNER JOIN tickets ON account.u_naam = '" . $row['u_naam'] . "'" WHERE tickets.token = '" . $row['token'] . "'"; 

$result = $conn->query($sql);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {
        echo "naam: " . $row["naam"]. " - ticket_titel: " . $row["ticket_titel"]. " " . $row["avatar"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
Je ziet aan de hightlighting dat het inderdaad verkeerd gaat.
Hak je query anders eens in meerdere lijnen:


<?php
$sql = "
SELECT * FROM account 
INNER JOIN tickets ON account.u_naam = '" . $row['u_naam'] . "'" 
WHERE tickets.token = '" . $row['token'] . "'"; 
";
?>

En dan zie je dat je op lijn 4 een double-quote teveel hebt:


<?php
$sql = "
SELECT * FROM account 
INNER JOIN tickets ON account.u_naam = '" . $row['u_naam'] . "'
WHERE tickets.token = '" . $row['token'] . "'"; 
";
?>
krijg nou deze fout
Parse error: syntax error, unexpected 'naam' (T_STRING) in C:\xampp\htdocs\lees.php on line 20


echo "naam: '".$row["naam"]."' - ticket_titel: '".$row["ticket_titel"]."','".$row["avatar"]."'<br>";



Notice: Undefined variable: row in C:\xampp\htdocs\lees.php on line 11

Notice: Undefined variable: row in C:\xampp\htdocs\lees.php on line 12


<?php
include 'config.php';
if (!isset ($_GET['listing'])) // if not isset
$token = $_GET["listing"];
{
  $_GET['listing'] = 1;
    
}
$sql = "
SELECT * FROM account
INNER JOIN tickets ON account.u_naam = '".$row['u_naam']."'
WHERE tickets.token = '" . $row['token'] . "'";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

    while($row = $result->fetch_assoc()) {
        echo "naam: '".$row["naam"]."' - ticket_titel: '".$row["ticket_titel"]."','".$row["avatar"]."'<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?>
Kan je ook in stukken hakken, en dan heb je minder spaghetti.

Met respect dat je dingen vraagt, maar er is niks mis om zelf ook wat te proberen, en het probleem te onderzoeken door het te analyseren en te debuggen.

Wat Undefined variable: row betekent, hoef ik nu hopelijk vast niet meer uit te leggen. Probeer goed te snappen wat je doet, en niet lukraak wat te proberen!

Reageren