Probleem in where-opdracht

Status
Niet open voor verdere reacties.

sewtrix

Gebruiker
Lid geworden
28 mei 2011
Berichten
10
Ik zit met volgend probleem,
als de gebruiker in een formulier een waarde opgeeft voor nummer bv.: 14 (zie code)

<form method="post" action="zoeknummer.php">
Nr <input type="text" name="Nr"><br />
<input type ="submit" value ="zoeken">
</form>

Dan opent de pagina "zoeknummer.php"

PHP:
<?php
include ("verbinding.php")
$SQL_statement="SELECT * FROM tblNummers WHERE Nummer = $GET(NR);";
$resultset=mysql_query($SQL_statement);
?>

Ik denk dat het probleem in mijn WHERE opdracht zit, maar ik ben al eindeloos aan het zoeken geweest maar vind het probleem niet?
 
Er zijn twee probleempjes :) De eerste is dat variabele $_GET heet en niet $GET. De tweede is dat je geen arrays aan mag spreken binnen een string, en je dus de aanroep naar $_GET buiten de aanhalingstekens moet zetten en de boel aan elkaar moet plakken met . operators.

Een kleinigheidje is nog dat array keys strings zijn, en dat daar dus ook aanhalingstekens omheen moeten staan.
 
Er zijn twee probleempjes :) De eerste is dat variabele $_GET heet en niet $GET. De tweede is dat je geen arrays aan mag spreken binnen een string, en je dus de aanroep naar $_GET buiten de aanhalingstekens moet zetten en de boel aan elkaar moet plakken met . operators.

Een kleinigheidje is nog dat array keys strings zijn, en dat daar dus ook aanhalingstekens omheen moeten staan.

Zou je dat even willen voordoen? Ik gebruik geen PHP alleen voor dit klein stukje code ...
 
PHP:
$SQL_statement="SELECT * FROM tblNummers WHERE Nummer = " . (int) $_GET['Nr'];

Zo is ie goed en veilig. Maar houd er dan wel rekening mee dat het wel iets doet, maar niks laat zien. Dus de data wordt wel opgehaald maar niet getoond aan de gebruiker.

Ik weet niet wat je er verder mee wil doen.
 
PHP:
$SQL_statement="SELECT * FROM tblNummers WHERE Nummer = " . (int) $_GET['Nr'];

Zo is ie goed en veilig. Maar houd er dan wel rekening mee dat het wel iets doet, maar niks laat zien. Dus de data wordt wel opgehaald maar niet getoond aan de gebruiker.

Ik weet niet wat je er verder mee wil doen.

Dat de nummer in kwestie getoond word samen met de gegevens die bij die nr horen
 
Een derde probleem is dat je formulier verzonden wordt met method "POST", dus moet je $_POST['Nr'] gebruiken i.p.v. $_GET['Nr'].
 
Goed punt.

Anyway het lijkt erop dat je nog het een en ander over PHP en SQL moet gaan leren sewtrix want als je het ook nog wil tonen (en dan ook nog een beetje leesbaar en misschien met een layout oid) dan moet je nog wel een paar dingen uitvogelen.
 
Goed punt.

Anyway het lijkt erop dat je nog het een en ander over PHP en SQL moet gaan leren sewtrix want als je het ook nog wil tonen (en dan ook nog een beetje leesbaar en misschien met een layout oid) dan moet je nog wel een paar dingen uitvogelen.

Oh ok, ik dacht het gewoon met een echo te kunnen oplossen :p
 
Als je HTML kunt en het bij een rij blijft kan het wel met echo, hoewel je dan geen fout afhandeling hebt waarschijnlijk. Je kunt het altijd proberen natuurlijk ;)
 
Als je HTML kunt en het bij een rij blijft kan het wel met echo, hoewel je dan geen fout afhandeling hebt waarschijnlijk. Je kunt het altijd proberen natuurlijk ;)

Haha, zal het proberen, moest het lukken zal ik het je laten weten :D
 
Haha, zal het proberen, moest het lukken zal ik het je laten weten :D

Het werkt, maar ik heb nog een vraagje, gaat het om 2 opdrachten in een where opdracht te zetten? Dit is mijn voorlopige code:

PHP:
$SQL_statement="SELECT * FROM tblNummers WHERE nummer, Naam = " . (int) $_POST['nummer'], $_POST['Naam'];
 
Laatst bewerkt:
ligt er maar net aan waar de query aan moet voldoen
OR:
$SQL_statement="SELECT * FROM overzichtLeveranciers WHERE nummer = " . (int) $_POST['nummer']." OR Naam ". $_POST['Naam'];

AND:
$SQL_statement="SELECT * FROM overzichtLeveranciers WHERE nummer = " . (int) $_POST['nummer']." AND Naam ". $_POST['Naam'];
 
ligt er maar net aan waar de query aan moet voldoen
OR:
$SQL_statement="SELECT * FROM overzichtLeveranciers WHERE nummer = " . (int) $_POST['nummer']." OR Naam ". $_POST['Naam'];

AND:
$SQL_statement="SELECT * FROM overzichtLeveranciers WHERE nummer = " . (int) $_POST['nummer']." AND Naam ". $_POST['Naam'];

Kreeg een foutmelding bij alle 2
mysql_fetch_array() expects parameter 1 to be resource,
 
Er moet nog een '='-teken achter Naam:
...Naam=". $_POST['Naam'];
 
ach ja, copy & past en niet nalezen!
Maar dat zijn wel leuke foutje om te debuggen
 
ach ja, copy & past en niet nalezen!
Maar dat zijn wel leuke foutje om te debuggen

Blijft een foutje in mijn array:
Dit is het formulier dat verzonden wordt:

<form method="post" action="zoeknummer.php">
nummer <input type="text" name="nummer"><br />
naam <input type="text" name="naam"><br />
<input type ="submit" value ="zoeken">

En dit is zoeknummer.php
PHP:
<?php
include ("verbinding.php")
$SQL_statement="SELECT * FROM tblNummers WHERE nummer = " . (int) $_POST['nummer']." AND naam = ". $_POST['naam']; 
$resultset=mysql_query($SQL_statement);
echo "<table border='1'>
<tr>
<th>Nr</th>
<th>Nummer</th>
<th>naam</th>
</tr>";
while($data=mysql_fetch_array($resultset)){
echo "<tr>";
echo "<td>" . $data['Nummer'] . "</td>";
echo "<td>" . $data['nummer'] . "</td>";
echo "<td>" . $data['naam'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysql_close();
?>

Dit is het enigste waar ik PHP nodig heb, voor de rest gebruik ik het niet dus ik hoop dat jullie mij kunnen helpen. Ik krijg volgende fout:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given
 
sorry, $_POST['naam'] is een string, die moet in quots
naam = '". $_POST['naam']."'";
 
sorry, $_POST['naam'] is een string, die moet in quots
naam = '". $_POST['naam']."'";

Ok het werkt, nog 1 klein vraagje moesten er nu geen velden overeenkomen, dat er een melding komt van geen resultaat gevonden, hoe doe ik dat?
 
Met mysql_num_rows controleren hoeveel resultaten er zijn. Als het er nul zijn toon je die melding, anders de code die je nu hebt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan