While loop met else
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)
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
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.";
}
?>
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
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.
Code (php)
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
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
?>
//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.
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. :)
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:
Code (php)
1
2
3
4
5
6
7
8
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/>';
}
}
?>
//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()?
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
if(mysql_num_rows($query) > 0){
while($row = mysql_fetch_assoc($query))
?>
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:
Waarom dan een while()?
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)
1
2
3
4
5
6
7
8
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/>';
}
}
?>
//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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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();
}
?>
$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();
}
?>
Als je mysql_fetch_array hebt haalt hij van elk record de veld items op en zet ze in een array. Toch?...
Gewijzigd op 10/06/2011 22:53:55 door - SanThe -
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.
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. :)
Daniel Leppink op 10/06/2011 23:13:19:
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 -
- SanThe - op 11/06/2011 00:34:34:
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.
Daniel Leppink op 10/06/2011 23:13:19:
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.
Als je exact zoekt gebruik je ... = '...' en geen LIKE omdat dat veel meer zoekwerk is voor de database.