[PHP] While statement

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Na verschillende WHILE statement codes geprobeerd te hebben, hier gelezen te hebben, lukt het mij als nog niet te krijgen wat ik wil.

In de SQL statement wordt gekeken naar WHERE b.room = $knop. Deze variable wordt gehaalt uit flash. Als het kamer nummer dus bijvoorbeeld 2.22 is, vind de statement 3 personen die zich in deze kamer bevinden. Nu laat mijn code dus maar 1 van de 3 mensen zien. Mijn idee is dus dat ik een WHILE statement moet gebruiken, maar deze funcioneerd niet, of in zover, hij laat nog steeds 1 gebruiker zien. Zie code.


Ik heb de volgende code:
code:
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
$sql=mysql_query("SELECT a.name, a.email, a.phone, a.locid, a.dep_id, b.room, c.department FROM clients a INNER JOIN locatie b, department c ON a.locid=b.locid AND a.dep_id=c.dep_id WHERE b.room = $knop ORDER BY client_id ASC LIMIT $begin,1") 
or die("&dataloaded=0&error=Can't fetch clients results! Check the database");

if (mysql_num_rows($sql)=="1")

while ($row=mysql_fetch_array($sql)) {

$name=$row['name'];
$email=$row['email'];
$phone=$row['phone'];
$locid=$row['locid'];
$room=$row['room'];
$department=$row['department'];
$totalentries=mysql_num_rows($totalentries);
echo"&dataloaded=1&start=$start&name=$name&email=$email&phone=$phone&locid=$locid&room=$room&department=$department&totalentries=$totalentries";
}
else {
echo"&start=0";
echo"&name=No records found";
echo"&email=No records found";
echo"&phone=No records found";
echo"&locid=No records found";
echo"&room=No records found";
echo"&department=No records found";
echo"&totalentries=0";
echo"&dataloaded=1";
}
?>


Wie kan mij helpen?

Acties:
  • 0 Henk 'm!

  • dArtagnan
  • Registratie: Mei 2002
  • Laatst online: 23-08 22:47

dArtagnan

Een voor allen, allen voor een

