Fout in Line 27
Is iemand in staat om hier de fout uit te halen? Ik heb het idee dat dit in een oudere php versie goed ging en nu niet meer. Gaat om regel 27.
<html>
<html>
<body>
</body>
</html>
<html>
<html>
<body>
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
36
37
38
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
<?php
$con = mysql_connect("localhost","blabla1","h3!!0");
$tabel = "tabel_nieuws";
$opdracht = "SELECT * from $tabel";
$resultaat = mysql_db_query (tabel_nieuws, $opdracht, $con);
print ("<table>\n");
print ("<tr></tr>\n");
print ("<td><b>ID</b></td>\n");
print ("<td><b>jaar</b></td>\n");
print ("<td><b>maand</b></td>\n");
print ("<td><b>dag</b></td>\n");
print ("<td><b>tekst_kort</b></td>\n");
print ("<td><b>tekst_volledig</b></td>\n");
print ("<td><b>link</b></td>\n");
print ("<td><b>afbeelding</b></td>\n");
print ("$resultaat");
print ("</tr>");
while ($Rij = mysql_fetch_array ($resultaat) ) {
print ("<tr>\n");
print ("<td>$Rij[ID]</td>\n");
print ("<td>$Rij[jaar]</td>\n");
print ("<td>$Rij[maand]</td>\n");
print ("<td>$Rij[dag]</td>\n");
print ("<td>$Rij[tekst_kort]</td>\n");
print ("<td>$Rij[tekst_volledig]</td>\n");
print ("<td>$Rij[link]</td>\n");
print ("<td>$Rij[afbeelding]</td>\n");
print ("</tr>\n");
}
mysql_close($con);
print ("</tr>\n");
?>
$con = mysql_connect("localhost","blabla1","h3!!0");
$tabel = "tabel_nieuws";
$opdracht = "SELECT * from $tabel";
$resultaat = mysql_db_query (tabel_nieuws, $opdracht, $con);
print ("<table>\n");
print ("<tr></tr>\n");
print ("<td><b>ID</b></td>\n");
print ("<td><b>jaar</b></td>\n");
print ("<td><b>maand</b></td>\n");
print ("<td><b>dag</b></td>\n");
print ("<td><b>tekst_kort</b></td>\n");
print ("<td><b>tekst_volledig</b></td>\n");
print ("<td><b>link</b></td>\n");
print ("<td><b>afbeelding</b></td>\n");
print ("$resultaat");
print ("</tr>");
while ($Rij = mysql_fetch_array ($resultaat) ) {
print ("<tr>\n");
print ("<td>$Rij[ID]</td>\n");
print ("<td>$Rij[jaar]</td>\n");
print ("<td>$Rij[maand]</td>\n");
print ("<td>$Rij[dag]</td>\n");
print ("<td>$Rij[tekst_kort]</td>\n");
print ("<td>$Rij[tekst_volledig]</td>\n");
print ("<td>$Rij[link]</td>\n");
print ("<td>$Rij[afbeelding]</td>\n");
print ("</tr>\n");
}
mysql_close($con);
print ("</tr>\n");
?>
</body>
</html>
Lees je code eens stap voor stap grondig door.
Wat gaat er precies fout? Wat voor foutmelding krijg je? Daar kun je vaak al direct uit afleiden waar het probleem zit...
het doet al pijn aan mijn ogen, ik heb echt geen idee.. :-S
Dit is de melding:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/site.nl/httpdocs/test/get.php on line 27
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/site.nl/httpdocs/test/get.php on line 27
Zie eens regel 7.
Valt toch direct op...
Valt toch direct op...
tabel_nieuws zou eigenlijk $tabel moeten zijn??
even testen.
even testen.
nee dus..
Als je het stap voor stap bij langs gaat, dan ga je ook bij php.net langs:
mysql_db_query.
(En die regel zeven klopt in jou eerste post dus niet.)
mysql_db_query.
(En die regel zeven klopt in jou eerste post dus niet.)
@JW: Gelieve niet te bumpen. Wil je nog iets toevoegen aan je bericht, gebruik dan het edit knopje.
Verder doelt Karl denk ik op de functie mysql_db_query() die inmiddels deprecated is en die je dus eigenlijk niet meer moet gebruiken. Maak in plaats daarvan gewoon gebruik van mysql_query(). Waarom is het verder nodig om de tabelnaam eerst in een variabele te zetten? Zet die gewoon direct in de query. En pas tenslotte de nodige foutafhandeling toe. Als een query mislukt, wil je met behulp van mysql_error() altijd de foutmelding achterhalen:
Verder doelt Karl denk ik op de functie mysql_db_query() die inmiddels deprecated is en die je dus eigenlijk niet meer moet gebruiken. Maak in plaats daarvan gewoon gebruik van mysql_query(). Waarom is het verder nodig om de tabelnaam eerst in een variabele te zetten? Zet die gewoon direct in de query. En pas tenslotte de nodige foutafhandeling toe. Als een query mislukt, wil je met behulp van mysql_error() altijd de foutmelding achterhalen:
Je query faalt waardoor er geen mysql resource is waardoor mysql_fetch_array een argument krijgt wat hij niet verwacht (namelijk false).
Lees en leer: http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-in-php-error-handling/571/
edit: De auteur van gegeven tutorial was me voor :)
Lees en leer: http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-in-php-error-handling/571/
edit: De auteur van gegeven tutorial was me voor :)
Gewijzigd op 25/05/2010 23:44:17 door Willem Jan Z
mysql_fetch_array( ) geeft een numerieke aray terug, dus geen associatieve. Met andere woorden: $rij[naam_van_veld] geeft niets terug, dit kan alleen met $rij[1] of een ander getal.
Wat ik zou doen is:
while(mysql_fetch_assoc($var)){
Wat ik zou doen is:
while(mysql_fetch_assoc($var)){
Blanche:
Verder doelt Karl denk ik op de functie mysql_db_query() die inmiddels deprecated is en die je dus eigenlijk niet meer moet gebruiken. Maak in plaats daarvan gewoon gebruik van mysql_query().
Verder doelt Karl denk ik op de functie mysql_db_query() die inmiddels deprecated is en die je dus eigenlijk niet meer moet gebruiken. Maak in plaats daarvan gewoon gebruik van mysql_query().
Dat dus, wat hij zelf moet lezen, want dan gaat hij zelf opzoek, en daar leer je per definitie meer van dat als iemand anders het aan je verteld. Als hij dan op mysql_query komt dan ziet hij dat er bepaalde dingen in zijn script niet zitten, die wel heel handig zijn en dat gaat hij dan ook inbouwen. Verder klopt die variabele van regel zeven dus niet.
Merijn:
mysql_fetch_array( ) geeft een numerieke aray terug, dus geen associatieve. Met andere woorden: $rij[naam_van_veld] geeft niets terug, dit kan alleen met $rij[1] of een ander getal.
Gozer, kijk eens naar die foutmelding die hij heeft gepost.
Allen dank, ik gooi mijn oude PHP boekje in de vuurkorf en ga me weer inlezen.
goede nacht
goede nacht
ja gozer lees je eigen reactie even door dan. die is toch allang boven water gekomen?
Daarnaast weet je zelf ook wel dat mijn comment wel terecht is. Los van het feit dat z`n query niet lukt, gebruik je geen fetch_array voor je associatieve arrays.
Trouwens, Gozer, was jij niet de gene die zo vriendelijk was iedereen op z`n staartje te trappen als iedereen iemand anders aanraade een nieuwe methode te proberen? Waarom zit je daar nu wel over te bitchen dan?
allemaal @gozer Karl natuurlijk :)
Daarnaast weet je zelf ook wel dat mijn comment wel terecht is. Los van het feit dat z`n query niet lukt, gebruik je geen fetch_array voor je associatieve arrays.
Trouwens, Gozer, was jij niet de gene die zo vriendelijk was iedereen op z`n staartje te trappen als iedereen iemand anders aanraade een nieuwe methode te proberen? Waarom zit je daar nu wel over te bitchen dan?
allemaal @gozer Karl natuurlijk :)
Merijn:
Daarnaast weet je zelf ook wel dat mijn comment wel terecht is.
Toch niet. De functie mysql_fetch_array() geeft standaard een array terug met zowel de associatieve als de numerieke indexen. Die functie zou dus wel degelijk werken in het script van de TS.
JW:
Allen dank, ik gooi mijn oude PHP boekje in de vuurkorf en ga me weer inlezen.
goede nacht
goede nacht
Doe er dan gelijk een boekje over HTML bij:
In regel 10 open je namelijk een tablerow en sluit deze direct af, vervolgens open je in regel 11 met tabledata zonder eerst de tablerow te openen. Voor de tableheaders kun je ook <th> ipv <td> gebruiken. Wellicht toch handig om je code nog eens goed door te nemen. ;-)
Gewijzigd op 26/05/2010 03:16:57 door Wolf Wolf
Blanche:
Als een query mislukt, wil je met behulp van mysql_error() altijd de foutmelding achterhalen:
Of nog een snellere methode:
'or die' is geen snellere methode, maar een vreemde methode. Om welke reden zou je complete script moeten stoppen omdat een query faalt? Lijkt me stuk beter een netter foutmelding te geven en daarna dus de rest van je pagina gewoon te laten laden.




