While loop met else

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daniel Leppink

Daniel Leppink

10/06/2011 21:08:19
Quote Anchor link
Hallo ik ben een beginner in de php wereld.
En als ik de while loop gebruik van mysql_fetch_array.
En ik bouw daar een if else statement achter dan laat hij alleen maar de if statement zien als dat waar is en als het niet waar is laat hij niet de else zien.
Hoe kan dit?
Als ik hetzelfde principe buiten een while loop doe zoals onder de streepjes lijn laat hij de else wel zien.

Dit is de code:

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
23
24
25
26
27
28
29
30
31
32
33
34
35
<?php
require ('config.php');
$zoekwoord = $_POST['rekeningnr'];

if($zoekwoord == ""){
    echo "U heeft geen nummer ingevoerd";
    }

elseif(!filter_var($zoekwoord, FILTER_VALIDATE_INT)){
    echo "U mag alleen cijfers invoeren van 0-9";
    }

    else{
        echo "Uw zoek opdracht is verwerkt";
        //Zoek met de regel hieronder op 2 woorden.
        //$query = "SELECT * FROM gegevens WHERE rekeningnr_db LIKE '%$zoekwoord%' or rekeningnr_db LIKE '%$zoekwoord%'";

        $query = "SELECT * FROM gegevens WHERE rekeningnr_db LIKE '%$zoekwoord%'";
        $result_db = mysql_query($query);    
        while($row = mysql_fetch_array($result_db))
            if ($row['rekeningnr_db'] == $zoekwoord){
            echo "<br/> Na if : ".$row['voornaam_db'];
            }

            else{
            echo "<br/> Rekening nummer is niet gevonden.";
            }
}


echo "<br/>----------------------------------------<br/>";

$row = 9999999999;
if ($row == $zoekwoord){
        echo "<br/> Na if : Nummer is gevonden.";
        }

        else{
        echo "<br/> Na else : Nummer is niet gevonden.";
        }

?>
Gewijzigd op 10/06/2011 21:25:19 door Daniel Leppink
 
PHP hulp

PHP hulp

16/01/2025 14:54:19
 
- SanThe -

- SanThe -

10/06/2011 21:21:09
Quote Anchor link
Je while() heeft geen { en } tags.
 
Daniel Leppink

Daniel Leppink

10/06/2011 21:28:38
Quote Anchor link
- SanThe - op 10/06/2011 21:21:09:
Je while() heeft geen { en } tags.


He hallo ik heb net even de code weer geupdate want dat typen in die textfield om een topic te plaatsen valt nog niet mee als er veel tekst in staat. De scrollbar springt steeds naar boven.
 
Gerhard l

gerhard l

10/06/2011 21:29:07
Quote Anchor link
waarom gebruik je like? je gaat toch geen rekeningnummer ongeveer intypen? gebruik ook geen * geef aan wat je wil aangeven
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
23
24
25
26
27
28
29
30
31
<?php
//is er gepost?
if($_SERVER['REQUEST_METHOD'] == 'POST'){
   //is zoekwoord ingevuld
   if($_POST['zoekwoord']){
      //query maken met real escape string voor veiligheid
      $query = "SELECT rekeningnr_db FROM gegevens WHERE rekeningnr_db = '".mysql_real_escape_string($_POST['zoekwoord']."'";
      //is de query gelukt?
      if($query){
         //meer dan 0 resultaten is succes
         if(mysql_num_rows($query) > 0){
            while($row = mysql_fetch_assoc($query)){
               echo $row['rekeningnr_db'].'<br/>';
            }
         }

         else{
            echo 'geen resulaten gevonden';
         }
       }

       else{
          echo 'error '.mysql_error();
       }
   }

   else{
      //niets ingevuld
      echo 'fill in';
   }
}

//hier je form
        
?>
 
Daniel Leppink

Daniel Leppink

10/06/2011 21:33:58
Quote Anchor link
- SanThe - op 10/06/2011 21:21:09:
Je while() heeft geen { en } tags.


He thanx dat heb je snel gezien. Ik dacht al?... het moet toch willen.

Toevoeging op 10/06/2011 21:44:07:

Gerhard l op 10/06/2011 21:29:07:
waarom gebruik je like? je gaat toch geen rekeningnummer ongeveer intypen? gebruik ook geen * geef aan wat je wil aangeven


Ik heb even het script weggehaalt. Anders worden de reakties zo lang.
Maar mijn bedoeling was om te kunnen zoeken in een database om dat wat te leren.
Ja en dat * dat klopt dat zou ik ook nog wel verandert hebben. Maar dit script is meer een probeersel van mij en om dingen te oefenen.

Maar in ieder geval bedankt voor je reaktie en ik zou ook nog even naar jouw code kijken en er van proberen te leren. :)
 
