SQL statement
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
Code (php)
1
$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());
Weet iemand hoe ik de statement moet veranderen?
Gewijzigd op 07/04/2011 10:45:35 door F Farmer
Op het eerste gezicht lijkt je statement goed, haal de LIMIT 1 er eens uit en kijk wat je krijgt? Zet even code tags om je code.
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.
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?
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.
Hoop dat je hier wat aan hebt.
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
Toevoeging op 07/04/2011 10:33:11:
Kevin van Boeckholtz ik zal even kijken bedankt voor de reacties
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!
bon.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<h3>Leenbon maken</h3>
<form method="POST" action="bon_invoegen.php">
<?php
print "Typ voornaam:<br> <input type=text name=voornaam size=30><br>";
print "Typ achternaam: <input type=text name=achternaam size=30><br>";
include("db_connect.php");
$sql="SELECT idhardware, naam FROM hardware WHERE statushardware_idstatus ='1' ";
$result=mysql_query($sql);
$options="";
while ($row=mysql_fetch_array($result)) {
$id=$row["idhardware"];
$naam=$row["naam"];
$options.="<OPTION VALUE=\"$id\">".$naam.'</option>';
}
?>
selecteer hardware:<br>
<SELECT NAME=hardware_idhardware>
<?php echo $options?>
</SELECT>
<?php
print "<br>";
print "<input type=submit value=Toevoegen>";
?>
</form>
</td></tr>
<form method="POST" action="bon_invoegen.php">
<?php
print "Typ voornaam:<br> <input type=text name=voornaam size=30><br>";
print "Typ achternaam: <input type=text name=achternaam size=30><br>";
include("db_connect.php");
$sql="SELECT idhardware, naam FROM hardware WHERE statushardware_idstatus ='1' ";
$result=mysql_query($sql);
$options="";
while ($row=mysql_fetch_array($result)) {
$id=$row["idhardware"];
$naam=$row["naam"];
$options.="<OPTION VALUE=\"$id\">".$naam.'</option>';
}
?>
selecteer hardware:<br>
<SELECT NAME=hardware_idhardware>
<?php echo $options?>
</SELECT>
<?php
print "<br>";
print "<input type=submit value=Toevoegen>";
?>
</form>
</td></tr>
__________________________
bon_invoegen.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
include("db_connect.php");
$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];
$hardware_idhardware=$_POST['hardware_idhardware'];
$datetime = date('d-m-Y');
$result=mysql_query("INSERT INTO leenbon (voornaam, achternaam, datum, hardware_idhardware) VALUES (
'$voornaam','$achternaam','$datetime','$hardware_idhardware')") or die("Insert Error: ".mysql_error());
mysql_query("
UPDATE
hardware
SET
statushardware_idstatus = '2'
WHERE
idhardware = '". $hardware_idhardware ."'
");
mysql_close($link);
print "<font color='green'><b>Leenbon toegevoegd</b><br><br>";
header("Location: print.php");
?>
include("db_connect.php");
$voornaam=$_POST['voornaam'];
$achternaam=$_POST['achternaam'];
$hardware_idhardware=$_POST['hardware_idhardware'];
$datetime = date('d-m-Y');
$result=mysql_query("INSERT INTO leenbon (voornaam, achternaam, datum, hardware_idhardware) VALUES (
'$voornaam','$achternaam','$datetime','$hardware_idhardware')") or die("Insert Error: ".mysql_error());
mysql_query("
UPDATE
hardware
SET
statushardware_idstatus = '2'
WHERE
idhardware = '". $hardware_idhardware ."'
");
mysql_close($link);
print "<font color='green'><b>Leenbon toegevoegd</b><br><br>";
header("Location: print.php");
?>
_________________
print.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<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);
?>
<?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);
?>
Toevoeging op 07/04/2011 10:57:40:
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!
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.
hoop dat het nu een beetje duidelijker is.
Gewijzigd op 07/04/2011 12:46:01 door F Farmer
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??
Ja dat is de juiste conclusie, in de database wordt alles goed opgeslagen, dus het licht aan mijn statement
Is misschien je fout dat je van dezelfde hardware_id meerdere records hebt in de hardware tabel?
Code (php)
1
2
3
4
2
3
4
idleenbon voornaam achternaam datum hardware_idhardware
79 F Farmer 07-04-2011 42
80 F Farmer 07-04-2011 43
81 F Farmer 07-04-2011 44
79 F Farmer 07-04-2011 42
80 F Farmer 07-04-2011 43
81 F Farmer 07-04-2011 44
Code (php)
1
2
3
4
2
3
4
idhardware naam serienummer categorie_idcategorie statushardware_idstatus
42 Toshiba S1 123e4f3 19 2
43 Toshiba S2 3345o347 19 2
44 Toshiba S3 3345o347 19 2
42 Toshiba S1 123e4f3 19 2
43 Toshiba S2 3345o347 19 2
44 Toshiba S3 3345o347 19 2
een klein deeltje van de tabel leenbon en hardware gekopieerd, daar is niks mis mee. Als ik dan nu een een bonnetje aanmaak zou hij altijd zeggen dat Toshiba S1 de uitgeleende hardware is
Toevoeging op 07/04/2011 14:32:24:
En
met deze statement laat hij de hardware wel goed zien, maar dan zie je alle leenbonnen onder elkaar:
Code (php)
1
$result = mysql_query( "SELECT leenbon.voornaam, leenbon.achternaam, leenbon.unummer, leenbon.datum, hardware.naam FROM leenbon, hardware WHERE leenbon.hardware_idhardware=hardware.idhardware ORDER BY datum DESC " ) or die("SELECT Error: ".mysql_error());
Gewijzigd op 07/04/2011 14:44:43 door F Farmer
Gewijzigd op 07/04/2011 15:53:05 door Kevin van Boeckholtz