Bonjour,
J'ai un petit soucis avec la fonction PDO, je passait en mysql_query avant, et donc c'est un peu différent.
Voilà j'ai pratiquement tout fait correctement, mais les valeurs ne s'enregistrent pas dans la base de données lors de l'appuie sur le bouton "submit" qui à bien évidemment son name="ajouterappel".
Tout ce qui est contenu dans <form>
détient la valeur 'name="lenom"', tout est OK de se côté, je pense que l'erreur vient du prepare. Mais je ne sais pas où.
Dans la base de donnees, les champs sont :
ID
data
nom
prenom
numero
type
objet
operateur
resume
Et voici le code PHP du submit
<?php
if(isset($_POST['ajouterappel'])){
$data = date('d/m/Y H:i:s');
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$numero = $_POST['numero'];
$type = $_POST['type'];
$objet = $_POST['objet'];
$operateur = $_POST['operateur'];
$resume = $_POST['resume'];
$req = $odb->prepare("INSERT INTO lesappels (data, nom, prenom, numero, type, objet, operateur, resume) VALUES (NULL, :data, :nom, :prenom, :numero, :type, :objet, :operateur, :resume)");
$req->execute(array(
':data' => $data,
':nom' => $nom,
':prenom' => $prenom,
':numero' => $numero,
':type' => $type,
':objet' => $objet,
':operateur' => $operateur,
':resume' => $resume));
echo '<div class="alert alert-success" style="margin-top: 25px;"><b>L\'appel à été ajouté avec succès - <a href="historique-appel.php?numero='.$numero.'"><font color="white"><u>Accéder à l\'historique du '.$numero.'</u></font></a></b></div>';
}
?>
Merci d'avance pour votre réponse.
Cordialement,
Elodie.
J'ai changé l'aspect et la mise en forme de ma requête.
Celle-ci est désormais fonctionnelle.
Voici mon code pour ceux qui chercherait après moi.
<?php
if(isset($_POST['ajouterappel'])){
$data = $_POST['data'];
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$numero = $_POST['numero'];
$type = $_POST['type'];
$objet = $_POST['objet'];
$operateur = $_POST['operateur'];
$resume = $_POST['resume'];
$insertAppel = $odb -> prepare("INSERT INTO `lesappels` VALUES(NULL, :data, :nom, :prenom, :numero, :type, :objet, :operateur, :resume)");
$insertAppel -> execute(array(':data' => $data, ':nom' => $nom, ':prenom' => $prenom, ':numero' => $numero, ':type' => $type, ':objet' => $objet, ':operateur' => $operateur, ':resume' => $resume));
echo '<div class="alert alert-success" style="margin-top: 25px;"><b>L\'appel à été ajouté avec succès - <a href="historique-appel.php?numero='.$numero.'"><font color="white"><u>Accéder à l\'historique du '.$numero.'</u></font></a></b></div>';
}
Merci tout de même à "Carouge10" qui a voulu m'aider.
Cordialement.
Bonjour,
La valeur "NULL" correspond à ID dans ma base de données.
Cordialement.
Donc dans ce cas, on le laisse la BDD gérer les id lors de l'insert.
Enlever NULL et la requête devrait fonctionner.
J'avais effectivement effectuer les 2 déjà avec et sans le "NULL", et sans le "NULL", la requête ne fonctionne pas non plus.
$req = $odb->prepare("INSERT INTO lesappels (data, nom, prenom, numero, type, objet, operateur, resume) VALUES (:data, :nom, :prenom, :numero, :type, :objet, :operateur, :resume)");
Cordialement.
Essayer ceci après avoir exécuter la requête.
if (!$req) {
echo "\nPDO::errorInfo():\n";
print_r($odb->errorInfo());
}
else {
echo "ok";
}
die();
Cela m'affiche l'echo de la confirmation d’exécution de la requête ainsi que le mot "ok" du echo à la fin.
Petite correction pour mon test.
Placer le résultat de l'execute dans une variable et tester celle-ci
"Petite correction pour mon test.
Placer le résultat de l'execute dans une variable et tester celle-ci"
Qu'entendez-vous par là ?
Cordialement.
$res = $req->execute(array(
':data' => $data,
':nom' => $nom,
':prenom' => $prenom,
':numero' => $numero,
':type' => $type,
':objet' => $objet,
':operateur' => $operateur,
':resume' => $resume));
if (!$res) {
echo "\nPDO::errorInfo():\n";
print_r($odb->errorInfo());
}
else {
echo "ok";
}
die();
Donc la requête est bonne mais l'exécution produit une erreur.
Les champs sont complétés ? ou à défaut, autoriser à être null ?
Quelqu'un aurait la solution ? :S
Je patauge depuis hier a vérifier mes variables 1 par 1 et je ne vois aucune erreur..
Il se pourrait qu'il y ai un conflit avec des noms de champs réservés à SQL.
Esssayer de renommer vos champs en les préfixant dans ce style "ap_data, ap_type....."
Comme ceci ?
$req = $odb->prepare("INSERT INTO lesappels (ap_data, ap_nom, ap_prenom, ap_numero, ap_type, ap_objet, ap_operateur, ap_resume) VALUES (:ap_data, :ap_nom, :ap_prenom, :ap_numero, :ap_type, :ap_objet, :ap_operateur, :ap_resume)");
$req->execute(array(
':ap_data' => $data,
':ap_nom' => $nom,
':ap_prenom' => $prenom,
':ap_numero' => $numero,
':ap_type' => $type,
':ap_objet' => $objet,
':ap_operateur' => $operateur,
':ap_resume' => $resume
));
Alors non, toujours aucun enregistrement dans la base de données :/.
Voici le code du <form>
.
<form action="" method="POST" id="ajouterappel">
<div class="col-md-6 col-sm-6 col-xs-12 form-group has-feedback">
<?php
$req_name = $_SESSION["username"];
$reponse = $odb->query("SELECT * FROM users WHERE pseudo = '$req_name'");
while ($donnees = $reponse->fetch())
{
$id = $donnees['ID'];
?>
<input type="text" class="form-control has-feedback-left" id="inputSuccess4" name="operateur" value="<?php if($donnees['ID'] == 1) echo 'L. Jeremy';
else if($donnees['ID'] == 2) echo 'A. Dominic';?>" disabled/>
<?php
}
?>
<span class="fa fa-support form-control-feedback left" aria-hidden="true"></span>
</div>
<div class="col-md-6 col-sm-6 col-xs-12 form-group has-feedback">
<input type="text" class="form-control has-feedback" id="inputSuccess2" name="data" value="<?php echo $date; ?> <?php echo $heure; ?>" disabled/>
<span class="fa fa-calendar form-control-feedback right" aria-hidden="true"></span>
</div>
<div class="col-md-12 col-sm-12 col-xs-12 form-group has-feedback">
<select class="form-control" name="type">
<option>------ Sélectionner le type d'appel ------</option>
<option value="1">Réception d'un appel</option>
<option value="2">Émission d'un appel</option>
</select>
</div>
<div class="col-md-6 col-sm-6 col-xs-12 form-group has-feedback">
<input type="text" class="form-control has-feedback-left" id="inputSuccess2" name="nom" placeholder="Nom de la personne" value="">
<span class="fa fa-user form-control-feedback left" aria-hidden="true"></span>
</div>
<div class="col-md-6 col-sm-6 col-xs-12 form-group has-feedback">
<input type="text" class="form-control" id="inputSuccess3" name="prenom" placeholder="Prénom de la personne" value="">
<span class="fa fa-user form-control-feedback right" aria-hidden="true"></span>
</div>
<div class="col-md-6 col-sm-6 col-xs-12 form-group has-feedback">
<input type="text" class="form-control has-feedback-left" id="inputSuccess4" name="numero" placeholder="Numéro de téléphone" value="">
<span class="fa fa-phone form-control-feedback left" aria-hidden="true"></span>
</div>
<div class="col-md-6 col-sm-6 col-xs-12 form-group has-feedback">
<input type="text" class="form-control" id="inputSuccess5" name="objet" placeholder="Objet de l'appel" value="">
<span class="fa fa-question form-control-feedback right" aria-hidden="true"></span>
</div>
<div class="col-md-12 col-sm-12 col-xs-12 form-group has-feedback">
<textarea class="form-control" rows="12" cols="50" name="resume" placeholder="Resumé de l'appel" value=""><?php echo ucfirst($note); ?></textarea>
</div>
<div class="ln_solid"></div>
<center><button type="submit" name="ajouterappel" class="btn btn-success"><font color="black"><i class="fa fa-check"></i> Ajouter cet appel</font></button></center>
</form>
J'ai également testé en mettant ma class readonly="readonly"
au lieu de disabled/>
mais rien ne change.