8791 sujets

Développement web côté serveur, CMS

bonjours à tous
j'ai un problème dans ma requête Sql, lorsque j'ai exécuté la requête dans Mysql il marche parfaitement par contre dans le fichier php il ne marche pas


<?php
$link = mysql_connect("localhost","root","") or die("Impossible de se connecter : mysql_error());

mysql_select_db("gestionbd") or die("erreur de connexion a la base de donnees");
echo"conx terminé";
echo "\n";
$var = abs(intval($_GET['id']));
echo $var;
echo "\n";
// Creation et envoi de la requete
$query = 'select email,title,quantity,prod_price,market_price,user.realname,gender from user,prod,`order` where `order`.user_id=user.id and `order`.prod_id=prod.id and `order`.id =\''.$var.'\'';

$result = mysql_query($query);

// Recuperation des resultats
if (!mysql_fetch_row($result)) {
echo "Aucun enregitrement ne correspond\n";
}
else 
{
	while($row = mysql_fetch_row($result))
		$email = $row[2];
        echo $email;
		
 	}


mysql_close($link);

?>





il ne retourne rien ni valeur ni erreur Smiley confus
est ce vous pouvez m'aider S.V.P?
Modifié par aharrarh (30 Sep 2011 - 20:10)
Salut,

Commence par augmenter le niveau d'erreurs, tout en haut de ton code :

error_reporting( E_ALL | E_STRICT );


Ensuite, remplace cette ligne :

$result = mysql_query($query);


par :

$result = mysql_query($query) or die( mysql_error() . '<br />' . $query );


Et dis-nous si quelque chose s'affiche.


Attention, ces morceaux de code ne doivent pas apparaitre en production, uniquement dans ton environnement de développement.
Je pensais qu'il y en avait 2 :

		$email = $row[2];

        echo $email;



et si tu écris plutôt :
$row = mysql_fetch_row($result);
$email = $row[2];
echo $email;

Modifié par loicbcn (30 Sep 2011 - 10:03)
merci bcp pour vos réponse
lorsque j'ai augmenté le niveau d'erreurs ,j'ai reçu le message suivant :

Notice: Undefined variable: email in /account/order/mailing.php on line 24

ligne 24 c'est(
echo $email
)
Salut,

Agylus a écrit :
Commence par augmenter le niveau d'erreurs, tout en haut de ton code :
error_reporting( E_ALL | E_STRICT );

Ensuite, remplace cette ligne :
$result = mysql_query($query);

par :
$result = mysql_query($query) or die( mysql_error() . '&lt;br /&gt;' . $query );

Et dis-nous si quelque chose s'affiche.
Attention, ces morceaux de code ne doivent pas apparaitre en production, uniquement dans ton environnement de développement.


