PHP 5.2.3 + MySQL 5.0.45 Warning: mysql_fetch_array():

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Matthijs

matthijs

30/07/2007 00:01:00
Quote Anchor link
Beste PHP-ers,

Kan iemand mij helpen met het volgende:

Ik heb een nieuws pagina in php gemaakt icm een database.

Hier volgen de scripts:

Index.php:

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
<?php
$db
=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("tabel",$db);


$news_SQL="SELECT * FROM nieuws ORDER BY news_datetime DESC";
$news_result=mysql_query($news_SQL);

//In dit deel worden meldingen weergegeven

while($news=mysql_fetch_array($news_result)) {
if(strlen($news['news_main'])>120){
    $news['news_main']=substr($news['news_main'],0,180) . " ... <a href=news.php?news_ID=" . $news['news_ID'] . ">meer</a>";
}

?>


<table width="400" border="0" cellspacing="0"
cellpadding="0" align="center">
<tr>
<td>
<span class="kleiner">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
//opmaak van datum tijd
                $unixtime = strtotime($news['news_datetime']);
                 echo date("d-m-Y H:i",$unixtime)
                 ?>
</span>
<br><b><span class="kleiner">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php    echo
              $news['news_header'] ?>
</b></span>
</td>
</tr>
<tr>
<td>
<span class="kleiner">
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<?php echo
          $news['news_main'] ?>
</span>
</td>
</tr>
<tr>
<td>
<hr width="400" size="1" noshade>
</td>
</tr>
</table>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
}
mysql_close();
?>


----------------------------------------------------------------------------------------

news.php:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$db
=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("easyc",$db);

$news_SQL="SELECT * FROM nieuws WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();
?>


----------------------------------------------------------------------------------------

Index.php laat hij netjes zien maar zodra ik op de link naar het volledige bericht klik, krijg ik de volgende foutmelding:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\webroot\news.php on line 8

line 8 is op zijn beurt in index.php :
$news=mysql_fetch_array($news_result);

Kan het zijn dat er een server variabele verandert moet worden op de server?

Ik kom er niet meer uit.

Alvast bedankt

Gr,

Matthijs
 
PHP hulp

PHP hulp

15/05/2024 21:13:35
 
M Ypma

M Ypma

30/07/2007 00:16:00
Quote Anchor link
doe eens wat foutafhanelding, dan had je de vraag waaarschijnlijk niet hoeven stellen...je gaat er overal blindelings van uit dat je queries lukken... mijn advies dus: fout afhandeling... dan ontdek je zelf de fout en ben jij ook weer wat wijzer
 
Matthijs

matthijs

30/07/2007 01:28:00
Quote Anchor link
Beste Michel,

Bedankt voor je reactie, maar hier kan ik niks mee. Ik ben wat dat betreft een newbie...
 
Marco PHPJunky

Marco PHPJunky

30/07/2007 01:55:00
Quote Anchor link
Beste Matthijs:

zou je misschien inderdaad zoals michel al zei wat error handlers erin kunnen zetten...

dit kan je misschien met jou goed vinden vervangen in je news.php :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?PHP
$news_SQL
= mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
?>


ps. werkt je index wel gewoon goed ?
Gewijzigd op 01/01/1970 01:00:00 door Marco PHPJunky
 
Matthijs

matthijs

30/07/2007 02:07:00
Quote Anchor link
Hoi Marco,

Bedankt voor je reactie. Ik heb de code vervangen met die van jou:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$news_SQL
= mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);
?>


De foutmelding is nu wel weg maar zie verder nu helemaal niks meer.
 
Marco PHPJunky

Marco PHPJunky

30/07/2007 02:13:00
Quote Anchor link
wat heb je allemaal precies weg gehaald dan als ik vragen mag ?
dus met anderen worden wat staat er nu nog allemaal in je news.php ?

groetjes..
 
Matthijs

matthijs

30/07/2007 02:19:00
Quote Anchor link
Er staat nu:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$db
=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("database",$db);

$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());
$news = mysql_fetch_array($news_SQL);

mysql_close();
?>