Je gebruikt een limiet van $begin,1. Je zult dus nooit meer dan een persoon te zien krijgen. En een while statement heeft geen else.
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
36
37
38
39
40
41
42
43
$sql=mysql_query("
SELECT 
  a.name, 
  a.email, 
  a.phone, 
  a.locid, 
  a.dep_id, 
  b.room, 
  c.department 
FROM 
  clients a 
INNER JOIN locatie b, department c ON a.locid=b.locid AND a.dep_id=c.dep_id 
WHERE 
  b.room = $knop 
ORDER BY 
  client_id ASC LIMIT $begin,100") 
or die("&dataloaded=0&error=Can't fetch clients results! Check the database");

if (mysql_num_rows($sql)=>1)
{
  while ($row=mysql_fetch_array($sql)) 
  {
    $name=$row['name'];
    $email=$row['email'];
    $phone=$row['phone'];
    $locid=$row['locid'];
    $room=$row['room'];
    $department=$row['department'];
    $totalentries=mysql_num_rows($totalentries);
    echo"&dataloaded=1&start=$start&name=$name&email=$email&phone=$phone&locid=$locid&room=$room&department=$department&totalentries=$totalentries";
  }
else {
  echo"&start=0";
  echo"&name=No records found";
  echo"&email=No records found";
  echo"&phone=No records found";
  echo"&locid=No records found";
  echo"&room=No records found";
  echo"&department=No records found";
  echo"&totalentries=0";
  echo"&dataloaded=1";
}
?>

[ Voor 221% gewijzigd door dArtagnan op 13-03-2005 14:19 . Reden: leesbare code toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

hehe, een while statement met else :o

-edit-
ik zie het nu beter, indent je code ff, dan is het een stuk duidelijker.....

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
$sql=mysql_query("SELECT a.name, a.email, a.phone, a.locid, a.dep_id, b.room, c.department FROM clients a INNER JOIN locatie b, department c ON a.locid=b.locid AND a.dep_id=c.dep_id WHERE b.room = $knop ORDER BY client_id ASC LIMIT $begin,1") or die("&dataloaded=0&error=Can't fetch clients results! Check the database");

if (mysql_num_rows($sql)=="1") {
  while ($row=mysql_fetch_array($sql)) {  
    $name=$row['name'];
    $email=$row['email'];
    $phone=$row['phone'];
    $locid=$row['locid'];
    $room=$row['room'];
    $department=$row['department'];
    $totalentries=mysql_num_rows($totalentries);
    echo"&dataloaded=1&start=$start&name=$name&email=$email&phone=$phone&locid=$locid&room=$room&department=$department&totalentries=$totalentries";
  }
} else {
  echo "&start=0";
  echo "&name=No records found";
  echo "&email=No records found";
  echo "&phone=No records found";
  echo "&locid=No records found";
  echo "&room=No records found";
  echo "&department=No records found";
  echo "&totalentries=0";
  echo "&dataloaded=1";
}

heb een } en een { toegevoegd, zoek zelf maar waar :)

[ Voor 179% gewijzigd door Tjark op 13-03-2005 14:15 ]

*insert signature here


Acties:
  • 0 Henk 'm!

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 10-02 23:00
TjarkVerhoeven schreef op zondag 13 maart 2005 @ 14:10:
hehe, een while statement met else :o

-edit-
ik zie het nu beter, indent je code ff, dan is het een stuk duidelijker.....

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
$sql=mysql_query("SELECT a.name, a.email, a.phone, a.locid, a.dep_id, b.room, c.department FROM clients a INNER JOIN locatie b, department c ON a.locid=b.locid AND a.dep_id=c.dep_id WHERE b.room = $knop ORDER BY client_id ASC LIMIT $begin,1") or die("&dataloaded=0&error=Can't fetch clients results! Check the database");

if (mysql_num_rows($sql)=="1") {
  while ($row=mysql_fetch_array($sql)) {  
    $name=$row['name'];
    $email=$row['email'];
    $phone=$row['phone'];
    $locid=$row['locid'];
    $room=$row['room'];
    $department=$row['department'];
    $totalentries=mysql_num_rows($totalentries);
    echo"&dataloaded=1&start=$start&name=$name&email=$email&phone=$phone&locid=$locid&room=$room&department=$department&totalentries=$totalentries";
  }
} else {
  echo "&start=0";
  echo "&name=No records found";
  echo "&email=No records found";
  echo "&phone=No records found";
  echo "&locid=No records found";
  echo "&room=No records found";
  echo "&department=No records found";
  echo "&totalentries=0";
  echo "&dataloaded=1";
}

heb een } en een { toegevoegd, zoek zelf maar waar :)
Die is nog fout...
Onze topicstarter is gek op maximaal 1 rij lijkt het, niet alleen bij z'n SQL, ook bij zijn checks:
if (mysql_num_rows($sql)=="1") moet zijn:
if (mysql_num_rows($sql) != 0)

De aanhalingstekens zijn volgens mij overbodig omdat het een integer is (toch?). Eerst werd er gechecked of er wel 1 resultaat werd terug gegeven. Dat klopte gelukkkig doordat je je SQL ook limiteerde op 1. Nu zou dat niet meer kloppen bij meer dan 1 gebruikers. Ik neem aan dat je alleen wat wilt weergeven als er wat valt weer te geven, dus staat er nu: "Als het klopt dat het aantal rijen alles behalve 0 is, ga dan lekker echo-en".

edit:
Deze regel vind ik zo duidelijker:
PHP:
1
echo '&dataloaded=1&start='.$start.'&name='.$name.'&email='.$email.'&phone='.$phone.'&locid='.$locid.'&room='.$room.'&department='.$department.'&totalentries='.$totalentries;

[ Voor 26% gewijzigd door pierre-oord op 13-03-2005 14:21 ]


Acties:
  • 0 Henk 'm!

  • Tjark
  • Registratie: Juni 2000
  • Laatst online: 18-09 23:26

Tjark

DON'T PANIC

Weet ik, maar heb geen zin om in onduidelijke code te gaan graven :)

*insert signature here


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

pierre-oord schreef op zondag 13 maart 2005 @ 14:18:
[...]
edit:
Deze regel vind ik zo duidelijker:
PHP:
1
echo '&dataloaded=1&start='.$start.'&name='.$name.'&email='.$email.'&phone='.$phone.'&locid='.$locid.'&room='.$room.'&department='.$department.'&totalentries='.$totalentries;
Ik niet ;)
PHP:
1
2
3
4
5
6
7
8
9
echo '&dataloaded=1',
     '&start=', $start,
     '&name=', $name,
     '&email=', $email,
     '&phone=', $phone,
     '&locid=', $locid,
     '&room=', $room,
     '&department=', $department,
     '&totalentries=', $totalentries;

pas trouwens op met dergelijk lange URL's (ik neem aan dat het voor een URL is) - voor je het weet ga je over de limiet die voor oudere browsers vaak maar iets van 1024 karakters is...
Ook zijn spaties in URL's uit den boze, die dien je te URLencoden (%20) en het is ook aan te raden speciale karakters binnen HTML-attributen om te zetten naar entities - & wordt dan & in bovenstaand voorbeeld.

[ Voor 5% gewijzigd door crisp op 13-03-2005 14:43 ]

Intentionally left blank


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zo jeejte wat een hoop reacties al..

Ik ga het even rustig na lezen en dan kijken of het werkt.

Het moet trouwens in combinatie werken met Flash.

Jullie horen van mij.
Pagina: 1