Faut arrêter le "or die()". Monter le niveau d'alerte c'est bien mais autant le faire jusqu'au bout : arrêter le script en cas d'erreur non récupéré
- transformer en exception pour avoir le parcours de l'erreur ErrorException.
- set_exception_handler pour une fonction des exceptions non attraper. (pour avoir un affichage limité par exemple, mais une extension comme xdebug est préférable)
error_reporting(E_ALL | E_STRICT);
function exception_error_handler($errno, $errstr, $errfile, $errline) {
	throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler('exception_error_handler');



aharrarh a écrit :
lorsque j'ai augmenté le niveau d'erreurs ,j'ai reçu le message suivant :

Notice: Undefined variable: email in /account/order/mailing.php on line 24

ligne 24 c'est
echo $email

loicbcn à donné un élément de réponse :
loicbcn a écrit :
Bonjour, ne manquerait - il pas des {} pour le while ?
bonjour
j'ai ajouté les accolades et l'erreur a disparu !!!
mais malheureusement la résultat est nul et la page apparait blanc Smiley decu Smiley bawling
a écrit :

Agylus a écrit :
Commence par augmenter le niveau d'erreurs, tout en haut de ton code :

error_reporting( E_ALL | E_STRICT );


Ensuite, remplace cette ligne :

$result = mysql_query($query);


par :

$result = mysql_query($query) or die( mysql_error() . '&lt;br /&gt;' . $query );


Et dis-nous si quelque chose s'affiche.
Attention, ces morceaux de code ne doivent pas apparaitre en production, uniquement dans ton environnement de développement.



Faut arrêter le "or die()". Monter le niveau d'alerte c'est bien mais autant le faire jusqu'au bout : arrêter le script en cas d'erreur non récupéré
- transformer en exception pour avoir le parcours de l'erreur ErrorException.
- set_exception_handler pour une fonction des exceptions non attraper. (pour avoir un affichage limité par exemple, mais une extension comme xdebug est préférable)

error_reporting(E_ALL | E_STRICT);

function exception_error_handler($errno, $errstr, $errfile, $errline) {

throw new ErrorException($errstr, 0, $errno, $errfile, $errline);

}

set_error_handler('exception_error_handler');




aharrarh a écrit :
lorsque j'ai augmenté le niveau d'erreurs ,j'ai reçu le message suivant :

Notice: Undefined variable: email in /account/order/mailing.php on line 24

ligne 24 c'est
echo $email


loicbcn à donné un élément de réponse :

loicbcn a écrit :
Bonjour, ne manquerait - il pas des {} pour le while ?
Smiley decu Smiley decu Smiley decu Smiley decu Smiley decu Smiley decu
aharrarh a écrit :
bonjour
j'ai ajouté les accolades et l'erreur a disparu !!!
mais malheureusement le résultat est nul et la page apparaît blanc Smiley decu Smiley bawling

Agylus a écrit :
Commence par augmenter le niveau d'erreurs, tout en haut de ton code :

error_reporting( E_ALL | E_STRICT );


Ensuite, remplace cette ligne :

$result = mysql_query($query);


par :

$result = mysql_query($query) or die( mysql_error() . '&amp;lt;br /&amp;gt;' . $query );


Et dis-nous si quelque chose s'affiche.
Attention, ces morceaux de code ne doivent pas apparaitre en production, uniquement dans ton environnement de développement.



Faut arrêter le &quot;or die()&quot;. Monter le niveau d'alerte c'est bien mais autant le faire jusqu'au bout : arrêter le script en cas d'erreur non récupéré
- transformer en exception pour avoir le parcours de l'erreur ErrorException.
- set_exception_handler pour une fonction des exceptions non attraper. (pour avoir un affichage limité par exemple, mais une extension comme xdebug est préférable)

error_reporting(E_ALL | E_STRICT);

function exception_error_handler($errno, $errstr, $errfile, $errline) {

throw new ErrorException($errstr, 0, $errno, $errfile, $errline);

}

set_error_handler('exception_error_handler');




aharrarh a écrit :
lorsque j'ai augmenté le niveau d'erreurs ,j'ai reçu le message suivant :

Notice: Undefined variable: email in /account/order/mailing.php on line 24

ligne 24 c'est
echo $email


loicbcn à donné un élément de réponse :

loicbcn a écrit :
Bonjour, ne manquerait - il pas des {} pour le while ?
Smiley decu Smiley decu Smiley decu Smiley decu Smiley decu Smiley decu
Je pense que la condition est mauvaise, mysql_fetch_row retourne une ligne de résultat et avance le pointeur du jeu de résultat. En gros, si tu ne récupère qu'une ligne de la db le if va l'extraire et le while ne va rien faire. Soit il faut utilisé mysql_num_rows soit une boucle do while:

if ($row = mysql_fetch_row($result))
{
  echo 'aucun résultats';
}
else
{
  do {
    echo $row[0];
  } while ($row = mysql_fetch_row($result)));
}
merci jo_link_noir
j'ai essayé votre code et j'ai reçu 'aucun résultats' lorsque j'ai essayé de mettre une requête simple avec une table, le résultat affiche dans la page mais si je met cette requête il marche dans my sql par contre dans le code php ne marche pas peut être le problème dans les guillemets de $var?


a écrit :
Je pense que la condition est mauvaise, mysql_fetch_row retourne une ligne de résultat et avance le pointeur du jeu de résultat. En gros, si tu ne récupère qu'une ligne de la db le if va l'extraire et le while ne va rien faire. Soit il faut utilisé mysql_num_rows soit une boucle do while:

if ($row = mysql_fetch_row($result))

{

echo 'aucun résultats';

}

else

{

do {

echo $row[0];

} while ($row = mysql_fetch_row($result)));

}
youuuupi il marche maintenant merci bcp mes amis

if ($row = mysql_fetch_row($result))

{

echo $row[0];

}

else

{

do {

echo $row[0];

} while ($row = mysql_fetch_row($result)));

}
Il faudrait peut-être commencer à développer avec « try catch » pour la gestion des erreurs.

Ce n'est pas le but des « try catch » que de récupérer les niveaux d'erreurs ?

M'enfin . . . Smiley smile . Bon d'ac encore faut-il savoir ce que représente les niveaux d'erreurs.

ÉDIT:

Baaahhh ! - Eh bien oui c'est manquant au niveau des tutos.
Quelqu'un peut me faire un lien signé alsacréations, qui raconte comment gérer les erreurs ? - Disons .php ?

Gérer les erreurs c'est savoir écrire. C'est savoir gérer l'application avant même sa diffusion.

..
Modifié par zardoz (01 Oct 2011 - 03:08)