Hallo iedereen,

Ik ben momenteel bezig met een forum geheel uit mijn hoofd met mijn kennis die ik tot nu toe heb te maken.

Ik stuit echter op een heel raar probleem, iedere keer wordt de volgende error naar mijn hoofd geslingerd:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\XAMPP\xampp\htdocs\xampp\www\echte_site\sub_paginas\Forum_test.php on line 54

Het gaat om dit script:

if( ($categorie) AND (!$topic_id) )
{
  include("db_connect.php");
  $query = mysql_query("SELECT `id`, `categorie`, `onderwerp` FROM forum WHERE categorie = '". $categorie ."' AND topic_key = '0'");

  while($line = mysql_fetch_array($query)) // geeft rare error
  {
    $topicid 	= $line['categorie'];
    $categorie 	= $line['categorie'];
    $onderwerp  = $line['onderwerp'];	
    print("<a href=\"?pagina=forum&cat=$categorie&topicid=$topicid\">$onderwerp</a><br />");
  }
}



Ik heb dus eerst een test bestand, deze dus in een andere map gemaakt, en deze werkte perfect. Vervolgens wilde ik deze includen in een pagina, en kreeg deze error.

Na een hoop nadenken, ben ik tot de conclusie gekomen, dat exact het zelfde bestandje in de root, perfect werkt, maar in een andere locatie, een mysql error retourneerd.

Zou dit probleem kunnen ontstaan door bepaalde configuratie instellingen?

Bij voorbaat dank
Query is waarschijnlijk mislukt. Dus doe wat aan foutafhandeling.
$query = mysql_query("SELECT `id`, `categorie`, `onderwerp` FROM forum WHERE categorie = '". $categorie ."' AND topic_key = '0'") or die (mysql_error());
Ja, errorchecken! Echo je query eens naar het scherm:
<?php
$sql = "
SELECT id, categorie, onderwerp
FROM forum
WHERE categorie = '". $categorie ."'
AND topic_key = 0";
if (!$res = mysql_query ($sql)) {
echo '<pre>';
echo htmlentities ($sql);
echo '</pre>';
}
?>
[edit]Geweldige topic-titel trouwens :-)[/edit]
Dan ligt het waarschijnlijk aan die $category.

Zoals SanThe al zei, error checking, afhandeling etc.

Is $category een id of een stuk tekst ? Als het een id is moet je de quotes eromheen weglaten.

Als het een stuk tekst is moet je de waarde escapen met mysql_real_escape_string($category)

Als je dit niet doet en er zitten quotejes of iets dergelijks in die tekst gaat de query inderdaad fout


Verander dit:

$query = mysql_query("SELECT `id`, `categorie`, `onderwerp` FROM forum WHERE categorie = '". $categorie ."' AND topic_key = '0'");


eens in dit:

$query = "SELECT `id`, `categorie`, `onderwerp` FROM forum WHERE categorie = '". $categorie ."' AND topic_key = '0'";

die($query) // kijk naar de query, klopt er iets niet ?

$result = mysql_query($query);
Ik had er al bij gezet:
or die(mysql_error());


en dan krijg ik dus:
Table 'nn-tutorials.forum' doesn't exist

Het gekke is, dat wanneer het zelfde in de root staat http://localhost/xampp/www/ dat ik dan geen errors krijg.
Connect je niet per ongeluk met de verkeerde database? Klopt de db naam?
include("db_connect.php");

Kan ie die wel vinden in die directory waar het script staat ?
Hij kan hem wel vinden, anders kreeg je een include error.

Ik geef de inhoudt van de db_connect.php ook maar:


<?php
$host	= "localhost";
$user   = "root";
$pass   = "";
$datb   = "nn-tutorials";
$connect= mysql_connect("$host", "$user", "$pass") or die (mysql_error());
$select = mysql_select_db("$datb", $connect) or die (mysql_error());
?>


Misschien, dat ik het al weet. Ik denk dat het komt omdat de andere db_connect.php in de root anders is als deze.
Ja, dan is het logisch. De ene keer pakt hij dan de ene db_config en de andere keer de andere.
[edit]Was het dus toch een terechte MySQL error ;-)[/edit]
Maak 1 connect file, niet allemaal aparte en gebruik die voor alle files.


Tenzij je andere databases gebruikt natuurlijk.

Reageren