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:

<?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.";
}
?>
Je while() heeft geen { en } tags.
- 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.
waarom gebruik je like? je gaat toch geen rekeningnummer ongeveer intypen? gebruik ook geen * geef aan wat je wil aangeven

<?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
         
?>
- 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.

[size=xsmall]Toevoeging op 10/06/2011 21:44:07:[/size]

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. :)
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.
Gerhard l op 10/06/2011 21:48:15

......... omdat ze toch uniek zijn.


Gerhard l op 10/06/2011 21:29:07


<?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()?
Oke is goed. Ja sommige dingen in jouw script zoals:
<?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...
- SanThe - op 10/06/2011 22:02:32

[quote="Gerhard l op 10/06/2011 21:48:15"]
......... omdat ze toch uniek zijn.


Gerhard l op 10/06/2011 21:29:07


<?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()?
[/quote]

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:

<?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();
     }
?>
Mmm? Kan iemand mij nu vertellen dan wat hier gebeurt?

<?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?...
De geselecteerde waarde(n) uit de query van dat ene gevonden record zit(ten) nu in het array $row.

Reageren