Gerhard l

gerhard l

10/06/2011 21:48:15
Quote Anchor link
Ja ik reken je er ook niet op af, vroeg me het gewoon af als je werkt met rekening nummers zou ik niet gaan werken met like omdat ze toch uniek zijn. Dat kun je meer gebruiken bij zoeken op namen ofzo, maar kijk maar even of je nog wat nuttigs uit mijn voorbeeld kan halen.
 
- SanThe -

- SanThe -

10/06/2011 22:02:32
Quote Anchor link
Gerhard l op 10/06/2011 21:48:15:
......... omdat ze toch uniek zijn.


Gerhard l op 10/06/2011 21:29:07:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
         //meer dan 0 resultaten is succes
         if(mysql_num_rows($query) > 0){
            while($row = mysql_fetch_assoc($query)){
               echo $row['rekeningnr_db'].'<br/>';
            }
         }

?>


Waarom dan een while()?
 
Daniel Leppink

Daniel Leppink

10/06/2011 22:03:44
Quote Anchor link
Oke is goed. Ja sommige dingen in jouw script zoals:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')

if(mysql_num_rows($query) > 0){
            while($row = mysql_fetch_assoc($query))
 
?>


was ik nog niet echt tegen gekomen met leren of mee bezig geweest.
Ik wou eerst proberen of ik uberhaupt wat uit de database kon halen. Haha.
Maar goed. Maar toch mooi voor de reaktie.
Jow...
 
Gerhard l

gerhard l

10/06/2011 22:06:35
Quote Anchor link
- SanThe - op 10/06/2011 22:02:32:
Gerhard l op 10/06/2011 21:48:15:
......... omdat ze toch uniek zijn.


Gerhard l op 10/06/2011 21:29:07:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
         //meer dan 0 resultaten is succes
         if(mysql_num_rows($query) > 0){
            while($row = mysql_fetch_assoc($query)){
               echo $row['rekeningnr_db'].'<br/>';
            }
         }

?>


Waarom dan een while()?


ik voelde hem al aankomen ;)

@topic starter
zoals in jou geval kan er maar 1 resultaat uit de database komen, dan heb je geen while nodig:
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
<?php

      $query
= "SELECT rekeningnr_db FROM gegevens WHERE rekeningnr_db = '".mysql_real_escape_string($_POST['zoekwoord']."'";
      //is de query gelukt?
      if($query){
         //meer dan 0 resultaten is succes
         if(mysql_num_rows($query) == 1){
              $row = mysql_fetch_assoc($query);
               echo $row['rekeningnr_db'].'<br/>';
            }
         }

         else{
            //er zijn meerdere resultaten dus er is iets mis
        }
     }

     else{
        echo 'error '.mysql_error();
     }

?>
 
Daniel Leppink

Daniel Leppink

