If }ELSE{ foutje wie ziet hem
Ik heb een database met de volgende indeling .id.cat.sub1.sub2.enz.enz
nu wil ik dat als sub 1 leeg is dat hij zegt dat het leeg is en anders verder gaat.
met de code zoals ik die nu heb loopt het scrip altijd door dit is de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
error_reporting(E_ALL ^ E_NOTICE);
$idis = $_GET['id'];
$result = mysql_query("SELECT sub1 FROM shop_cat WHERE id=$idis");
$num_rows = mysql_num_rows($result);
if ( $num_rows == 0 ) {
echo "sub1 is leeg!";
} else {
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo "het script loopt door!";
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}}
?>
error_reporting(E_ALL ^ E_NOTICE);
$idis = $_GET['id'];
$result = mysql_query("SELECT sub1 FROM shop_cat WHERE id=$idis");
$num_rows = mysql_num_rows($result);
if ( $num_rows == 0 ) {
echo "sub1 is leeg!";
} else {
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo "het script loopt door!";
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}}
?>
deze roep ik op door index.php?pagina=shopnav&id=3
de tabel heet shop_cat
wie kan mij vertellen wat ik fout doe
Gewijzigd op 01/01/1970 01:00:00 door Roy
wat heb je al geprobeerd, bijv. bij die 0 een '0' van maken, gewoon een beetje uitproberen, dan lukt het bijna altijd.
Verder controleer je nergens of de query wel is gelukt, de variabele $_GET['id'] wel een juiste waarde heeft, etc. etc.
Kortom, het script is nog niet eens klaar om te worden getest. Ga de ontbrekende code eerst toevoegen en ga dan pas testen. Scheelt een hele berg tijd.
Succes
deze roep ik op door index.php?pagina=shopnav&id=1 volledig vol 3 subs
deze roep ik op door index.php?pagina=shopnav&id=2 volledig vol 3 subs
deze roep ik op door index.php?pagina=shopnav&id=3 bij deze is sub1 leeg maar script loopt toch door
deze roep ik op door index.php?pagina=shopnav&id=4 deze is helemaal leeg en geeft sub1 is leeg
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$idis = $_GET['id'];
$result = mysql_query("SELECT sub1 FROM shop_cat WHERE id=$idis");
$num_rows = mysql_num_rows($result);
if ( $num_rows == 0 ) {
echo "sub1 is leeg!";
echo "$idis";
} else {
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo "het script loopt door!";
echo "$idis";
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}}
?>
$idis = $_GET['id'];
$result = mysql_query("SELECT sub1 FROM shop_cat WHERE id=$idis");
$num_rows = mysql_num_rows($result);
if ( $num_rows == 0 ) {
echo "sub1 is leeg!";
echo "$idis";
} else {
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo "het script loopt door!";
echo "$idis";
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}}
?>
Het script is wel af hoor hij doet alleen niet wat ik wil het enige wat hij moet doen is kijken of sub1 vol of leeg is bij het bijhorende id.
2) Waarom 2 queries wanneer je er slecht 1 nodig hebt? Wanneer het id niet bestaat, worden er geen resultaten opgeleverd. Niets bijzonders, dat is normaal gedrag van een script. Je weet namelijk helemaal NOOIT of er wel resultaten zijn. In de resultset check je dus of er resultaten zijn, je gaat niet eerst checken of er resultaten zijn en dan nogmaals een query uitvoeren om de resultaten op te halen. Er is niet eens een garantie dat de 2e query resultaten zal opleveren!
Kortom, de eerste query gooi je weg en de 2e breid je uit met foutafhandeling en een check op het aantal records.
dit is mijn orginele code.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$idis = $_GET['id'];
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}
?>
$idis = $_GET['id'];
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}
?>
deze code werkt goed
enige wat ik wil is dat er gekeken word in de mysql db of het veld sub1 leeg is en als dat het geval is dat hij zegt sub1 is leeg.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
error_reporting(E_ALL ^ E_NOTICE);
$idis = $_GET['id'];
$query = mysql_query("SELECT sub1 FROM shop_cat WHERE id=$idis");
$var = mysql_fetch_array($query);
if ($var[sub1] == "") {
echo "sub1 is leeg!";
} else {
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}}
?>
error_reporting(E_ALL ^ E_NOTICE);
$idis = $_GET['id'];
$query = mysql_query("SELECT sub1 FROM shop_cat WHERE id=$idis");
$var = mysql_fetch_array($query);
if ($var[sub1] == "") {
echo "sub1 is leeg!";
} else {
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
while($row = mysql_fetch_object($res)){
echo '<a href="index.php?pagina=shop&sub='.$row->sub1.'">'.$row->sub1.'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row->sub2.'">'.$row->sub2.'</br></a>';
}}
?>
dit werkt
Gewijzigd op 01/01/1970 01:00:00 door roy
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
error_reporting(E_ALL);
$idis = mysql_real_escape_string($_GET['id']); // veiligheid!!!
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
if(!res){ // query mislukt
echo mysql_error();
}
elseif(mysql_num_rows($res) == 0){
echo "sub1 is leeg!";
}
else {
while($row = mysql_fetch_assoc($res)){
echo '<a href="index.php?pagina=shop&sub='.$row['sub1'].'">'.$row['sub1'].'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row['sub2'].'">'.$row['sub2'].'</br></a>';
}
}
?>
error_reporting(E_ALL);
$idis = mysql_real_escape_string($_GET['id']); // veiligheid!!!
$sql = "SELECT * FROM shop_cat WHERE id=$idis";
$res = mysql_query($sql);
if(!res){ // query mislukt
echo mysql_error();
}
elseif(mysql_num_rows($res) == 0){
echo "sub1 is leeg!";
}
else {
while($row = mysql_fetch_assoc($res)){
echo '<a href="index.php?pagina=shop&sub='.$row['sub1'].'">'.$row['sub1'].'</br></a>';
echo '<a href="index.php?pagina=shop&sub='.$row['sub2'].'">'.$row['sub2'].'</br></a>';
}
}
?>
Nu heb je een beginnetje van de foutafhandeling, geen SQL-injection (dat wil je echt niet!) en de code is eenvoudiger doordat je slechts 1 query nodig hebt. Wat wil je nog meer?