Page 1 sur 2

Undefined variable en PHP5 et MYSQL5

Posté : 03 avr. 2007, 18:40
par Jean-Michel-Lyon
Bonjour,

J'ai un code qui fonctionne bien en PHP4, mais voilà en PHP5, j'ai l'erreur suivante Notice: Undefined variable: row in C:\\Web\browse.php on line 55
Cette erreur se produit à la lecture de la table categories, je suis novice en PHP, d'après ce que j'ai trouvé dans les différents foruml il semble qu'il faille déclarer les variables en php5, mais voilà je ne sais pas comment faire. Je place le code ci-après,
l'erreur se produit sur cette ligne
<td class="ms-color2-tl"><a href='browse.php?id=<?php echo($row['id']) ?>'> <?php echo($row['description']) ?></a></td>

Merci de votre aide.

Jean-Michel

<?php
$dbconn = @mysql_connect('localhost', 'root', 'mdp');
if (!$dbconn)
{
die('Error connecting to DB!');
}
	 //if (! @mysql_select_db('letschip_lcinewdb') ) 
	if (! @mysql_select_db('nombase') ) 
	{ 
		die( '<p>Unable to locate the main ' . 
       	 	'database at this time.</p>' ); 
	} 


if(isset($_GET['id']))
	$ID = $_GET['id'];
else
	$ID = 1;  

// Shipping is 3.50 per unit weight
$ship_factor = 3.5  
?>
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Browse Products</title>
<style>
<!--
.ms-color2-main { border-left-style: none; border-right-style: none; border-top-style: none; 
               border-bottom: 1.5pt solid black; background-color: silver }
.ms-color2-tl { font-weight: bold; color: white; border-left-style: none; border-right-style: 
               none; border-top-style: none; border-bottom: 1.5pt solid black; 
               background-color: maroon }
.ms-color2-top { font-weight: bold; color: white; border-left-style: none; border-right-style: 
               none; border-top-style: none; border-bottom: 1.5pt solid black; 
               background-color: maroon }
-->
</style>
</head>

<body bgcolor="#669900" link="#FFFF00" vlink="#FFFFFF">

<p><b><font face="Verdana" color="#FFFF00" size="5">Browse Products By Team.</font></b></p>
<table border="1" width="100%" id="table1" class="ms-color2-main">
	<!-- fpstyle: 9,011111100 -->
	<tr>
	<?
		$sql = "SELECT * from categories";
		$result = @mysql_query($sql);
		while  ($row = mysql_fetch_array($result))
		{
		?>
		<td class="ms-color2-tl"><a href='browse.php?id=<?php echo($row['id']) ?>'> <?php echo($row['description']) ?></a></td>
		<?
		}
	?>
	</tr>
</table>
<p>&nbsp;</p>

Posté : 03 avr. 2007, 18:45
par jojolapine
bonjour,
remplace ceci:
        $result = @mysql_query($sql);
par
        $result = mysql_query($sql) or die(mysql_error());

Posté : 03 avr. 2007, 19:08
par Invité
ça marche pas .

Jean-michel

Posté : 03 avr. 2007, 20:18
par jojolapine
évidemment que ça ne marche pas, mais quel est le message d'erreur obtenu ?

Posté : 03 avr. 2007, 20:30
par Invité
Toujours la même erreur :

Notice: Undefined variable: row in C:\Web\browse.php on line 56

Mais j'ai l'impression que la select ne se fait pas, la connexion à la base s'effectue (ça j'en suis sûr) parce que j'ai mis un message, par contre les accès aux tables ne se font pas.

Je suis avec IIS5 , avez-vous une idée ?

Jean-Michel

Posté : 03 avr. 2007, 21:03
par titerm
Déjà, commence par virer tous les @ devant les fonctions, cacher les messages d'erreur ne resous pas les erreurs... Et quand ca marche pas, on sait pas pourquoi...

Ensuite, qd tu verras les messages d'erreurs, tu sauras à quel endroit ca cafouille.

Posté : 03 avr. 2007, 21:06
par zeus
Déjà, pour le débugage, vire les @ qui feront apparaitre les messages d'erreurs.

Ensuite, le message d'erreur signifie que $row n'existe pas, donc que la fonction mysql_fetch_array() n'arrive pas à retourner qqchose.

Par contre, je ne comprend pas comment on rentre dans le while si $row n'est pas renseigné

Posté : 03 avr. 2007, 21:45
par Truc
Par contre, je ne comprend pas comment on rentre dans le while si $row n'est pas renseigné
L'un des champs "description" ou "id" n'existe pas dans la table "categories"... souci d'orthographe peut être. :-k

N'oublie pas le point virgule en fin de echo.

Posté : 03 avr. 2007, 21:46
par Jean-Michel-Lyon
Voilà, je mets mon code et le script de création de la table, si quelqu'un a la gentillesse de tester.

