SQL statement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

F Farmer

F Farmer

07/04/2011 09:04:56
Quote Anchor link
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



Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
 
PHP hulp

PHP hulp

15/11/2024 03:24:16
 
John D

John D

07/04/2011 09:19:43
Quote Anchor link
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.
 
F Farmer

F Farmer

07/04/2011 09:54:38
Quote Anchor link
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.
 
John D

John D

07/04/2011 10:21:49
Quote Anchor link
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?
 
Kevin van Boeckholtz

Kevin van Boeckholtz

07/04/2011 10:28:33
Quote Anchor link
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.

Hoop dat je hier wat aan hebt.
 
F Farmer

F Farmer

07/04/2011 10:31:43
Quote Anchor link
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

Toevoeging op 07/04/2011 10:33:11:

Kevin van Boeckholtz ik zal even kijken bedankt voor de reacties
 
John D

John D

07/04/2011 10:47:49
Quote Anchor link
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!
 
F Farmer

F Farmer

07/04/2011 10:52:08
Quote Anchor link
Ik stuur mijn scriptjes die ik gebruik voor de leenbon:

bon.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<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>



__________________________


bon_invoegen.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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)
PHP script in nieuw venster Selecteer het PHP script
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
<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);

?>



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!


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
 
John D

John D

07/04/2011 12:58:08
Quote Anchor link
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??
 
F Farmer

F Farmer

07/04/2011 13:15:56
Quote Anchor link
Ja dat is de juiste conclusie, in de database wordt alles goed opgeslagen, dus het licht aan mijn statement
 
John D

John D

07/04/2011 14:05:24
Quote Anchor link
Is misschien je fout dat je van dezelfde hardware_id meerdere records hebt in de hardware tabel?
 
F Farmer

F Farmer

07/04/2011 14:29:07
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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



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)
PHP script in nieuw venster Selecteer het PHP script
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
 
Kevin van Boeckholtz

Kevin van Boeckholtz

07/04/2011 15:52:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Gewijzigd op 07/04/2011 15:53:05 door Kevin van Boeckholtz
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.