Beste PHPhelpers,

Ik heb een scriptje dat producten uit een database haalt en naast elkaar zet, als je erop klikt dan verschijnt de beschrijving en foto in een popup.

Als ik het online zet verschijnt in de table 3 verschillende foutmeldingen, een collega van mij houdt zich al enige tijd bezig met PHP maar hij kon het ook niet oplossen.

Nu is de enige oplossing om het hier op het forum te zetten.

Notice: Undefined index: catid in product_data.php on line 5
Producten:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in product_data.php on line 40

Notice: Undefined variable: show in product_data.php on line 49


De code:


<?php
error_reporting(E_ALL);
include("dbconnect.php");			
$sql = "SELECT * FROM categorien, categorie_per_product, producten WHERE 
producten.PRODUCT_ID=categorie_per_product.PRODUCT_ID AND 
categorien.CATEGORIE_ID=categorie_per_product.CATEGORIE_ID";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Producten</title>
<script type="text/JavaScript">
<!--
function MM_popupMsg(msg) { //v1.0
  alert(msg);
}
//-->
</script>
<style type="text/css">
<!--
.producten {
	background-color: #0000FF;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
-->
</style>
</head>

<body>



<b>Producten: </b>
<table width="651" height="20" cellpadding="0" cellspacing="0" style="border:solid 1px #000000">
    <tr>
        <td width="150" valign="top">
		<?php
		$sql = "SELECT * FROM categorien";
		$cat_resultaat = mysql_query($sql); 
		while ($rij = mysql_fetch_object($cat_resultaat)){
		$catid = $rij["CATEGORIE_ID"];
		$catnaam = $rij["naam"];
		echo "<a href='$PHP_SELF?show=$show&id=$catid&naam=$catnaam'>$catnaam</a><br>";

		 }
		 ?>		</td>
        <td width="348">
		<?php 
		if ($show){
			$product = ("");              
			$count = 0;  		
			$pro_resultaat = mysql_query($sql);  
			echo ("<table cellspacing='0' cellpadding='5' width='100%' border='1' style='border:solid 1px #000000'>");              			              
				while ($rij = mysql_fetch_array($pro_resultaat)) {                  
				$proid = $rij["PRODUCT_ID"];
				$pronaam = $rij["naam"];
				$proimage = $rij["image"];
				
					if($count%2 == 0) {                     
					$product = "</tr><tr>";       
					}                     
					$product = ("<td class='producten' align='center'><a href='#' onclick='MM_popupMsg('product.php?proid=$proid&pronaam=$pronaam'><img src='producten/$proimage'><br>$pronaam</a></td>");                     	
					$count++;              
				}     			              
				if ( $product != "" ){                  
					echo "$product";              
					} else {
					echo "Er zijn geen producten aanwezig!";
					exit;               
			echo "</table>";
			}
		}
	
	
		  ?>
	    </td>
    </tr>
</table>

</body>
</html>


Ik hoop dat iemand mij kan helpen bij het oplossen, van dit.

Alvast bedankt!

Marlon
Voer eens SELECT * FROM categorien uit in phpmyadmin. En voeg eens wat controlles in, waarschijnlijk mislukt je query maar je script gaat gewoon verder.
het zijn allemaal notices dus geen errors het script werkt dus naar behoren.

undefined index betekent dat de variabel niet is 'geset'.
je kan dat afvangen door:
if(!isset($catid)) {
$catid = '';
}


volgens mij werkt dit dan, maar sla me er niet op dood
Wat is regel 5. Volgens mij kloppen de regelnummers hierboven niet met je script.
Ik heb een aantal controles toegevoegd, dit werkte dus wel, maar nu geeft hij nog steeds weer dat show undifined is.

Notice: Undefined variable: show in /data/members/paid/m/a/mahl-webdesign.com/htdocs/www/dynamast/data_producten.php on line 52

http://www.mahl-webdesign.com/dynamast/data_producten.php


<?php
error_reporting(E_ALL);
include("dbconnect.php");			
$sql = "SELECT * FROM categorien, categorie_per_product, producten WHERE 
producten.PRODUCT_ID=categorie_per_product.PRODUCT_ID AND 
categorien.CATEGORIE_ID=categorie_per_product.CATEGORIE_ID";
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Producten</title>
<script type="text/JavaScript">
<!--
function MM_popupMsg(msg) { //v1.0
  alert(msg);
}
//-->
</script>
<style type="text/css">
<!--
.producten {
	background-color: #0000FF;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}
-->
</style>
</head>

<body>



<b>Producten: </b>
<table width="651" height="20" cellpadding="0" cellspacing="0" style="border:solid 1px #000000">
    <tr>
        <td width="150" valign="top">
		<?php			
		if (!($cat_resultaat = mysql_query ($sql))) {
  			trigger_error (mysql_error ());
			} else {
		while ($rij = mysql_fetch_object($cat_resultaat)){
		$catid = $rij["CATEGORIE_ID"];
		$catnaam = $rij["naam"];
		echo "<a href='$PHP_SELF?show=id=$catid&naam=$catnaam'>$catnaam</a><br>";
			}
		 }
		 ?>		</td>
        <td width="348">
		<?php 
		if ($show){
			$product = ("");              
			$count = 0;  		
		if (!($pro_resultaat = mysql_query ($sql))) {
  			trigger_error (mysql_error ());
			} else {
  
			echo ("<table cellspacing='0' cellpadding='5' width='100%' border='1' style='border:solid 1px #000000'>");              			              
				while ($rij = mysql_fetch_array($pro_resultaat)) {                  
				$proid = $rij["PRODUCT_ID"];
				$pronaam = $rij["naam"];
				$proimage = $rij["image"];
				
					if($count%2 == 0) {                     
					$product = "</tr><tr>";       
					}                     
					$product = ("<td class='producten' align='center'><a href='#' onclick='MM_popupMsg('product.php?proid=$proid&pronaam=$pronaam'><img src='producten/$proimage'><br>$pronaam</a></td>");                     	
					$count++;              
				}
					if ( $product != "" ){                  
					echo "$product";              
					} else {
					echo "Er zijn geen producten aanwezig!";
					exit;               
			echo "</table>";
			}
		}
	}
	
	
		  ?>
	    </td>
    </tr>
</table>

</body>
</html>
if ($show){

Waar komt $show vandaan?

Edit: Dit is ook wel vreemd:
<a href='$PHP_SELF?show=id=$catid&naam=$catnaam'>$catnaam</a>
Nou de categorien staan als urls aan de linker kant, als ik op een url/link klik komen de producten op het scherm er naast.

Dus als ik op <a href='$PHP_SELF?show=id=$catid&naam=$catnaam'>$catnaam</a> klik dan moeten de producten onder de desbtreffende categorie tevoorschijn komen.

Maar er zitteen fouten in!
Probeer eens:


<?php

echo "<a href='".$_SERVER['PHP_SELF']."?show=id&amp;id=".$catid."&amp;naam=".$catnaam."'>".$catnaam."</a><br />";

?>


Ik volg ook niet helemaal wat je met show wil doen, maar dit lijkt mij de meest logische oplossing.

En variabelen graag buiten quotes :)

Edit: typo
Milo schreef op 09.07.2006 05:10
Probeer eens:


<?php

echo "<a href='".$_SERVER['PHP_SELF']."?show=id&id=".$catid."&naam=".$catnaam."'>".$catnaam."</a><br />";

?>


Ik volg ook niet helemaal wat je met show wil doen, maar dit lijkt mij de meest logische oplossing.

En variabelen graag buiten quotes :)

Edit: typo


Ik denk dat Milo dit wil doen:

<?php

echo "<a href='".$_SERVER['PHP_SELF']."?show=id&id=".$catid."&naam=".$catnaam."'>".$catnaam."</a><br />";

?>

Reageren