Aucune erreur mais ça ne marche pas! je ne comprend pas :(

Résolu/Fermé
Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 - Modifié par baladur13 le 20/04/2016 à 10:41
Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 - 22 avril 2016 à 15:58
Bonjour tt le monde,
Je me permets de vous demander un aide au niveau d'un problème dans l'insertion des donnes dans ma base donc j'ai une base de nom : intervenant contient les champs : nom_intervenant, prenom_intervenant, fonction_intervenant, type_intervenant en plus id(auto-incrément) et la date (automatique), je fais la saisie des 4 premier champs mais il me donne ni " insertion effectuée" ni "insertion échouée" il m'affiche une page vide sans erreur et sans résultat et ne fait jamais l'insertion dans la base de données ! s'il vous plait quelqu'un peut m'aider bah je suis sur que le problème est au niveau de l’exécution de la requête SQL mais je ne sais pas pourquoi ! j'ai réécris la requête 1000 fois afin de vérifier si il y a des erreurs au niveau d'orthographe mais toujours ça marche pas ! voici mon code d'insertion s'il vous plait : N.B je suis débutante

Je vous remercie par avance
<?php 
//connection au serveur 
$cnx = mysqli_connect( "localhost", "root", "","pst" ) ; 
//sélection de la base de données: 
$db = mysqli_select_db( $cnx,"pst" ) ; 
//récupération des valeurs des champs: 
//Acronyme du projet 
$nom = $_POST["nom"] ; 
//Titre du projet 
$prenom = $_POST["prenom"] ; 
//duree du projet 
$fonction = $_POST["fonction"] ; 
//Estimation du financement recherche 
$typeinter = $_POST["typeinter"] ; 
echo'<br><br><br><br><br><br>'; 
echo'<div>'; 
echo'<br>'; 
echo'<br>'; 
echo "les donnees sont :".$nom.' '.$prenom.' '.$fonction.' '.$typeinter.' '; 
//création de la requête SQL: 
$sql = "INSERT INTO intervenant (nom_intervenant,prenom_intervenant,fonction_intervenant,type_intervenant)VALUES('$nom','$prenom','$fonction','$typeinter')"; 
echo"avant execution requette!!"; 
//exécution de la requête SQL: 
$requete = mysqli_query($cnx,$sql) or die( mysql_error() ) ; 
echo"apres execution requette!!"; 
//affichage des résultats, pour savoir si l'insertion a marchée: 
if( $requete) 
{ 
echo("<br> L insertion a ete correctement effectuee<br>") ; 
echo'<br>'; 
} 
else 
{ 
echo("L'insertion à échouée") ; 
echo'<br>'; 
} 
echo'</div>'; 
?>


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 3
22 avril 2016 à 15:58
les donnees sont :y y y yy
avant execution requette!!
La requete est : INSERT INTO intervenant (nom_intervenant,prenom_intervenant,fonction_intervenant,type_intervenant)VALUES('y','y','y','yy')apres execution requette!!
L insertion a ete correctement effectuee
je vous remercie
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 avril 2016 à 13:33
Essayes ça :

<?php
//Fichier : cnxBDD.php
//Connexion à la BDD :
$host = "localhost";
$user = "root";
$password = "";
$database = "pst";
$db = mysqli_connect($host, $user, $password, $database);

/* Vérification de la connexion */ 
if (!$db) {
    printf("Echec de la connexion : %s\n", mysqli_connect_error());
    exit();
}
?>



<?php 
//Affichage des erreurs PHO
error_reporting(E_ALL);

//connexion à la BDD
require_once "cnxBDD.php";

//récupération "propre" des valeurs des champs: 
//Acronyme du projet 
$nom = isset($_POST["nom"]) ? $_POST["nom"] : NULL ; 
$prenom = isset($_POST["prenom"]) ? $_POST["prenom"]: NULL ; 
$fonction = isset($_POST["fonction"]) ? $_POST["fonction"] : NULL ; 
$typeinter = isset($_POST["typeinter"]) ? $_POST["typeinter"] : NULL ; 

echo'<br><br><br><br><br><br>'; 
echo'<div>'; 
echo'<br>'; 
echo'<br>'; 
echo "les donnees sont :".$nom.' '.$prenom.' '.$fonction.' '.$typeinter.' '; 
//création de la requête SQL: 
$sql = "INSERT INTO intervenant
        (nom_intervenant,prenom_intervenant,fonction_intervenant,type_intervenant)
        VALUES('$nom','$prenom','$fonction','$typeinter')"; 

echo"avant execution requette!!"; 
//exécution de la requête SQL: 
$requete = mysqli_query($cnx,$sql) or die(mysqli_error($cnx) ) ; 
echo"apres execution requette!!"; 
//affichage des résultats, pour savoir si l'insertion a marchée: 
if( $requete) 
{ 
echo("<br> L insertion a ete correctement effectuee<br>") ; 
echo'<br>'; 
} 
else 
{ 
echo("L'insertion à échouée") ; 
echo'<br>'; 
} 
echo'</div>'; 
?>

-1
Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 3
20 avril 2016 à 14:04
Je vous remercie d'abord , en suite meme si j'ai essayé le nouveau code il m'affiche meme page :
"les donnees sont :a a a avant execution requette!!"
il m affiche pas "apres execution de la requete " donc je crois il se bloque au niveau de la requete !! je ne sais pas depuis le matin j essai mais je ne trouve pas la source de l'erreur pour la corriger ! merci encore une fois
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021
20 avril 2016 à 15:52
Commence par faire un ECHO de la requête
$sql = "INSERT INTO intervenant
        (nom_intervenant,prenom_intervenant,fonction_intervenant,type_intervenant)
        VALUES('$nom','$prenom','$fonction','$typeinter')"; 

echo "<br> La requete est : ".$sql;

echo"avant execution requette!!"; 

Puis testes la DIRECTEMENT dans ta BDD (via phpmyadmin par exemple).
Cela te permettra de savoir si le souci se situe au niveau de la requête ou non.

Ensuite, je viens de le voir ... si tu as utilisé mon code de connexion à la BDD .. j'ai mis la connexion dans $db ....
Sauf que dans les requêtes ... il y a $cnx ...
$requete = mysqli_query($cnx,$sql) or die(mysqli_error($cnx) ) ; 

Donc remplace les $cnx par $db
0
Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 3 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
20 avril 2016 à 16:03
malheureusement rien de special sauf q'une nouvel erreur
affichage de :
les donnees sont :x y z t
avant execution requette!! Duplicate entry '0' for key 'PRIMARY'
pour votre code j'ai remarque $bd et $cnx
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021
20 avril 2016 à 17:38
Rien de spécial ????? ?
Alors que ça t'affiche une information IMPORTANTE !!!

Duplicate entry '0' for key 'PRIMARY'


En gros ... tu as un champ dans ta table que tu as défini comme devant être UNIQUE ... et tu essayes d'insérer une ligne qui cotient une valeur déjà existante dans ta table !
Voila ton erreur !!
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
20 avril 2016 à 17:38
As tu bien défini ta clé PRIMAIRE comme AUTO-INCREMENTE ??? Sinon.. normal que ça reste à zéro.
0
gabinhocity Messages postés 196 Date d'inscription dimanche 6 juin 2010 Statut Membre Dernière intervention 20 avril 2016 47
Modifié par gabinhocity le 20/04/2016 à 11:28
Bonjour,
essaye plutôt de déclarer ta connexion et la sélection de ta base de cette manière suivante.
Lors de la recuperation du formulaire essaye aussi plutôt les simples cotes à la place des doubles

Enfin Pour ton affichage des résultats si ca ne t'affiche rien c'est tout a faire normal car tu fais une condition sur rien du tout. Je m'eplique dans ta condition tu met SI (CONDITION) Alors... au lieu de SI (CONDITION=VRAI) Alors...

 
<?php
//connexion au serveur MySql
$db=mysql_connect("127.0.0.1","id","mdp") or die("erreur de connexion".mysql_error());
//connexion à la base pst
mysql_select_db("pst",$db) or die("erreur de connexion à la base");
?>

//récupération des données à partir du formulaire
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$fonction=$_POST['fonction'];

//création de la requête SQL:
$req = "INSERT INTO intervenant (nom_intervenant,prenom_intervenant,fonction_intervenant,type_intervenant)VALUES('$nom','$prenom','$fonction','$typeinter')";

mysql_query($req) or die("erreur insertion ! ".mysql_error());
-2
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
20 avril 2016 à 12:08
Bonjour,
Attention.... tu utilises l'ancienne extension MYSQL .... considérée comme OBSOLETE !
Je t'invite à lire ceci : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Puis à passer à Mysqli ou à la PDO
0
Nouvelle_Informaticienne Messages postés 153 Date d'inscription mercredi 20 avril 2016 Statut Membre Dernière intervention 20 décembre 2021 3
20 avril 2016 à 14:07
Je vous remercie pour votre réponse, mais moi j'utilise SQLI donc le probleme c'est pas dans SQL OU SQLI c'est une nouvelle facons c tt mais le probleme c'est au niveau instruction il y a surement qlq chose qui ne marche pas mais je la trouve pas . merci qd meme :)
0