Mes requêtes SQL ne s’exécute pas

Résolu/Fermé
cyril-yann Messages postés 4 Date d'inscription vendredi 22 juin 2018 Statut Membre Dernière intervention 22 juin 2018 - 22 juin 2018 à 11:40
cyril-yann Messages postés 4 Date d'inscription vendredi 22 juin 2018 Statut Membre Dernière intervention 22 juin 2018 - 22 juin 2018 à 16:21
Bonjour, je ne sais pas si c'est le bon forum pour poser ma question. Veuillez m'excusez c'est la première fois que je pose un question sur un forum.

Je suis en stage dans une pizzeria pour leur faire un site web. Pour que mon maître de stage puisse modifier les infos des pizzas, j'ai donc créé un base de donnée contenant les pizzas.
Mais le problème est le suivant:
mes requêtes SQL ne fonctionne pas malgré un test sous PHPMyAdmin ou elle fonctionne.

Voici mon code
<!doctype html>
<html>
<form method="POST" action="">

<link rel="stylesheet" id="child-theme-css" href="css/style.css" type="text/css" media="all" />

<p> Numéro pizza <input type="text" name="numpizza"> </p>
<p> Nom pizza <input type="text" name="nompizza"> </p>
<p> Descriptif pizza <input type="text" name="despizza"> </p>
<p> Prix enfants <input type="text" name="prixe"> </p>
<p> Prix grande <input type="text" name="prixg"> </p>
<p> Prix XXL <input type="text" name="prixx"> </p>

<input type ="submit" name="Ajouter" value="Ajouter">
<input type = "submit" name="Supprimer" value="Supprimer">
<input type ="submit" name="Modifier" value="Modifier">

</form>
<form action="index.php">
<input type="submit" name="retour" value="Accueil"/>
</form>
<?php

$Serveur = "localhost";
$Util = "root" ;
$Mdp = "" ;
$Base = "valpizzas" ;

//Verification si les zone de texte sont remplies
if(!empty($_POST['numpizza']))
{
$num=$_POST['numpizza'];
}

if(!empty($_POST['nompizza']))
{
$nom=$_POST['nompizza'];
}

if(!empty($_POST['despizza']))
{
$des=$_POST['despizza'];
}

if(!empty($_POST['prixe']))
{
$prixE=$_POST['prixe'];;
}

if (!empty($_POST['prixg']))
{
$prixG=$_POST['prixg'];
}

if (!empty($_POST['prixx']))
{
$prixX=$_POST['prixx'];
}

//Connexion a la base de donnée
$Connexion = new mysqli ($Serveur, $Util, $Mdp, $Base);
if($Connexion->connect_error == false)
{
//Bouton pour ajouter une pizzas
if(isset($_POST['Ajouter']))
{
//Les nom des tables sont bonnes
$nomRequete="INSERT INTO pizzas
(Numéro, Nom, Descriptif, Enfant, Grande, XXL)
VALUES
('', '$nom', '$des', $prixE, $prixG, $prixX);"
or exit(mysql_error($connexion));

}
//Bouton pour supprimer une pizza
else if(isset($_POST['Supprimer']))
{
$nomRequete="DELETE FROM pizzas
WHERE Numéro=$num;"
or exit(mysql_error($connexion));
}
//Bouton pour modifier une pizza
else if(isset($_POST['Modifier']))
{
//Les nom des tables sont bonnes
$nomRequete="UPDATE pizzas
SET Numéro=$num, Nom='$nom', Descriptif='$des', Enfant=$prixE, Grande=$prixG, XXL=$prixX
WHERE Numéro=$num"
or exit(mysql_error($connexion));
}
//Execution de la requête
$ExecRequete = mysqli_query($Connexion, $nomRequete);
if ($ExecRequete == true)
{
echo "La requette a fonctionée ! ";
}
else
{
echo "La requête n'a pas fonctioné ! ";
}
}
else
{
echo "erreur de connexion";
}
echo $nomRequete;
?>
</html>

Merci de votre aide car je ne vois pas ou peut être l'erreur car c'est exactement ce que j'ai vu en cours.

1 réponse

jee pee Messages postés 39621 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 233
Modifié le 22 juin 2018 à 12:09
Bonjour,

Tu devrais bosser avec ton collègue : https://forums.commentcamarche.net/forum/affich-35416585-requete-sql-ne-s-execute-pas
lui est chargé de la lecture et toi de l'écriture dans la base ?

Il faudrait t'habituer a bien développer la gestion des codes erreur. Ne pas te contenter "Fonctionne" "Ne fonctionne pas". La base de données doit renvoyer des messages d'erreur beaucoup plus pertinents : table inexistante, champ inexistant, valeur incohérente, ...

0
cyril-yann Messages postés 4 Date d'inscription vendredi 22 juin 2018 Statut Membre Dernière intervention 22 juin 2018
Modifié le 22 juin 2018 à 15:21
Merci de te réponse en effet mon collègue s'occupe d'afficher sur le site le contenue de la base de donnée. Et moi de permettre la modification, ajout .

J'ai vérifié le nom de ma base de donné, le mot de passe, l'identifiant, le nom de ma table. J'ai juste modifié mon champ Numéro en Idpizzas pour voir si cela ne venait pas du "é" qui poserait problème.

Dès que je clic sur n'importe le quel de mes boutons par exemple pour ajouter j'obtient mon message : La requête n'a pas fonctionné.

Donc ma requête est bien lue mais pas exécuté, alors que sous PHPMyAdmin elle fonctionne.
Je ne voit donc pas pourquoi il y a un problème. Et je débute dans le développement donc je n'ai pas encore pris de bonne habitude, merci de ton conseil.

J'espère avoir été plus claire sur mon problème. Merci de votre aide.
0
jee pee Messages postés 39621 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 233 > cyril-yann Messages postés 4 Date d'inscription vendredi 22 juin 2018 Statut Membre Dernière intervention 22 juin 2018
Modifié le 22 juin 2018 à 16:09
Je ne fais ni php ni mysql, je vais donc laisser un autre intervenant te conseiller sur la meilleure façon de gérer les erreurs.

Par ailleurs, même sans connaitre la syntaxe de php, il y a du code qui ne me semble pas logique les blocs :
$nomRequete="DELETE FROM pizzas
WHERE Numéro=$num;"
or exit(mysql_error($connexion));
le or exit ne doit correspondre à rien.

Puis fonctionnellement sur l'ajout on devrait tester que l'objet n'existe pas (à la limite si l'id est attribué automatiquement ce n'est pas nécessaire), mais surtout en modification et suppression, il faut s'assurer que l'objet existe, on ne réalise pas l'action à l'aveugle. Là la gestion des erreurs peut aussi être très utile, par exemple si l'error mysql c'est l'objet n'existe pas on peut répondre "Pizza inexistante" et quand le code retour est OK répondre "Mise à jour effectuée".
0
cyril-yann Messages postés 4 Date d'inscription vendredi 22 juin 2018 Statut Membre Dernière intervention 22 juin 2018
22 juin 2018 à 16:21
Merci de ta réponse j'ai finalement résolu mon problème par hasard en modifiant mon code. Désolé du dérangement.
0