[PHP] echo Query resultaten werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ik zal het even uitleggen.
Via een forumulier kan je contactgegevens in de database zetten en dat lukt allemaal prima.
Nu heb ik ook een script gemaakt om deze contact gegevens allemaal uit te lezen.
Als dit script wordt uitgevoerd zie ik alleen een witte pagina en verder kom ik geen errors tegen in de php/mysql log.

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
29
30
31
32
33
<?
$username="root";
$password="xxxxxxxx";
$database="breitnerlaan";

mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT * FROM contacts";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Database Output</center></b><br><br>";

$i=0;
while ($i < $num) {

$first=mysql_result($result,$i,"first");
$last=mysql_result($result,$i,"last");
$phone=mysql_result($result,$i,"phone");
$mobile=mysql_result($result,$i,"mobile");
$fax=mysql_result($result,$i,"fax");
$email=mysql_result($result,$i,"email");
$web=mysql_result($result,$i,"web");

echo "<b>$first $last</b><br>Phone: $phone<br>Mobile: $mobile<br>Fax: $fax<br>E-mail: $email<br>Web: $web<br><hr><br>";

$i++;
}

?>


De vraag is, wat doe ik nu fout? Wat zie ik over het hoofd? Het zal vast een klein dingetje zijn

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Je kan het ook op de simpele manier doen:

PHP:
1
2
3
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
               echo "First: $row['first']  Last: $row['last'] <br>"; 
            }

etc, hoef je ook de mysql_numrows niet op te halen, en al je variabelen niet te setten.

om te bughunten, kun je misschien even je $num echoen voordat je de while in gaat :)

mysql_close() aanroepen is ook niet heel erg nuttig trouwens.
http://nl2.php.net/manual/nl/function.mysql-close.php

[ Voor 29% gewijzigd door YakuzA op 17-02-2007 10:35 ]

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • doeternietoe
  • Registratie: November 2004
  • Laatst online: 17-09 20:56
YakuzA schreef op zaterdag 17 februari 2007 @ 10:29:
Je kan het ook op de simpele manier doen:

PHP:
1
2
3
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
               echo "First: $row['first']  Last: $row['last'] <br>"; 
            }
En dat gaat dus niet werken. Je moet of:
PHP:
1
2
3
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
               echo "First: {$row['first']}  Last: {$row['last']} <br>"; 
            }


of:
PHP:
1
2
3
            while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
               echo "First:" . $row['first'] . " Last: " . $row['last'] . "<br>"; 
            }

Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ik heb de $num ge echoed <-- foute spelling :P

Maar ik krijg nog steeds een wit scherm :X

code:
1
2
3
4
5
6
7
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query="SELECT id, Fuifnaam, Organisatie, Plaats, ADK, VVK, Contact FROM contacts";
$result=mysql_query($query);

$num=mysql_numrows($result);
echo $num; <<<<<<<<<----------------------------------------


Bij de pijl heb ik hem neergezet. (Heb nu alleen ff de bovenste stuk van het script hier neergezet)

Bedankt voor je tip dat het ook makkelijker kan, maar ik wil het sowieso eerst werkend hebben voordat ik het ga veranderen snap je :)

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • Wiebbe
  • Registratie: Februari 2001
  • Laatst online: 05-09 21:41

Wiebbe

<none />

Ja, echo gewoon es alles ;)

Kijk wat je result set heeft voor waarde, print hem met print_r, echo je query nog eens, voer je query handmatig uit en kijk wat je terug kijkt. Gewoon goed al je variabeles debuggen en kijken of ze wel de waardes hebben wat jij wilt dat ze hebben.

Het beste en duidelijkst vind ik een echo op deze manier:

PHP:
1
echo "$now waarde:" . $now


dan zie je tenminste wel de waarde staan en weet je of je uberhaubt daar komt in de code :P
mazz schreef op zaterdag 17 februari 2007 @ 10:42:
Bedankt voor je tip dat het ook makkelijker kan, maar ik wil het sowieso eerst werkend hebben voordat ik het ga veranderen snap je :)
Ja, maar het punt is dat als je het "makkelijker" doet er ook minder fout kan gaan? Hoe minder regels code je hebt waar je dingen doet, hoe minder er een fout in je code kan zitten. Dus waarom eerst je "grote" code werkend krijgen en dan pas de (in mijn ogen, betere) kleinere code gebruiken?

[ Voor 36% gewijzigd door Wiebbe op 17-02-2007 10:59 ]