Zo heb ik geen fout, maar een wit scherm en geen resultaat :-(

Groeten,
Matthijs
 
Marco PHPJunky

Marco PHPJunky

30/07/2007 02:28:00
Quote Anchor link
Ja dat kan best wel kloppen dat je een wit scherm krijgt...

Maar dit komt omdat je geen gegevens laat zien op je scherm (echo / print)

het geen wat je tot nu gedaan hebt is het aanroepen van de gegevens en nog niet het showen / laten zien van gegevens..

of ik moet het verkeerd zien omdat je misschien niet je totale news.php script gepost hebt maar zo ja wat wil je dan in news.php laten zien als ik vragen mag ?
 
Frank -

Frank -

30/07/2007 03:48:00
Quote Anchor link
Beginnen jouw scripts wel met de volgende regels?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);

// rest van je code
?>

Mocht er dan ergens wat goed fout gaan, krijg je tenminste een foutmelding te zien. Er zijn betere manieren (eigen foutafhandeling bouwen), maar hiermee kun je prima debuggen.
 
Wout van der Burg

Wout van der Burg

30/07/2007 08:25:00
Quote Anchor link
Je propt je resultaat ook aleen in een array dmv mysql_fetch_array(); ...
Je moet ook je resultaten echo'en!

doe dit maar even:

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
<?php
$db
=mysql_connect("localhost","user","pass") or die ("Verbinding Mislukt");
mysql_select_db("database",$db);

$news_SQL = mysql_query("select * from nieuws where news_ID = '".$news_ID."'") or die ('kan query niet uitvoeren '.mysql_error());

while ($row = mysql_fetch_array($news_SQL)) {
    echo $row['dbveld1']."<br>";
    echo $row['dbveld2']."<br>";
    // etc...
}

mysql_close($db);
?>
Gewijzigd op 01/01/1970 01:00:00 door Wout van der Burg
 
Matthijs

matthijs

30/07/2007 19:35:00
Quote Anchor link
Oh wat stom zeg! Idd, ik heb nergens meer echo in het script staan.
Nu ik dat zojuist heb gedaan krijg ik alleen de datum terug: 1970-01-01 01:00.

Inmiddels heb ik de oplossing gevonden:

De regel $news_ID=$_GET['news_ID']; toegevoegd en zowel jouw script als mijn script doet het. Kan je me vertellen waarom je de quote-tjes EN aanhalingsteken gebruikt? '".$news_ID."'

News.php ziet er uiteindelijk zo uit:

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
<?php
include("connect.inc.php");

//Parameter inlezen
$news_ID=$_GET['news_ID'];

//type variabele instellen om misbruik te voorkomen
settype($news_ID,"int");

$news_SQL="SELECT * FROM nieuws WHERE news_ID=" . $news_ID;
$news_result=mysql_query($news_SQL);
$news=mysql_fetch_array($news_result);
mysql_close();

?>



Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
//Hier worden de berichten weergegeven
//De datum opmaken

$unixtime = strtotime($news['news_datetime']);
?>


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo date("d-m-Y H:i",$unixtime) ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $news['news_header'] ?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $news['news_main'] ?>


@Marco: erg bedankt voor je tijd!!!
@Frank: error_reporting(E_ALL); staat standaard aan in m'n php.ini.
ini_set('display_errors', 1); heb ik niet aanstaan maar ga ik ook gebruiken
@Wout: ook bedankt, hoewel ik in news.php juist het volledige bericht wil lezen en geen while lus meer die ik al in index.php gebruik.

Gr,
Matthijs
 
TJVB tvb

TJVB tvb

30/07/2007 20:15:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$news_ID
=$_GET['news_ID'];
?>

Dit vraagt om problemen, wie garandeerd je dat de invoer goed is?
bijvoorbeeld:
jouwpagina.php?news_id=1;DELETE%20FROM%20nieuws
 
Matthijs

matthijs

22/08/2007 01:51:00
Quote Anchor link
settype($news_ID,"int");

was ik vergeten erbij te zetten
Gewijzigd op 01/01/1970 01:00:00 door matthijs
 



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.