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

Résolu
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -  
Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   3
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   3
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   3 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Nouvelle_Informaticienne Messages postés 153 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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   Statut Membre Dernière intervention   47
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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   Statut Membre Dernière intervention   3
 
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