Oh noes.. No more TreinTijden :(


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Oke, net even getest om mijn linux bak... en daar krijg ik gewoon wel een output. Al klopt het nog niet helemaal, hij geeft daar geen wit scherm.

Eerst draaide ik hem op windows server.

Ik denk dat dat het probleem gewoon is?

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • Wiebbe
  • Registratie: Februari 2001
  • Laatst online: 05-09 21:41

Wiebbe

<none />

weet je uberhaupt of je php code wel goed werkt op je windows server? ;p

probeer es een:
PHP:
1
echo "Hello world!";

Oh noes.. No more TreinTijden :(


Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

je mysql connect ziet er ook wel raar uit bij nader inzien:
* YakuzA doet die altijd als volgt:
PHP:
1
2
mysql_connect($dbhost,$dbuser,$dbpass) or die("Could not connect: " . mysql_error()); 
mysql_select_db($dbname);


in vergelijking met jouwe:
PHP:
1
2
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Nevermind over die linux en windows. Bij die linux bak debugt ie wel ofzo.

Warning: mysql_result() [function.mysql-result]: last not found in MySQL result index 3 in /home/blisweb/domains/bliswebdesign.nimiohosted.nl/public_html/zoek.php on line 21

Warning: mysql_result() [function.mysql-result]: phone not found in MySQL result index 3 in /home/blisweb/domains/bliswebdesign.nimiohosted.nl/public_html/zoek.php on line 22

Warning: mysql_result() [function.mysql-result]: mobile not found in MySQL result index 3 in /home/blisweb/domains/bliswebdesign.nimiohosted.nl/public_html/zoek.php on line 23

Warning: mysql_result() [function.mysql-result]: fax not found in MySQL result index 3 in /home/blisweb/domains/bliswebdesign.nimiohosted.nl/public_html/zoek.php on line 24

Warning: mysql_result() [function.mysql-result]: email not found in MySQL result index 3 in /home/blisweb/domains/bliswebdesign.nimiohosted.nl/public_html/zoek.php on line 25

Warning: mysql_result() [function.mysql-result]: web not found in MySQL result index 3 in /home/blisweb/domains/bliswebdesign.nimiohosted.nl/public_html/zoek.php on line 26
John
Phone:
Mobile:
Fax:
E-mail:
Web:

Nog even spelen met de query dus.. Hij ziet alleen de eerste variable.

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Wiebbe schreef op zaterdag 17 februari 2007 @ 11:05:
weet je uberhaupt of je php code wel goed werkt op je windows server? ;p

probeer es een:
PHP:
1
echo "Hello world!";
Dat werkt wel op de windows bak

Edit

Ik heb de code wat aangepast:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
$username="blisweb_brt";
$password="xxxxxxxxxx";
$database="blisweb_brt";

mysql_connect(localhost,$username,$password);
mysql_select_db($database) or die( "Unable to select database");
$query="SELECT first FROM contacts";
$result=mysql_query($query);

$num=mysql_numrows($result);

mysql_close();

echo "<b><center>Database Output</center></b><br><br>";

while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { 
               echo "First:" . $row['first'] . " Last: " . $row['last'] . "<br>";  
            } 

?>


Ik krijg geen errors meer, maar hij leest alleen maar de first uit. Last is gewoon wit.

DIt is de output

First:John Last:
First:ssacsdc Last:
First:zzzzzzzzzzz Last:

[ Voor 58% gewijzigd door mazz op 17-02-2007 11:23 ]

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • YakuzA
  • Registratie: Maart 2001
  • Niet online

YakuzA

Wat denk je nou zelluf hey :X

Uhm:
Beschrijving

Aanroepen naar mysql_result() mogen niet worden gemengd met aanroepen naar andere functies die met de resultaat set van doen hebben.

Aan te raden hoge-performance alternatieven: mysql_fetch_row(), mysql_fetch_array(), mysql_fetch_object().
Ligt denk ik aan je mysql_result() die je gebruikt?

Kun je de mysql_close er ook even uit halen?

Als je alleen First select, heb je ook geen last heh 8)7
PHP:
1
$query="SELECT first FROM contacts";


Voor doeterniettoe:
Klopt idd, ik had alleen net de NUM veranderd in ASSOC, voor echo "$row[0]"; etc werkt het wel gewoon :)

[ Voor 136% gewijzigd door YakuzA op 17-02-2007 11:20 ]

Death smiles at us all, all a man can do is smile back.
PSN


Acties:
  • 0 Henk 'm!

  • Aham brahmasmi
  • Registratie: Juni 2002
  • Laatst online: 27-08-2021
mazz schreef op zaterdag 17 februari 2007 @ 11:07:
Nevermind over die linux en windows. Bij die linux bak debugt ie wel ofzo.
Heeft alleen te maken met welke warnings je aan hebt staan in php.ini. Als je een wit scherm krijgt, laat PHP dus helemaal geen warnings zien (als er een fatal error (of minder erg) optreedt).

Als je nog in de debugfase van je kun webapplicatie zit, kun je in php.ini het volgende instellen: error_reporting = E_ALL

Hiermee krijg je alle errors en warnings te zien (dit is nog specifieker in te stellen zodat je alleen errors van een bepaald type krijgt te zien als je dat wilt).

Edit:
$row = mysql_fetch_array($result, MYSQL_ASSOC)) kun je (in de while lus) vervangen door:
$row = mysql_fetch_assoc($result)

