Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Je fais actuellement un formulaire pour insérer des données dans une table


<?php
session_start();
try{

        $bdd = new PDO('mysql:host=stellar2;dbname=projet', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
    echo 'Échec de la connexion : ' . $e->getMessage();
    exit;
}

if(isset($_POST['formpv'])) {
   $unite = ($_POST['unite']);
   $pv = ($_POST['pv']);
   $annee = ($_POST['annee']);
   $cadre = ($_POST['cadre_enquete']);
   $ipac = ($_POST['ipac']);
   $ide = ($_POST['pseudo']);
   $magistrat = ($_POST['magistrat']);

    if(!empty($_POST['pv']))
    {
                     $sql = $bdd->prepare("INSERT INTO una (idunite, pv, idannee, idenqueteur, ipac, magistrat, idcadre_enquete,) VALUES(?, ?, ?, ?, ?, ?, ?)");
                     $req=$sql->execute (array ($_POST['unite'], $_POST['pv'], $_POST['annee'],  $_POST['pseudo'], $_POST['ipac'], $_POST['magistrat'], $_POST['cadre_enquete'])) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                     $win = "Votre scellé a bien été  créé !";

    }else {

      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>```

Décrivez ici ce que vous cherchez à obtenir
que les données s'affichent dans ma table et résoudre l'erreur
Ce que que j'obtiens
( ! ) Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe pr�s de ') VALUES('1', '1254', '1', '1', '', 'dsf', '1')' � la ligne 1 in E:\phpmyadmin\stellar2\formpv.php on line 23
Call Stack
#   Time    Memory  Function    Location
1   0.0000  366344  {main}( )   ...\formpv.php:0
2   0.0130  383192  execute ( ) ...\formpv.php:23

( ! ) Catchable fatal error: Object of class PDOStatement could not be converted to string in E:\phpmyadmin\stellar2\formpv.php on line 23
Call Stack
#   Time    Memory  Function    Location
1   0.0000  366344  {main}( )   ...\formpv.php:0

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

MERCI pour votre aide ;)

12 réponses


jjr
Auteur
Réponse acceptée

Bravo CAROUGE 10 tu a répondu à ma question.
Je me permet maintenant de te demander la cerise sur le gateau:
Actuellement avec ce code la liste déroulante affiche les clés. j'ai testé la table affiche bien les enregistrements tout va bien
MAIS...
Je souhaiterai que les listes déroulantes affichent les valeurs (C'est mieux pour les utilisateurs!!!)
Le problème c'est que quand je remplace id_unite, id_annee etc.... dans mes <option> les valeurs s'affichent bien sur le formulaire mais quand je valide le code plante.
C'est normal car la valeur n'est plus la clé et donc ne peut s'insérer dans dans la table.
Comment afficher les valeurs mais par contre récupérer la clé correspondante afin qu'elle s'insère dans la table au moment de la soumission du formulaire??????
J'ai vu quon pouvait écrire
<option value = " un code qui affiche la clef">mon code php qui affiche la valeur pour les utilisateurs</options>
Si tu réponds à ça tu résouds mon projet ......
Je te joins le code complet

<?php
session_start();
try{

        $bdd = new PDO('mysql:host=stellar2;dbname=projet', 'root', '',array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
} catch (PDOException $e) {
    echo 'Échec de la connexion : ' . $e->getMessage();
    exit;
}

if(isset($_POST['formpv'])) {
   $unite = ($_POST['unite']);
   $pv = ($_POST['pv']);
   $annee = ($_POST['annee']);
   $cadre = ($_POST['cadre_enquete']);
   $ipac = ($_POST['ipac']);
   $ide = ($_POST['pseudo']);
   $magistrat = ($_POST['magistrat']);

    if(!empty($_POST['pv']))
    {
                     $sql = $bdd->prepare("INSERT INTO una (idunite, pv, idannee, idenqueteur, id_ipac, magistrat, idcadre_enquete) VALUES(?, ?, ?, ?, ?, ?, ?)");
                     $req=$sql->execute (array ($_POST['unite'], $_POST['pv'], $_POST['annee'],  $_POST['pseudo'], $_POST['ipac'], $_POST['magistrat'], $_POST['cadre_enquete'])) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
                     $win = "Votre scellé a bien été  créé !";

    }else {

      $erreur = "Tous les champs doivent être complétés !";
   }
}
?>

<html>
 <head>
      <title>Scellé</title>
      <meta charset="utf-8">
      <link rel="stylesheet" media="screen" type= "text/css" href="css/theme.css"/>
      <script src="js/bootstrap.min.js" type="text/javascript"></script>
      <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
      <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

   </head>
<h1>PV</h1><br /><br />
        <form method="POST" action="formpv.php">
            <table>
                <tr>
                     </SELECT>
                  </td>
                </tr>
                <tr>
                  <td align="right">
                     <label for="unité">Unité</label>
                  </td>
                  <td>
                  <SELECT class="form-control-sm" type="text" id="unite" name="unite"/>
                    <OPTION></OPTION>

                    <?php

                        $reponse = $bdd->query('SELECT * FROM unite');

                        while ($donnees = $reponse->fetch())
                        {
                            echo '<OPTION>'. $donnees['id_unite'] .'</OPTION>';
                        }

                        $reponse->closeCursor();

                    ?>
                </td>
                </tr>
                <tr>
                    <td align="right">
                    <label for="pv">Numéro :</label>
                    </td>
                    <td>
                    <input type="text" class="form-control-sm" placeholder="pv" id="pv" name="pv" value="<?php if(isset($pv)) { echo $pv; } ?>" />
                    </td>
                </tr>
                <tr>
                  <td align="right">
                     <label for="annee">Année</label>
                  </td>
                  <td>
                  <SELECT class="form-control-sm" type="text" id="annee" name="annee"/>
                    <OPTION></OPTION>

                    <?php

                        $reponse = $bdd->query('SELECT * FROM annee');

                        while ($donnees = $reponse->fetch())
                        {
                            echo '<OPTION>'. $donnees['id_annee'] .'</OPTION>';
                        }

                        $reponse->closeCursor();

                    ?>   
                    </td>
                </tr>
                </SELECT>
                <tr>
                  <td align="right">
                     <label for="cadre">Cadre d'enquête</label>
                  </td>
                  <td>
                  <SELECT class="form-control-sm" type="text" id="cadre" name="cadre_enquete"/>
                    <OPTION></OPTION>

                    <?php

                        $reponse = $bdd->query('SELECT * FROM cadre_enquete');

                        while ($donnees = $reponse->fetch())
                        {
                            echo '<OPTION>'. $donnees['idcadre_enquete'] .'</OPTION>';
                        }

                        $reponse->closeCursor();

                    ?>   
                    </td>
                </tr>
                </SELECT>
                 <tr>
                  <td align="right">
                     <label for="ide">Enquêteur</label>
                  </td>
                  <td>
                  <SELECT class="form-control-sm" type="text" id="pseudo" name="pseudo"/>
                    <OPTION></OPTION>

                    <?php

                        $reponse = $bdd->query('SELECT * FROM users');

                        while ($donnees = $reponse->fetch())
                        {
                            echo '<OPTION>'. $donnees['id'] .'</OPTION>';
                        }

                        $reponse->closeCursor();

                    ?>   
                    </td>
                </tr>
                </SELECT>
                 <tr>
                  <td align="right">
                     <label for="ipac">L'IPAC est il créé?</label>
                  </td>
                  <td>
                  <SELECT class="form-control-sm" type="text" id="ipac" name="ipac"/>
                    <OPTION></OPTION>

                    <?php

                        $reponse = $bdd->query('SELECT * FROM ipac');

                        while ($donnees = $reponse->fetch())
                        {
                            echo '<OPTION>'. $donnees['id_ipac'] .'</OPTION>';
                        }

                        $reponse->closeCursor();

                    ?>   
                    </td>
                </tr>
                </SELECT>
                <tr>
                <tr>
                    <td align="right">
                    <label for="magistrat">magistrat :</label>
                    </td>
                    <td>
                    <input type="text" class="form-control-sm" placeholder="magistrat" id="magistrat" name="magistrat" value="<?php if(isset($magistrat)) { echo $magistrat; } ?>" />
                    </td>
                </tr>               
                    <td align="center"><br />
                    <button type="submit" value="formpv" name="formpv" class="btn btn-primary">Enregistrer !</button>                  
                    </td>
                </tr>
                <tr>
                    <td></td>
                    <td align="center"><br />
                        <a href="index.php">Retour à l'accueil</a>                  
                    </td>
                </tr>
                <div align="center">
                    <?php
                        if(isset($win)) {
                            echo '<div class="alert alert-dismissible alert-success" align="center">
                            <button type="button" class="close" data-dismiss="alert">&times;</button>
                            <h4 class="alert-heading">Bravo!</h4>
                            <p class="mb-0">'.$win.' </p>
                            </div>';
                    }
                    ?>
                </div>
            </table>
        </form>
</html>
Carouge10
Réponse acceptée

option peut avoir une "value" qui sera l'id et tu affiches le nom entre les balises
option

Bonjour,
Comme dit sur l'autre forum, tu as la solution dans l'erreur, il suffit de regarder. "L'erreur est près de ") VALUES ..."

jjr
Auteur

Il faut remplacer les ? par les variables $post?????

non, l'erreur est avant

jjr
Auteur

Non franchement je vois pas je suis désolé à part une virgule en trop sinon......

jjr
Auteur

Stp pourrais tu me donner la réponse J'en peux plus d'attendre depuis 1 semaine :)

et bien oui la virgule

jjr
Auteur

Desole du retard de la reponse je suis a l'étranger ici cest la nuit je testerai ca et je te dirai maimais ça m'étonnerait qu'une si petite erreur fasse cela;)

Toute cette partie est à supprimée car inutile dans ton code :

$unite = ($_POST['unite']);
$pv = ($_POST['pv']);
$annee = ($_POST['annee']);
$cadre = ($_POST['cadre_enquete']);
$ipac = ($_POST['ipac']);
$ide = ($_POST['pseudo']);
$magistrat = ($_POST['magistrat']);

Ensuite, il y a une virgule en trop dans ta requête après le "idcadre_enquete"
Et on écrit pas "$req=$sql->execute" mais juste "$sql->execute", c'est ça dans toutes les requêtes préparées.

jjr
Auteur

Bravo Propre tu portes bien ton nom, le formulaire marche même mieux comme cela!

option peut avoir une "value" qui sera l'id et tu affiches le nom entre les balises
option