Merci à vous,

Voici le script de création de la table

Code : Tout sélectionner

CREATE TABLE `categories` ( `id` int(11) NOT NULL auto_increment, `description` varchar(100) NOT NULL default '', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=1 ;
Voici le code
<?php
$dbconn = @mysql_connect('localhost', 'root', 'mdp');
if (!$dbconn)
{
die('Error connecting to DB!');
}
	 //if (! @mysql_select_db('letschip_lcinewdb') ) 
	if (! @mysql_select_db('nombase') ) 
	{ 
		die( '<p>Unable to locate the main ' . 
       	 	'database at this time.</p>' ); 
	} 


if(isset($_GET['id']))
	$ID = $_GET['id'];
else
	$ID = 1;  

// Shipping is 3.50 per unit weight
$ship_factor = 3.5  
?>
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Browse Products</title>
<style>
<!--
.ms-color2-main { border-left-style: none; border-right-style: none; border-top-style: none; 
               border-bottom: 1.5pt solid black; background-color: silver }
.ms-color2-tl { font-weight: bold; color: white; border-left-style: none; border-right-style: 
               none; border-top-style: none; border-bottom: 1.5pt solid black; 
               background-color: maroon }
.ms-color2-top { font-weight: bold; color: white; border-left-style: none; border-right-style: 
               none; border-top-style: none; border-bottom: 1.5pt solid black; 
               background-color: maroon }
-->
</style>
</head>

<body bgcolor="#669900" link="#FFFF00" vlink="#FFFFFF">

<p><b><font face="Verdana" color="#FFFF00" size="5">Browse Products By Team.</font></b></p>
<table border="1" width="100%" id="table1" class="ms-color2-main">
	<!-- fpstyle: 9,011111100 -->
	<tr>
	<?
		$sql = "SELECT * from categorie";
  	 	$result = @mysql_query($sql);
		while  ($row = mysql_fetch_array($result))
		{
		?>
		<td class="ms-color2-tl"><a href='browse.php?id=<?php echo($row['id']) ?>'> <?php 

echo($row['description']) ?></a></td>
		<?
		}
	?>
	</tr>
</table>
<p>&nbsp;</p>

</body>

</html>

Posté : 04 avr. 2007, 10:54
par Expreg
D'où vient cette impression que tu n'écoutes pas ce qu'on te dit ?

Il y a 3 ou 4 personnes qui te demandent de virer les @ de ton code et à la lecture de celui-ci ce n'est pas fait.
Tu ne semble pas très coopératif dans le réglement de ton problème.

Posté : 04 avr. 2007, 10:56
par zeus
D'une manière plus nuancée, je suis 300% d'accord avec Expreg ...

Nous avons été plusieurs à te donner des pistes, nous ne t'avons pas redemandé ton code, tu ne nous as pas écouté :(

Pour qu'on arrive à t'aider, il faudrait peut être que tu mettes un peu du tiens ;)

Posté : 04 avr. 2007, 13:07
par Invité
Bonjour,

J'avais enlevé les @ mais comme ça na faisais rein, je vous donnais mon code pour essayer de vous aider, désolé si ce n'était pas ce que vous attendiez, je rectifie donc et voici ce que j'ai après avoir enle vé les @.


J'ai enlevé les @, le message d'erreur est toujours le même soit : Notice: Undefined variable: row in C:\\Web\browse.php on line 55

Jean-Michel

Posté : 04 avr. 2007, 14:35
par Jules Petibidon
un truc tout bete :

dans le code de la création de table, tu crées une table "catégories"...
et dans ton code PHP, tu recherches tes infos dans une table "catégorie"...
je pense qu'il y a quelque chose à en conclure... ;)

accessoirement je sais pas comment est configuré ton serveur, mais afficher les erreurs est un excellent remede contre la fatigue visuelle et l'étourderie ;)

Posté : 04 avr. 2007, 14:41
par jojolapine
Bonjour,

J'avais enlevé les @ mais comme ça na faisais rein, je vous donnais mon code pour essayer de vous aider, désolé si ce n'était pas ce que vous attendiez, je rectifie donc et voici ce que j'ai après avoir enle vé les @.


J'ai enlevé les @, le message d'erreur est toujours le même soit : Notice: Undefined variable: row in C:\\Web\browse.php on line 55

Jean-Michel
il t'avais également été conseillé d'afficher les erreurs sql, via des appels aux fonctions mysql de ce genre
mysql_*(...) or die(mysql_error());

Posté : 04 avr. 2007, 14:46
par Invité
C'est ce que j'ai fait, j'ai placé cette ligne
$result = mysql_query($sql) or die(mysql_error());
mais aucune erreur ne s'affiche, mis à part Notice: Undefined variable: row in C:\\Web\browse.php on line 55

Jean-Michel