Bonjour,
J'ai un petit souci au niveau de mon insertion à la bdd.
Décrivez ici votre code ou ce que vous cherchez à faire
function ajoutQuestion($nomAjout,$anneeAjout,$joueurAjout,$tempsAjout,$editeurAjout) {
if(!empty($nomAjout) && !empty($anneeAjout) && !empty($joueurAjout) && !empty($tempsAjout) && !empty($editeurAjout)){
$nomAjout = stripslashes($nomAjout);
$anneeAjout = stripslashes($anneeAjout);
$joueurAjout = stripslashes($joueurAjout);
$tempsAjout = stripslashes($tempsAjout);
$editeurAjout = stripslashes($editeurAjout);
$query = db()->prepare("insert into jeu('nom','nbjoueur','temps','annee','editeur')
values (:nom,:nbjoueur,:temps,:annee,':editeur')");
$query->bindValue(":nom", $nomAjout);
$query->bindValue(":nbjoueur", $joueurAjout);
$query->bindValue(":temps", $tempsAjout);
$query->bindValue(":annee", $anneeAjout);
$query->bindValue(":editeur", $editeurAjout);
$query->execute();
if (!$query->execute()) {
echo"Insertion impossible dans jeu </br>";
echo $nomAjout;
echo $joueurAjout;
echo $tempsAjout;
echo $anneeAjout;
echo $editeurAjout;
print_r($query->errorInfo());
}
} else {
echo "Insertion impossible dans jeu car il manque des paramètres";
}
}
Voici ce que j'ai actuellement sauf que cela ne fait strictement rien du tout au niveau de l'insert... l'errorinfo me dit qu'il y a une erreur de syntaxe mais je vois pas laquel. Une idée ?
Bonjour,
Il serait bien de nous donner l'erreur complète.
Enlever les ' autout de :editeur
Ne pas executer 2 fois la requêtes.
Voilà ce que me met l'errorinfo :
Array ( [0] => 42000 [1] => 1064 [2] => Erreur de syntaxe pr�s de ''nom','nbjoueur','temps','annee','editeur') values ('sonar','8','120','20' � la ligne 1 )
Sa marche par contre cela m'ajoute en double à chaque fois et si je rafraichis la page, cela m'ajoute également une entrée
J'ai virer un execute mais j'ai toujours le souci que si je refresh sa me rajoute un nouvelle entré.
c'est logique car ton navigateur garde un mémoire les données envoyées.
Une fois l'inscription faite, tu peux essayer de détruire $_POST ou de faire une redirection
j'ai penser à mettre ceci : header('Location :admin.php');
mais j'ai cela comme erreur ensuite
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator at wampserver@wampserver.invalid to inform them of the time this error occurred, and the actions you performed just before this error.
More information about this error may be available in the server error log.
Active les erreurs php pour voir toutes les erreurs de syntaxe, etc.....
Mais le header doit être mis avant le moindre affichage html, comme tes echos .....
mon header est dans mon controler comme cela
if (!empty($_POST['valider'])) {
//quelque soit le choix, l'appel est toujours le même
ajoutQuestion($_POST['nomAjout'],$_POST['anneeAjout'],$_POST['joueurAjout'],$_POST['tempsAjout'],$_POST['editeurAjout']);
// header('Location :admin.php');
} else {
// header('Location :/admin.php');
}
J'ai mis ceci
// Afficher les erreurs à l'écran
ini_set('display_errors', 1);
// Enregistrer les erreurs dans un fichier de log
ini_set('log_errors', 1);
// Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
ini_set('error_log', dirname(file) . '/log_error_php.txt');
Mais cela ne me donne rien de plus :/
Il te faut aussi celle-ci pour les afficher :
// Afficher les erreurs et les avertissements
error_reporting(E_ALL);
J'ai cela maintenant :
Warning: Use of undefined constant file - assumed 'file' (this will throw an Error in a future version of PHP) in C:\wamp\www\ludotheque\controller\action_admin.php on line 7
// Afficher les erreurs à l'écran
ini_set('display_errors', 1);
// Enregistrer les erreurs dans un fichier de log
ini_set('log_errors', 1);
// Nom du fichier qui enregistre les logs (attention aux droits à l'écriture)
ini_set('error_log', dirname(file) . '/log_error_php.txt');
error_reporting(E_ALL);
mon header est dans mon controler
Sauf que ta redirection est située après l'appel de la fonction qui elle même contient de l'affichage de texte.
Ton erreur de constante est dù à ceci :
ini_set('error_log', dirname(file) . '/log_error_php.txt');
file
n'est pas une constante, les constantes sont en UPPERCASE, tu voulais probablement utiliser la constante __FILE__
.
et du coup que faudrait-il faire?
Si tu parles de l'erreur qui concerne la constante, ma réponse précédente contient en elle la résolution de l'erreur, soit de remplacer file
par __FILE__
.
Est-ce si difficile que ça à comprendre ?