Fout in Line 27

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

JW S

JW S

25/05/2010 23:16:28
Quote Anchor link
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>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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");
?>



</body>
</html>
 
PHP hulp

PHP hulp

24/12/2024 06:24:46
 

25/05/2010 23:18:40
Quote Anchor link
Lees je code eens stap voor stap grondig door.
 
Joren de Wit

Joren de Wit

25/05/2010 23:29:23
Quote Anchor link
Wat gaat er precies fout? Wat voor foutmelding krijg je? Daar kun je vaak al direct uit afleiden waar het probleem zit...
 
JW S

JW S

25/05/2010 23:29:31
Quote Anchor link
het doet al pijn aan mijn ogen, ik heb echt geen idee.. :-S
 
JW S

JW S

25/05/2010 23:30:58
Quote Anchor link
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
 

25/05/2010 23:31:04
Quote Anchor link
Zie eens regel 7.
Valt toch direct op...
 
JW S

JW S

25/05/2010 23:34:54
Quote Anchor link
tabel_nieuws zou eigenlijk $tabel moeten zijn??

even testen.
 
JW S

JW S

25/05/2010 23:37:46
Quote Anchor link
nee dus..
 

25/05/2010 23:39:44
Quote Anchor link
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.)
 
Joren de Wit

Joren de Wit

25/05/2010 23:42:27
Quote Anchor link
@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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$result
= mysql_query($sql);

if(!$result) {
  trigger_error(mysql_error());
}

?>
 
Willem Jan Z

Willem Jan Z

25/05/2010 23:43:12
Quote Anchor link
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 :)
Gewijzigd op 25/05/2010 23:44:17 door Willem Jan Z
 
Pieter Jansen

Pieter Jansen

25/05/2010 23:44:32
Quote Anchor link
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)){
 

25/05/2010 23:46:57
Quote Anchor link
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().

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.
 
JW S

JW S

25/05/2010 23:48:56
Quote Anchor link
Allen dank, ik gooi mijn oude PHP boekje in de vuurkorf en ga me weer inlezen.

goede nacht
 
Pieter Jansen

Pieter Jansen

25/05/2010 23:50:34
Quote Anchor link
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 :)
 
Joren de Wit

Joren de Wit

26/05/2010 00:04:51
Quote Anchor link
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.
 
Wolf Wolf

Wolf Wolf

26/05/2010 03:13:11
Quote Anchor link
JW:
Allen dank, ik gooi mijn oude PHP boekje in de vuurkorf en ga me weer inlezen.

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
 
Jesse Degger

Jesse Degger

26/05/2010 08:07:37
Quote Anchor link
Blanche:
Als een query mislukt, wil je met behulp van mysql_error() altijd de foutmelding achterhalen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$result
= mysql_query($sql);

if(!$result) {
  trigger_error(mysql_error());
}

?>


Of nog een snellere methode:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$result = mysql_query($sql) or die(mysql_error());
 
Willem Jan Z

Willem Jan Z

26/05/2010 09:12:38
Quote Anchor link
'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.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.