Hallo,

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:

<?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>';
}}
?>

deze roep ik op door index.php?pagina=shopnav&id=3
de tabel heet shop_cat

wie kan mij vertellen wat ik fout doe
wat heb je al geprobeerd, bijv. bij die 0 een '0' van maken, gewoon een beetje uitproberen, dan lukt het bijna altijd.
Je hebt een bug, maar het debuggen maak je extra moeilijk door notices te onderdrukken. Het is maar waar je zin in hebt!

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
<?
if ( !$num_rows ) {
print 'sub1 is leeg';
} else {
//go on
}
?>

proberen waard...
Die GET['id']; werkt want ik heb dit er ff ingezet:

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


<?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>';
}}
?>

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.
1) De code is nog lang klaar om te worden getest (reeds gezegd)
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.
volgens mij begrijpen jullie niet wat ik wil.

dit is mijn orginele code.

<?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>';
}
?>

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.
lama heb al wat anders waarmee het gaat lukken

<?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>';
}}
?>

dit werkt
Dat zal wel werken, maar waarom wil je persé 2 queries uitvoeren? Je kunt zonder problemen alleen de 2e query uitvoeren en exact dezelfde gegevens op het scherm krijgen als wat je nu krijgt door 2 queries uit te voeren.

<?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>';
}
}
?>
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?

Reageren