Momenteel ben ik bezig met een master/detail page.
Uit de DB haal ik enkele info op zoals naam, productie en verloop datum op.
Van deze naam heb ik een link gemaakt. En wanneer ik klik op naam, wil ik meer gegevens uit DB halen die daarbij horen. Helaas ben ik hiermee 2 dagen mee bezig en het lukt me niet om het op te lossen. Ikzelf heb het idee dat het een syntax issue is, maar ik kom er niet uit.
Hopelijk kan iemand mij voorzien van een waardevolle feedback.
Waarom al die extra variabelen aanmaken?
HTML gebruikt dubbele quotes (").
Hou vars buiten de php-quotes.
<?php
echo '<table width="70%" border="solid 1px">';
echo '<tr><th>Name</th><th>Production_Date</th><th>Expire_Date</th><th>Edit</th><th>Delete</th></tr>';
while ($row2 = mysqli_fetch_assoc($result2))
{
echo '<tr>';
echo'<td><a href="med_detail.php?id='.$row2['med_id'].'">'.$row2['med_name'].'</a></td>' .
'<td>'.$row2['med_create_date'].'</td>' .
'<td>'.$row2['med_expire_date'].'</td>' .
'<td><a href="edit.php?id='.$row2['med_id'].'">Edit</a></td>' .
'<td><a href="delete.php?id='.$row2['med_id'].'">Delete</a></td>';
echo '</tr>';
}
echo '</table>';
?>
Ik heb bij de eerste <a> ook het id gebruikt, waar jij de name gebruikte.
SanThe, het grootste probleem is dat Mohamed de GET waarde gebruikt met de naam, medicine_name, maar heeft toegewezen aan, id.
Daarbij probeert hij deze aan te roepen, zonder er iets mee te doen. (toewijzen, echo,of wat dan ook)
Daarnaast doe je er misschien verstandig aan om je output te escapen, zowel in queries (middels een real_escape() functie) alsook in je HTML (via htmlspecialchars()).
En wat @Dennis zegt: je hebt weinig aan een doorgegeven medicijnnaam als je verder alles op grond van id doet.
Bedankt voor jullie snelle reacties.
Ik heb deels jullie verbeteringen aangebracht, helaas krijg ik nog steeds dezelfde foutmelding, nl:
Parse error: syntax error, unexpected '$_GET' (T_VARIABLE) in D:\xampp\htdocs\inventory_test\med_detail.php on line 5
Helaas heb ik nu een andere foutmelding en dat is:
Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in D:\xampp\htdocs\inventory_test\med_detail.php on line 21
Ik ga nog even verder zoeken.
Wanneer ik een update heb, zal ik het hier plaatsen.
tnx!
[size=xsmall]Toevoeging op 17/08/2016 15:26:36:[/size]
Update:
Het tweede probleem heb ik nu ook opgelost:
Door de query te controleren of het gelukt is of niet :-)
vernieuwde code:
<?php
if(isset($_GET['id'])){
$id = $_GET['id'];
$query3 = "SELECT * FROM medicines ";
$query3 .="WHERE med_id=$id";
$result3 = mysqli_query($connection,$query3);
} else {
echo "No medicine has been chosen";
}
if($result3 === false){
die (mysqli_error($connection));
}
?>
Bedankt allemaal voor het meedenken!
Variabelen overschrijven is nergens voor nodig, en het zorgt zelfs voor verwarring.
Tevens kloppen je quotes niet, en mist er goede beveiliging m.b.v. escaping in je query. ZOnder dit ben je heel vatbaar voor SQL-injection wat veel gebruikt wordt bij hacking.
Ik heb de code even verbeterd.
<?php
if(isset($_GET['id'])){
$query3 = "SELECT * FROM medicines WHERE ID='".mysqli_real_escape_string($connection, $_GET['id'])."'";
$result3 = mysqli_query($connection,$query3);
?>
Een tipje: Vermijd nummers in je variabelen. Weet jij straks nog wat $query3 doet? Geen gewoon een duidelijke naam die aangeeft wat je ophaalt.