if-Abfrage in einer while-Schleife?

Warning: mysql_fetch_assoc(): 8 is not a valid MySQL result resource in E:\xampp\htdocs\XXX\navi.php on line 37

Nach dieser Fehlermeldung zu Urteilen ist in deinem Query ein Fehler.
Dabei sieht er recht gut aus. Prüfe doch mal ob du mit der Datenbank verbunden bist, es die Datenbank gibt gemäß dem Wert von $database_XXX, es die Tabelle namens "tabelle" gibt und darin das Feld "position".

Du kannst auch zunächst nach der while-Schleife folgendes schreiben um den Fehler etwas genauer zu sehen (hoffentlich, solang das Script noch soweit läuft):
PHP:
echo mysql_error();

Bitte nimm auch mal das Semikolon am Ende der if Klammer weg. Is ja häßlich.

Hier findest du noch weitere Hinweise zu Fehlermeldungen:
http://www.php-fehlermeldungen.de/topicmenu1/index0.html
 
Die navi_kat.php beginnt so:
PHP:
<?php require_once('Connections/XXX.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$colname_XXX = "-1";
if (isset($_GET['mid'])) {
  $colname_XXX = $_GET['mid'];
}
mysql_select_db($database_Mingashop);
$query_XXX = sprintf("SELECT * FROM tabelle WHERE id = %s", GetSQLValueString($colname_XXX, "int"));
$XXX = mysql_query($query_XXX) or die(mysql_error());
$row_XXX = mysql_fetch_assoc($XXX);
$totalRows_XXX = mysql_num_rows($XXX);
?>
Wobei es hier keinen Unterschied macht ob ich $row_XXX... drin lasse oder rausnehme, also vom Fehlerbild gesehen.

Weiter gehts so:
PHP:
<?PHP
if($row_XXX['url_tshirt'] == NULL){
echo "";
}
else {
echo "<span class=\"xxx_small\">- <a class=\"xxx_small\" href=\"index.php?link=shop&id=$row_XXX[id]&url=$row_XXX[url_tshirt]\">T-Shirts</a></span><br>";
}
?>
Diese Abfrage macht er 16 mal, jeweils für ein anderes Produkt.

Ganz am Ende kommt nochmal das hier:
PHP:
<?php
mysql_free_result($XXX);
?>

@ZodiacXP: ich bin mit der Datenbank verbunden, sie existiert auch, die Tabelle ist korrekt benamt und das Feld position gibt es ebenfalls. Die restliche Page greift ja über den selben Code auf die DB zu, ohne Probleme.
Eine erweitere Fehlermeldung auf Grund von echo mysql_error(); habe ich nicht bekommen, nur die gleiche Meldung wie vorher auch.
 
Zuletzt bearbeitet:
Hi,

Prüfe doch mal ob du mit der Datenbank verbunden bist, es die Datenbank gibt gemäß dem Wert von $database_XXX, es die Tabelle namens "tabelle" gibt und darin das Feld "position".

wenn da irgendwo der Hund begraben wäre, hätte das Script wie gesagt durch das "or die(..." abbrechen müssen (der Name ist Programm...). Der Fehler scheint ja auch nicht beim ersten Eintreten in die Schleife aufzutreten.

LG
 
Hi,

wenn Du in der innerhalb der Schleife inkludierten Datei $XXX überklatschst und dann auch noch die Resource plattmachst, ist das ja kein Wunder...
Du müsstest innerhalb der navi_kat.php eigene Variablennamen verwenden.

LG
 
Zuletzt bearbeitet:
wenn da irgendwo der Hund begraben wäre

Wenns mal ein Hund wär. Mittlerweile glaub ich echt an Marder im Parser :p

WOAH! Da isser!

Du schreib in navi.php

PHP:
$XXX = ....

und innerhalb der while includes du navi_dingenskirchen.php und dadrin steht:

PHP:
$XXX = ....

somit überschreibt er dein vorheriges Ergebnis vom Query und der ist dadurch unbrauchbar für die while geworden. *tanz*

EDIT: grml. kuddel du antwortdieb :p
 
Ja, das wars, vielen Dank euch!!

Jetzt ist nur das Problem das er dieses Submenü unter jedem Motiv anzeigt, und nicht nur unter dem das gerade angeklickt wurde...
//edit: okay, hab das Problem gelöst indem ich gesagt habe if($_GET['id'] == $row_XXX['id']

Nochmals vielen Dank für eure Hilfe. Sonst hätte ich noch 100 Jahre gebraucht, ehrlich.
 
Zuletzt bearbeitet:
Hallo,

würde sagen die Zeile
if($_GET['id']){ include("navi_kat.php") ; };

in eine WHILE Schleife kann nicht gehen, probiere es mal so

if(isset($_GET['id']))
require_once "navi_kat.php" ;

Gruss

Ja das mit der Variablen Deklaration, ist mir auch nicht aufgefallen :)
 
Zuletzt bearbeitet von einem Moderator:
Zurück