En mettant la requête ce-dessous j'ai le message d'erreur suivant :
<?php
$req = $bdd->prepare ('INSERT INTO jeux_video(nom, possesseur,
console, prix, nbre_joueurs_max, commentaires) VALUES(:nom,
:possesseur, :console, :prix, :nbre_joueurs_max, :commentaires)');
$req->execute(array(
'nom' =>$nom,
'possesseur' =>$possesseur,
'console' =>$console,
'prix' =>$prix,
'nbre_joueurs_max'=>$nbre_joueurs_max,
'commentaires'=> $commentaires
));
echo 'Le jeu a bien été ajouté !';
?>
Ensuite j'ai le message d'erreur ce-dessous :
! ) SCREAM: Error suppression ignored for
( ! ) Notice: Undefined variable: bdd in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 2
//---------------------------------------------------------//
//connexion à la BDD ET activation des erreurs PDO
//---------------------------------------------------------//
try{
$bdd =new PDO('mysql:host=localhost;dbname=test; charset=utf8', 'root', '');
// Activation des erreurs PDO
$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
$bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die('Erreur : ' . $e->getMessage());
}
$req = $bdd->prepare ('INSERT INTO jeux_video(nom, possesseur,
console, prix, nbre_joueurs_max, commentaires) VALUES(:nom,
:possesseur, :console, :prix, :nbre_joueurs_max, :commentaires)');
$req->execute(array(
'nom' =>$nom,
'possesseur' =>$possesseur,
'console' =>$console,
'prix' =>$prix,
'nbre_joueurs_max'=>$nbre_joueurs_max,
'commentaires'=> $commentaires
));
echo 'Le jeu a bien été ajouté !';
?>
Réponse: j'ai plein de messages d'erreur dont je t'envoie le détail
Notice: Undefined variable: nom in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 28
Call Stack
# Time Memory Function Location
1 0.0005 251624 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: possesseur in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 29
Call Stack
# Time Memory Function Location
1 0.0005 251624 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: console in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 30
Call Stack
# Time Memory Function Location
1 0.0005 251624 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: prix in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 31
Call Stack
# Time Memory Function Location
1 0.0005 251624 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: nbre_joueurs_max in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 32
Call Stack
# Time Memory Function Location
1 0.0005 251624 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: commentaires in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 34
Call Stack
# Time Memory Function Location
1 0.0005 251624 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'nom' cannot be null' in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 34
( ! ) PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'nom' cannot be null in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 34
Call Stack
# Time Memory Function Location
1 0.0005 251624 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
2 0.0455 262384 PDOStatement->execute( ) ..\requetepreparee_ajoutenregistrement.php:34
J'exécute le code et j'ai les messages d'erreur suivants :
( ! ) Notice: Undefined variable: nom in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 28
Call Stack
# Time Memory Function Location
1 0.0006 257512 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: possesseur in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 29
Call Stack
# Time Memory Function Location
1 0.0006 257512 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: console in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 30
Call Stack
# Time Memory Function Location
1 0.0006 257512 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: prix in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 31
Call Stack
# Time Memory Function Location
1 0.0006 257512 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: nbre_joueurs_max in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 32
Call Stack
# Time Memory Function Location
1 0.0006 257512 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Notice: Undefined variable: commentaires in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 34
Call Stack
# Time Memory Function Location
1 0.0006 257512 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'nom' cannot be null' in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 34
( ! ) PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'nom' cannot be null in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 34
Call Stack
# Time Memory Function Location
1 0.0006 257512 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
2 0.0140 268248 PDOStatement->execute( ) ..\requetepreparee_ajoutenregistrement.php:34
En fait je veux insérer les lignes ci-dessous pour insérer un enregistrement (d'après l'ouvrage du siteduzero consacré au php. Je ne sais pas en fait si les variables sont en GET ou en POST:
try
{
$bdd =newPDO('mysql:host=localhost;dbname=test','root','');
}
catch (Exception $e)
{
die('Erreur : '.$e->getMessage());
}
// On ajoute une entrée dans la table jeux_video
$bdd->exec('INSERT INTO jeux_video(nom, possesseur, console, prix,
nbre_joueurs_max, commentaires) VALUES(\'Battlefield 1942\',
\'Patrick\', \'PC\', 45, 50, \'2nde guerre mondiale\')');
echo 'Le jeu a bien été ajouté !';
J'ai le message d'erreur ci-dessous :
) SCREAM: Error suppression ignored for
( ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'nom' cannot be null' in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 46
( ! ) PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'nom' cannot be null in C:\wamp\www\ASTUCESVBAEXCEL\requetepreparee_ajoutenregistrement.php on line 46
Call Stack
# Time Memory Function Location
1 0.0044 260016 {main}( ) ..\requetepreparee_ajoutenregistrement.php:0
2 0.0068 271472 PDOStatement->execute( ) ..\requetepreparee_ajoutenregistrement.php:46
Par contre je n'ai pas compris ta question s'il s'agissait d'un formulaire et s'il fallait choisir entre GET et POST.
Pourrais tu m'expliquer le sens de ta question ? Merci d'avance.
Inutile de me répondre sur la différence entre GET et POST ainsi que sur la signification d'un formulaire je l'ai compris en lisant aujourd'hui mon fichier au format PDF du sitreduzero consacré au php et qui s'intitule Concevez-votre-site-web-avec-php-et-mysql.pdf. J'y ai lu aujourd'hui les chapitres consacrés aux GET, POST et aux formulaires.
Inutile de me répondre sur la différence entre GET et POST ainsi que sur la signification d'un formulaire je l'ai compris en lisant aujourd'hui mon fichier au format PDF du siteduzero consacré au php et qui s'intitule Concevez-votre-site-web-avec-php-et-mysql.pdf. J'y ai lu aujourd'hui les chapitres consacrés aux GET, POST et aux formulaires.
Déjà... je t'ai demandé de poster ton code en utilisant LES BALISES DE CODE....
Ce n'est pas compliqué quand même....
Au lieu d'avoir :
echo $mavariable;
En utilisant les Balises de code, visuellement c'est plus lisible :
Inutile de me répondre sur la différence entre GET et POST ainsi que sur la signification d'un formulaire
Ok.. si tu le dis.... mais peux tu répondre à ma précédente question :
d'où viennent tes variables ???
Sous entendu... montre nous le code ton ton formulaire... puisque c'est de lui que provienne certainement tes variables et dans lequel est précisé si l'envoi se fait en POST ou en GET.
J'ai lu tous tes liens consacrés à la gestion des erreurs et les balises de code. Pour ce qui est des variables je ne sais pas du tout s'il faut les envoyer en GET ou POST car ce n'est pas indiqué dans le chapitre consacré au mysql .
Ce n'est pas la peine d'écrire le mot "variables" en taille de police 18
Je t'envoie ci-dessous le code que j'ai trouvé dans le livre.
Code : PHP
<?php
try
{
$bdd =newPDO('mysql:host=localhost;dbname=test','root','');
}
catch (Exception $e)
{
die ('Erreur : '.$e-> getMessage());
}
// On ajoute une entrée dans la table jeux_video
$bdd ->exec('INSERT INTO jeux_video(nom, possesseur, console, prix,
nbre_joueurs_max, commentaires) VALUES(\'Battlefield 1942\',
\'Patrick\', \'PC\', 45, 50, \'2nde guerre mondiale\')');
echo 'Le jeu a bien été ajouté !'
;
?>
Que fait ce code ? Il ajoute une entrée dans la BDD pour le jeu « Battlefield 1942 », appartenant à « Patrick », qui fonctionne sur
« PC », qui coûte 45 euros, etc.
La présence de multiples apostrophes rend la requête un peu difficile à lire et à écrire à cause des antislashs
\
que l'on doit
rajouter devant. De plus, cette requête insère toujours les mêmes données. Comme on l'a vu dans le chapitre précédent, si on
veut rendre une partie de la requête variable, le plus rapide et le plus sûr est de faire appel aux requêtes préparées.
Partie 3 : Stocker des informations dans une base de données
162/309
www.siteduzero.com
Insertion de données variables grâce à une requête préparée
Si on choisit d'utiliser une requête préparée (ce que je vous recommande si vous souhaitez insérer des variables), le
fonctionnement est en fait exactement le même que dans le chapitre précédent :
Code : PHP
<?php
$req =$bdd->prepare(
'INSERT INTO jeux_video(nom, possesseur,
console, prix, nbre_joueurs_max, commentaires) VALUES(:nom,
:possesseur, :console, :prix, :nbre_joueurs_max, :commentaires)');
$req->execute(array(
'nom' =>$nom
'possesseur'=>$possesseur
,'console'=>$console
,'prix'=>$prix,
'nbre_joueurs_max'=>$nbre_joueurs_max
,'commentaires'=>$commentaires));
echo 'Le jeu a bien été ajouté !';
?>
C'est tout ce que j'ai trouvé dans le livre du siteduzero
Je vais encore écrire un truc en gros.... puisque ça fait 4 fois que je te le dis mais que tu ne l'as visiblement toujours pas vu (ou du moins pas mis en pratique)
Donc :
qui lui contient des variables... mais qui n'ont aucune valeur (puisque tu ne les as pas renseigné et qu'elle ne provienne pas d'un formulaire....
Si tu remplaces CHAQUE variable par une valeur...ça fonctionnera
par exemple :
$nom = 'TEST';
$possesseur ='Bidule';
$console = 'PS4';
$prix = '140';
$nbre_joueurs_max = 1;
$commentaires = "cette fois il y a des valeurs dans les variables";
$sql = 'INSERT INTO jeux_video(nom, possesseur,
console, prix, nbre_joueurs_max, commentaires) VALUES(:nom,
:possesseur, :console, :prix, :nbre_joueurs_max, :commentaires)';
$datas = array(
':nom' =>$nom,
':possesseur' =>$possesseur,
':console' =>$console,
':prix' =>$prix,
':nbre_joueurs_max'=>$nbre_joueurs_max,
'commentaires'=> $commentaires
);
// c'est comme ça qu'on fait correctement une requête en PDO
// dans un bloc TRY CATCH (tu dois le savoir puisque tu as lu les liens que je t'ai donné....)
// et bien entendu.. tu auras activé la gestion des erreurs PDO lors de la connexion à la bdd (ça aussi c'est dans les liens que je t'ai donné )
try{
$req = $bdd->prepare ($sql);
$req->execute($datas);
}catch(Exception $e){
echo " Erreur :" . $e->getMessage();
}
EDIT : Je viens de voir que je t'avais déjà expliqué comment poster du code sur le forum dans ta précédente question (au moins 3 fois déjà....)
Tu comprends vite à ce que je vois (ou pas....)
Il serait bien que tu te mettes à appliquer les consignes qui te sont données....... le forum a des règles... les respecter est un minimum si l'on souhaite profiter de l'aide des personnes qui prennent sur leur temps personnel pour te répondre.....
J'espère sincèrement que c'est le dernier rappel que je te fait à ce sujet
Merci.
Je ne peux que me répéter en te disant que j'ai lu tous tes liens jusqu'à présent. Au passage merci beaucoup pour ton aide. Il faut un certain temps pour intégrer le langage PHP. Par ailleurs je ne fait pas du copier coller, j'essaie vraiment de comprendre comment on écrit du code PHP correctement. Nicolas
J'ai également compris que les balises de code s'insèrent directement à partir de ce site et non à partir d'un éditeur de code comme notepad. Comme quoi tout finit par s'arranger.
Dans l'éditeur de code notepad+ il n'y a pas d'indentation de code. Par contre sur le site commentcamarche.net il y a un système d'indentation de code ce que je n'avais pas compris au début.
Bonsoir. Cela fait quelques mois que j’apprends le langage PHP. Je comprend parfaitement ce que j'écris contrairement à ce que tu viens de me dire. Cordialement. Nicolas
bien sûr que non... sinon tu ne serais pas venu demander de l'aide pour ce souci.....
Comprendre (approximativement disons... ) les lignes une par une est un début et n'est pas trop compliqué.... mais comprendre un ensemble de lignes de code, lignes qui vont, une fois réunies, devenir le "programme" .. là c'est autre chose.
Mais bon... Il faut apprendre et persévérer .. on est tous passé par là.
Si je vais sur ce forum c'est pour demander de l'aide parce que je n'ai jamais prétendu maitriser le langage PHP. Si cela t'embête de dépanner les utilisateurs de ce site il faut arrêter de faire de la modération sur ce site. Je suis quelqu'un d'assidu. Je pense qu'à force de travail et de ténacité j'arriverai à utiliser sans problème le langage PHP.
Tous les liens que tu viens de m'envoyer aujourd'hui sur les variables, les comparaisons et les fonctions je les ai déjà étudiés depuis des mois. PHP ne s'apprivoise pas aussi facilement.
Tous les liens que tu m'as envoyés aujourd'hui sur les variables, les comparaisons et les fonctions je les ai déjà étudiés depuis des mois dans l'ouvrage sur le PHP écrit par Mathieu Nebra et qui s'intitule Concevez-votre-site-web-avec-php-et-mysql.pdf. Nicolas
Le code ci-dessous exécute en php une requête sql avec alias mais je reçois le message d'erreur suivant
( ! ) Parse error: syntax error, unexpected '.' in C:\wamp\www\ASTUCESVBAEXCEL\requete_alias.php on line 16. Merci pour votre aide.
<?php
try
{
$bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$reponse =$bdd->query('SELECT UPPER(nom) AS nom_maj,possesseur,console,prix FROM jeux_video');
while ($donnees=$reponse->fetch())
{
echo $donnees['nom_maj']. . $donnees['possesseur']. . $donnees['console']. . $donnees['prix']'<br />';
}
$reponse ->closeCursor();
?>