[ Voor 9% gewijzigd door Aham brahmasmi op 17-02-2007 11:21 ]


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ja, dat klopt inderdaad.
Had nog niks veranderd aan de php.ini van de windows bak. Gewoon zo`n standaard WAMP install.
Zal het zo aanzetten :)

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • Badger
  • Registratie: November 2000
  • Laatst online: 01-09 10:18
$query="SELECT first FROM contacts";
Probeer dan es SELECT first,last FROM etc ;)
Doh te laat, 't is nog vroeg :)


PS ik hoop niet dat het je echte passwords zijn :o)

[ Voor 9% gewijzigd door Badger op 17-02-2007 11:22 ]


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
YakuzA schreef op zaterdag 17 februari 2007 @ 11:15:
Uhm:

[...]

Ligt denk ik aan je mysql_result() die je gebruikt?

Kun je de mysql_close er ook even uit halen?

Als je alleen First select, heb je ook geen last heh 8)7
PHP:
1
$query="SELECT first FROM contacts";
Dat is wel weer lekker snugger van mij he :)
Bedankt! Het werkt nu op de linux bak. Straks toch nog even testen op windows aangezien iedereen bij ons op het werk Windows freak is :p

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

Verwijderd

Redelijk RTFM werk dit :)

En nooit als root naar je DB connecten, altijd per database een gebruiker aanmaken, dit is een stuk veiliger.

Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Ja.. je hebt gelijk. Maar dit is gewoon lokaal dus dat maakt niet uit.
Het wordt een interne applicatie dus. Het is een pcwinkel met 8 mensen, dus wij gaan dat niet misbruiken :)

En dat dit rtfm is ben ik niet helemaal met je eens.
Het script klopte niet goed, en dankzij jullie is het wat korter en werkt het nu.

Edit: op die windows bak heb ik nog steeds een wit scherm.
Even cache legen, kijken of dat helpt

[ Voor 13% gewijzigd door mazz op 17-02-2007 11:27 ]

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

Verwijderd

Haal idd ff je password weg uit je post van 11:09... -> goed zo :)

Een aardige strategie voor passwords in PHP is om een file te 'include'n uit je homedir (dus niet uit de publiek toegankelijke web-dir). Als je server fout is geconfigureerd en php als plaintext opstuurt kan men op die manier nog steeds niet het password achterhalen.

Hangt natuurlijk ook samen met gebruik van safe_mode en webserver/php configuratie of je zelf toegang hebt tot andere paden

(edit: lokale applicatie: ja en dan met een medewerker die kwaad is vanwege een of ander, of een klant die even achter de balie duikt als de medewerkers druk bezig zijn, of als de machine via-via toch aan het internet hangt... Zou het in ieder geval voor de zekerheid toch veranderen :) )

[ Voor 24% gewijzigd door Verwijderd op 17-02-2007 11:28 ]


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Die linux bak is heel goed geconfigureerd.
Mod_suid etc. Mensen hebben alleen rechten in hun userdir.
Nog nooit gehad in 4 jaar dat de linux bak gehackt is. Alleen een deface van een klanten site. Maar dat kwam door een lek in Joomla en die hacker kon verder nergens heen :)

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Verwijderd schreef op zaterdag 17 februari 2007 @ 11:27:

(edit: lokale applicatie: ja en dan met een medewerker die kwaad is vanwege een of ander, of een klant die even achter de balie duikt als de medewerkers druk bezig zijn, of als de machine via-via toch aan het internet hangt... Zou het in ieder geval voor de zekerheid toch veranderen :) )
Hahha hier moest ik toch wel om laggen :p
Ons bedrijf zit in de kakkerigste wijk van Den Haag. Ik moest opeens er opeens aan denken dat de deur van onze winkel midden in de nacht openstond toen we daar aan het gamen waren en dat een aantal mensen de politie hadden gebeld omdat de deur openstond. De klanten zijn allemaal 70+.

Maar als het helemaal klaar is zal ik het toch even regelen ja.
Hij is wel met internet verbonden maar die port is toch dicht :)

20 jaar, en wat had ik bereikt?


Acties:
  • 0 Henk 'm!

Verwijderd

en nu je redelijk op weg bent en error_reporting(E_ALL) aan hebt staan
kun je de query weer uitbreiden...
PHP:
1
2
3
4
5
6
7
8
9
10
11
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");

/*
Yakuza's manier is beter
mysql_connect($dbhost,$dbuser,$dbpass) or die("Could not connect: " . mysql_error()); 
mysql_select_db($dbname); 
*/

$query="SELECT id, Fuifnaam, Organisatie, Plaats, ADK, VVK, Contact FROM contacts";
$result=mysql_query($query);
En als die mysql_query nu fout gaat? Even afvangen dus.

Acties:
  • 0 Henk 'm!

  • mazz
  • Registratie: November 2004
  • Laatst online: 08-06 13:48
Bedankt voor de tip.
Ik zal het inderdaad even aanpassen!

20 jaar, en wat had ik bereikt?

Pagina: 1