Door
F Farmer
op 07-04-2011 09:04
gewijzigd op 07-04-2011 10:45
1.379 views
Ik heb waarschijnlijk een simpel vraagje, maar ik kom er niet uit.
De statement hieronder gebruik ik om een leenbon te maken.
Daar komt de voornaam, achternaam, datum, hardware op te staan. Alleen van tabel hardware haalt hij steeds het bovenste gegeven eruit i.p.v. de id nummer die gelijk is aan hardware_idhardware.
leenbon:
idleenbon voornaam achternaam datum hardware_idhardware
hardware
idhardware naam serienummer categorie_idcategorie statushardware_idstatus
$result = mysql_query( "SELECT leenbon.voornaam, leenbon.achternaam, leenbon.datum, hardware.naam FROM leenbon, hardware WHERE leenbon.hardware_idhardware = hardware.idhardware ORDER BY datum DESC LIMIT 1 " ) or die("SELECT Error: ".mysql_error());
statement werkt ook wel, alleen als ik een bon toevoeg dan laat hij altijd de hardware zien met het laagste ID nummer. Als ik LIMIT 1 weg haal dan zie ik i.p.v. 1 bon alle bonnen dus die moet wel blijven, want ik moet 1 bon zien.
Je moet 1 bon zien. Hoe omschrijf je de eisen voor die ene bon?
Hoe kwalificeer je die? Het laagste nummer is DESC LIMIT 1 en bijvoorbeeld het hoogste ASC LIMIT 1 maar zijn hoogste en laagste de juiste kwalificaties voor je oplossing?
Het klopt dat je alleen het laagste id terug krijgt.
Ik neem aan dat je opzoek bent naar een bepaalde Leenbon?
In je query haal je inderdaad alleen maar het laatste op en met een limit van 1.
Je query is dus niks mis mee, alleen geeft het niet de gewenste resultaat terug.
Mijn oplossing (als ik het goed heb wat je wilt)
<code>
$pQuery = mysql_query('
SELECT lb.voornaam, lb.achternaam, lb.datum, hw.naam
FROM hardware hw, leenbon lb
WHERE lb.hardware_idhardware = hw.idhardware
AND hw.name = '" . $_POST['voornaam'] . "'
ORDER BY datum DESC
');
</code>
Als je nu een formulier bouwt waar je een voornaam kan invoeren, dan filtert hij alle leenbonnen eruit met de ingevoerde voornaam + de ids die overeenkomen.
Je zou ook nog kunnen filteren op de status, of deze uitgeleende hardware al weer is terug gegeven of juist nog steeds niet terug is gegeven.
ORDER BY datum DESC gebruik ik zo dat ik de nieuwste bon krijg aan die bon is gekoppeld hardware_idhardware (foreign key), dat zelfde id nummer van tabel hardware de naam weergeven van de hardware.
Hoop dat dat een beetje duidelijk is, dus het hoogste lost niets op voor hardware, hardware_idhardware is gekoppeld aan idhardware en zo doende moet ik de naam van de hardware kunnen weergegeven nu geeft hij dus de naam weer met het laagste id nummer
[size=xsmall]Toevoeging op 07/04/2011 10:33:11:[/size]
Kevin van Boeckholtz ik zal even kijken bedankt voor de reacties
Je wilt dus de nieuwste bon zien van iemand aan wie hardware is uitgeleend?
Is dat de juiste omschrijving? Of wil je de nieuwste (meest recente) bon zien van een bepaald stuk hardware? Dit laatste heeft Kevin dus al omschreven. Nogmaals, omschrijf je functionele eis eerst goed en dan is het makkelijk om tot de query te geraken!
<h3>Leenbon</h3>
<?php
include("db_connect.php");
$result = mysql_query( "SELECT leenbon.voornaam, leenbon.achternaam, leenbon.datum, hardware.naam FROM leenbon, hardware WHERE leenbon.hardware_idhardware=hardware.idhardware ORDER BY datum DESC LIMIT 1 " ) or die("SELECT Error: ".mysql_error());
while ($row = mysql_fetch_array($result)){
echo "Datum: ";
echo $row['datum'];
echo "<br><br>";
echo "Naam: ";
echo $row['voornaam'] . " " . $row['achternaam'];
echo "<br><br>";
echo "Hardware: ";
echo $row['naam'];
echo "<br>";
}
mysql_close($link);
?>
[size=xsmall]Toevoeging op 07/04/2011 10:57:40:[/size]
John D op 07/04/2011 10:47:49
Je wilt dus de nieuwste bon zien van iemand aan wie hardware is uitgeleend?
Is dat de juiste omschrijving? Of wil je de nieuwste (meest recente) bon zien van een bepaald stuk hardware? Dit laatste heeft Kevin dus al omschreven. Nogmaals, omschrijf je functionele eis eerst goed en dan is het makkelijk om tot de query te geraken!
sorry dat het zo onduidelijk is..
Als ik een leenbon wil maken ga ik naar een formuliertje.
Daar type ik voornaam achternaam en selecteer ik een stukje hardware.
Als ik op submit druk, gaat die naar een andere pagina waar de leenbon op staat wat ik dan net heb aangemaakt. daarom laat ik de bon zien met de nieuwste datum, maar probleem is hij laat ook het nieuwste stukje hardware zien.
Je vult dus een formulier in en je kiest uit te lenen hardware erbij.
Je submit dit en toont het geheel op de volgende pagina en dan staat de verkeerde hardware erbij. Is dat een juiste conclusie? Wordt dan het hardware_idhardware wel geod opgeslagen bij de leenbon??