10/06/2011 22:47:17
Quote Anchor link
Mmm? Kan iemand mij nu vertellen dan wat hier gebeurt?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
if(mysql_num_rows($query) == 1){
              $row = mysql_fetch_assoc($query);
?>


Als je mysql_fetch_array hebt haalt hij van elk record de veld items op en zet ze in een array. Toch?...
 
- SanThe -

- SanThe -

10/06/2011 22:51:22
Quote Anchor link
De geselecteerde waarde(n) uit de query van dat ene gevonden record zit(ten) nu in het array $row.
Gewijzigd op 10/06/2011 22:53:55 door - SanThe -
 
Daniel Leppink

Daniel Leppink

10/06/2011 23:13:19
Quote Anchor link
Gerhard l op 10/06/2011 21:48:15:
Ja ik reken je er ook niet op af, vroeg me het gewoon af als je werkt met rekening nummers zou ik niet gaan werken met like omdat ze toch uniek zijn. Dat kun je meer gebruiken bij zoeken op namen ofzo, maar kijk maar even of je nog wat nuttigs uit mijn voorbeeld kan halen.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
LIKE '%$zoekwoord%'"
?>

Zoekt toch wel gericht en identiek op een woord of getallen toch?
Niet dat ik 100 zoek en hij 1000 weergeeft omdat 100 er in voor komt.


Toevoeging op 10/06/2011 23:17:18:

- SanThe - op 10/06/2011 22:51:22:
De geselecteerde waarde(n) uit de query van dat ene gevonden record zit(ten) nu in het array $row.


Oke bedankt. Valt nog niet mee hoor php. Maar goed. Als ik nog eens wat heb drop ik het wel weer. :)
 
- SanThe -

- SanThe -

11/06/2011 00:34:34
Quote Anchor link
Daniel Leppink op 10/06/2011 23:13:19:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
LIKE '%$zoekwoord%'"
?>

Zoekt toch wel gericht en identiek op een woord of getallen toch?
Niet dat ik 100 zoek en hij 1000 weergeeft omdat 100 er in voor komt.


Nee.
De %-tekens mogen bij LIKE elk willekeurig character zijn.
Stel zoekterm = 100
... veld LIKE '%zoekterm%' => geeft 11000, 1000, 1001, 2310087 etc.
... veld LIKE '%zoekterm' => geeft 1100, 23100 etc. (alleen links een %)
... veld LIKE 'zoekterm%' => geeft 1000, 1001, 10087 etc. (alleen rechts een %)
... veld = '%zoekterm%' => geeft %100% dus exact met de %-jes.
... veld = 'zoekterm' => geeft 100 exact.
Gewijzigd op 11/06/2011 00:35:30 door - SanThe -
 
Daniel Leppink

Daniel Leppink

11/06/2011 13:15:46
Quote Anchor link
- SanThe - op 11/06/2011 00:34:34:
Daniel Leppink op 10/06/2011 23:13:19:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
LIKE '%$zoekwoord%'"
?>

Zoekt toch wel gericht en identiek op een woord of getallen toch?
Niet dat ik 100 zoek en hij 1000 weergeeft omdat 100 er in voor komt.


Nee.
De %-tekens mogen bij LIKE elk willekeurig character zijn.
Stel zoekterm = 100
... veld LIKE '%zoekterm%' => geeft 11000, 1000, 1001, 2310087 etc.
... veld LIKE '%zoekterm' => geeft 1100, 23100 etc. (alleen links een %)
... veld LIKE 'zoekterm%' => geeft 1000, 1001, 10087 etc. (alleen rechts een %)
... veld = '%zoekterm%' => geeft %100% dus exact met de %-jes.
... veld = 'zoekterm' => geeft 100 exact.

Oke dus:
% links zoekt alle getallen waar uiterst rechts een getal 100 staat.
% rechts zoekt alle getallen waar uiterst links een getal 100 staat.
en
% links en rechts zoekt alle getallen waar uiterst rechts of links een getal 100 staat of in het midden.
en zonder % zoekt hij gewoon exact 100 op.

Oke bedankt weer wat geleerd.
 
- SanThe -

- SanThe -

11/06/2011 13:20:47
Quote Anchor link
Als je exact zoekt gebruik je ... = '...' en geen LIKE omdat dat veel meer zoekwerk is voor de database.
 



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.