If werkt niet op resultset ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ger Eielts

Ger Eielts

14/07/2014 13:43:26
Quote Anchor link
Ik word zo langzamerhand knettergek. Ik krijg het volgende maar niet voor elkaar:
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)
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

$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.
 
PHP hulp

PHP hulp

29/03/2024 06:11:07
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 13:47:35
Quote Anchor link
Misschien is foutafhandeling wel makkelijker op je $result.
Verder kan je natuurlijk ook even debuggen wat $recs teruggeeft.
 
Ger Eielts

Ger Eielts

14/07/2014 13:56:18
Quote Anchor link
Bedankt Aar voor je antwoord. Als $recs 0 teruggeeft, wordt A NIET uitgevoerd.
 
- Ariën  -
Beheerder

- Ariën -

14/07/2014 13:58:32
Quote Anchor link
En de foutafhandeling?
 
Ger Eielts

Ger Eielts

14/07/2014 14:40:50
Quote Anchor link
@Aar Ik krijg keurig een set terug met 1 of meerdere records als aan de voorwaarden voldaan is.
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.
 
- SanThe -

- SanThe -

14/07/2014 15:04:53
Quote Anchor link
Als er geen records zijn ga je toch op regel 6 een record ophalen.
Haal die regel dus weg en zet hem in de else.
 
Ger Eielts

Ger Eielts

14/07/2014 15:10:28
Quote Anchor link
@SanThe, mee eens, maar dat lost het probleem niet op.
 
- SanThe -

- SanThe -

14/07/2014 15:14:42
Quote Anchor link
Wat geeft echo $recs; als je dat op regel 7 zet?
 
Ger Eielts

Ger Eielts

14/07/2014 15:23:05
Quote Anchor link
Eigenlijk wordt het nog gekker:
Als ik de if verander in
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($recs > 0) {

(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 !
 
Stefan WM

Stefan WM

14/07/2014 15:42:55
Quote Anchor link
[qoute]
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...."
 
Ger Eielts

Ger Eielts

14/07/2014 16:15:52
Quote Anchor link
@StefanWM:
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
        if ($recs == 0) {
//             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.
 
Pipo Clown

Pipo Clown

14/07/2014 17:25:02
Quote Anchor link
Euh, je probeert met PHP (= serverside) een javascript (= clientside) uit te voeren ?

Probeer eens te debuggen met echo's in plaats van met javascript.
 
Goto Learn

Goto Learn

14/07/2014 17:39:11
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
var_dump($recs);
 
Ger Eielts

Ger Eielts

14/07/2014 18:00:11
Quote Anchor link
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.

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)
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
    <?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();
     ?>


Iedereen bedankt voor het meedenken!
gr. Ger.
 
- SanThe -

- SanThe -

14/07/2014 19:02:16
Quote Anchor link
De regel met $row = mysqli_fetch_array($result); staat nog steeds verkeerd.
En in de while() verderop zal je nu het eerste record missen.
Gewijzigd op 14/07/2014 19:03:16 door - SanThe -
 



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.