If werkt niet op resultset ?
ik doe een query op een tabel en die geeft terug 0 of >0 records. In beide gevallen doe ik iets.
Code ziet er zo uit:
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
$sql=mysqli_connect('localhost','root','xx','yy');
$result = mysqli_query($sql,"SELECT distinct Type, Gender FROM xxx WHERE Gender='Dames' AND Category = '" . $Var . "' AND Type<>'' ORDER BY Type");
$recs = mysqli_num_rows($result); //tijdelijk
$row = mysqli_fetch_array($result);
if ($recs == 0) {
hier doe ik A....
}
else
{
hier doe ik B....
}
}
$sql->close();
Bij 1 of meer records wordt er gewoon B, echter als er 0 records zijn wordt A
nooit uitgevoerd. Wat is er fout aan de "if"??
Hulp is welkom, Ger.
Verder kan je natuurlijk ook even debuggen wat $recs teruggeeft.
Bedankt Aar voor je antwoord. Als $recs 0 teruggeeft, wordt A NIET uitgevoerd.
En de foutafhandeling?
Is er NIET aan de voorwaarden voldaan dan krijg ik 0 records terug. (Query dus geslaagd).
In dat laatste geval moet dus A worden uitgevoerd en dat gebeurt niet. Het script slaat dan als het
ware de "if" over en doet NIET de else. Dat is wat me zo verbaast !
Het lijkt me, dat door het slagen van de query de foutafhandeling is beeindigd.
Haal die regel dus weg en zet hem in de else.
@SanThe, mee eens, maar dat lost het probleem niet op.
Wat geeft echo $recs; als je dat op regel 7 zet?
Als ik de if verander in
(dus zou uitgevoerd moeten worden bij 1 of meer records) en als ik dat
test voert het script ook weer de "if" niet uit. Er is iets fout in de
syntax, maar ik wil graag weten wat !
Toevoeging op 14/07/2014 15:27:06:
- SanThe - op 14/07/2014 15:14:42:
Wat geeft echo $recs; als je dat op regel 7 zet?
Geeft 0 records, als aan de voorwaarden NIET wordt voldaan en
geeft x records, als aan de voorwaarden WEL wordt voldaan.
Dus precies hetzelfde !
Bij 1 of meer records wordt er gewoon B, echter als er 0 records zijn wordt A
[/qoute]
Toont hij bij 0 dan wel B?
Zo niet dan zit je fout in het stukje waar jij zegt "hier doe ik A...."
Klopt, bij 0 wordt geen B gedaan. En wat er fout zit in dat stukje bij A is
mij een raadsel: het volgende staat er, maar een gewone "echo" wordt ook
helemaal niet getoond bij 0.
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
if ($recs == 0) {
// echo "eindelijk 0";
echo "<script>";
echo "geentypegevonden();";
echo "</script>";
}
else
{
// echo "eindelijk 0";
echo "<script>";
echo "geentypegevonden();";
echo "</script>";
}
else
{
Er moet gewoon een javascript worden uitgevoerd, maar ook al haal ik dat
weg en laat alleen "echo "eindelijk 0";" staan, doet hij ook niks bij 0.
Probeer eens te debuggen met echo's in plaats van met javascript.
Pipo Clown op 14/07/2014 17:25:02:
Euh, je probeert met PHP (= serverside) een javascript (= clientside) uit te voeren ?
Probeer eens te debuggen met echo's in plaats van met javascript.
Probeer eens te debuggen met echo's in plaats van met javascript.
Ik wil idd een javascript uitvoeren, niet om te debuggen, maar om gebruiker een alert
te tonen. Daar is volgens mij niks mis mee, of vergis ik me nou ? M.a.w. de uitvoering na de
"if" is niet om te debuggen, maar wat er normaal in het script staat. Het probleem is echter,
dat het NIET wordt uitgevoerd !!!! wanneer de $recs-waarde 0 is !
Toevoeging op 14/07/2014 18:31:57:
Ok, de zaak lijkt opgelost, nl:
De "if" wordt wel degelijk uitgevoerd, maar de verwijzing naar het javascript lijkt niet goed.
Vreemd is wel, dat, ook al zet ik in de "if" alleen een echo er ook niets wordt getoond.
Voor diegenen, die op soortgelijke problemen stuiten: ik heb de zaak als volgt aangepast en
dat werkt:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$sql=mysqli_connect('localhost','root','','');
$result = mysqli_query($sql,"SELECT distinct Type, Gender FROM xxx WHERE Gender='Dames' AND Category = '" . $Var . "' AND Type<>'' ORDER BY Type");
$row = mysqli_fetch_array($result);
$recs = mysqli_num_rows($result); //tijdelijk
if ($recs == 0) {
echo "<script type='text/javascript'>var Mystr = '$Var';
location.href = 'GeenType.php?catkeuze=' + Mystr;</script>";
}
else
{
mysqli_data_seek($result, 0); //ga weer naar 1e record.
while($row = mysqli_fetch_array($result)) {
echo "<option value='" . $row['Type'] . "'>" . $row['Type'] . " </option>";
}
}
$sql->close();
?>
$sql=mysqli_connect('localhost','root','','');
$result = mysqli_query($sql,"SELECT distinct Type, Gender FROM xxx WHERE Gender='Dames' AND Category = '" . $Var . "' AND Type<>'' ORDER BY Type");
$row = mysqli_fetch_array($result);
$recs = mysqli_num_rows($result); //tijdelijk
if ($recs == 0) {
echo "<script type='text/javascript'>var Mystr = '$Var';
location.href = 'GeenType.php?catkeuze=' + Mystr;</script>";
}
else
{
mysqli_data_seek($result, 0); //ga weer naar 1e record.
while($row = mysqli_fetch_array($result)) {
echo "<option value='" . $row['Type'] . "'>" . $row['Type'] . " </option>";
}
}
$sql->close();
?>
Iedereen bedankt voor het meedenken!
gr. Ger.
En in de while() verderop zal je nu het eerste record missen.
Gewijzigd op 14/07/2014 19:03:16 door - SanThe -