[RESOLU] insertion dans une bdd

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] insertion dans une bdd

Re: [RESOLU] insertion dans une bdd

par wil974 » 06 juin 2016, 03:05

oui , exactement

mon fichier connectbdd.php était pas correct,ensuite j'ai enlever tout ce qui est accents

et la miracle ça marche

Merci beaucoup a toussss pour votre aide

passée un bonne semaine.

Re: insertion dans une bdd

par Naroth » 05 juin 2016, 18:27

Bonjour wil974,

Je te déconseille fortement d'utilisé des accents dans les noms de variables (cf : disponibilité).



En suite y a un truc que j'ai pas compris dans ton code même si ça n'empêche pas le fonctionnement :

Tu initialise des variables avec les valeurs du $_POST (ce qui est un bonne chose)

Code : Tout sélectionner

$numero_kim = $_POST['numero_kim']; $nature = $_POST['nature']; $objet = $_POST['objet']; $cible = $_POST['cible']; $kilometrage = $_POST['kilometrage']; $disponibilite = $_POST['disponibilite']; $demandeur = $_POST['demandeur']; $matricule = $_POST['matricule']; $etat="En cours";
et par la suite tu te ressert des valeurs du $_POST

Code : Tout sélectionner

'numero_kim' => $_POST['numero_kim'], 'nature' => $_POST['nature'], 'objet' => $_POST['objet'], 'cible' => $_POST['cible'], 'kilometrage' => $_POST['kilometrage'], 'disponibilite' => $_POST['disponibilite'], 'demandeur' => $_POST['demandeur'], 'matricule' => $_POST['matricule'], 'etat' => "En cours",


Dans ta requête, tu as une virgule en trop après "etat" :

Code : Tout sélectionner

INSERT INTO kim2016 (numero_kim, nature, objet, cible, kilometrage, disponibilite, demandeur, matricule, etat,) VALUES(:numero_kim, :nature, :objet, :cible, :kilometrage, :disponibilite, :demandeur, :matricule, :etat)
Cette erreur
Fatal error: Call to a member function prepare() on a non-object in /homepages/..............................................on line 25
vient du faite que ta variable $bdd n'a pas été initialisé correctement , je pense que dans ton conectbdd.php contient une erreur.

Re: insertion dans une bdd

par wil974 » 04 juin 2016, 20:35

Erratum

voici le code ,me suis trompé dans le dernier message

Merci

Code : Tout sélectionner

<?php include("conectbdd.php"); $numero_kim = $_POST['numero_kim']; $nature = $_POST['nature']; $objet = $_POST['objet']; $cible = $_POST['cible']; $kilometrage = $_POST['kilometrage']; $disponibilite = $_POST['disponibilite']; $demandeur = $_POST['demandeur']; $matricule = $_POST['matricule']; $etat="En cours"; echo "<center><h2>Creation d'un nouveau Kim 2/2</h2></center>"; echo "<center><h3>vous avez creer un nouveau kim,voici les information saisie :</h3></center></br>"; echo "<center><h4> numero kim : $numero_kim </h4> <h4> Nature : $nature</h4></center>"; echo "<center><h4>objet : $objet </h4> <h4> Cible : $cible</center>"; echo "<center><h4>kilometrage : $kilometrage </h4> <h4> disponibilité du Materiel : $disponibilite</h4></center>"; echo "<center><h4>Nom du Demandeur : $demandeur </h4> <h4> matricule du demandeur : $matricule</h4></center>"; echo "<center><h5>le kim passe en etat : $etat</h5></center>"; $req = $bdd->prepare('INSERT INTO kim2016 (numero_kim, nature, objet, cible, kilometrage, disponibilite, demandeur, matricule, etat,) VALUES(:numero_kim, :nature, :objet, :cible, :kilometrage, :disponibilite, :demandeur, :matricule, :etat)'); $req->execute(array( 'numero_kim' => $_POST['numero_kim'], 'nature' => $_POST['nature'], 'objet' => $_POST['objet'], 'cible' => $_POST['cible'], 'kilometrage' => $_POST['kilometrage'], 'disponibilite' => $_POST['disponibilite'], 'demandeur' => $_POST['demandeur'], 'matricule' => $_POST['matricule'], 'etat' => "En cours", )); if($req) echo "Le Kim a bien été crée"; else echo "Erreur dans la base de données"; ?>

Re: insertion dans une bdd

par wil974 » 04 juin 2016, 20:27

Merci de Vos Réponses

j'ai changé mon code ,et maintenant j'ai cette erreur :

Fatal error: Call to a member function prepare() on a non-object in /homepages/..............................................on line 25

c'est déjà mieux que rien , avant j'avais rien :D :D




Code : Tout sélectionner

<?php include("conectbdd.php"); $numero_kim = $_POST['numero_kim']; $nature = $_POST['nature']; $objet = $_POST['objet']; $cible = $_POST['cible']; $kilometrage = $_POST['kilometrage']; $disponibilite = $_POST['disponibilite']; $demandeur = $_POST['demandeur']; $matricule = $_POST['matricule']; $etat="En cours"; echo "<center><h2>Creation d'un nouveau Kim 2/2</h2></center>"; echo "<center><h3>vous avez creer un nouveau kim,voici les information saisie :</h3></center></br>"; echo "<center><h4> numero kim : $numero_kim </h4> <h4> Nature : $nature</h4></center>"; echo "<center><h4>objet : $objet </h4> <h4> Cible : $cible</center>"; echo "<center><h4>kilometrage : $kilometrage </h4> <h4> disponibilité du Materiel : $disponibilite</h4></center>"; echo "<center><h4>Nom du Demandeur : $demandeur </h4> <h4> matricule du demandeur : $matricule</h4></center>"; echo "<center><h5>le kim passe en etat : $etat</h5></center>"; $req = $bdd->prepare('INSERT INTO kim2016 (numero_kim, nature, objet, cible, kilometrage, disponibilite, demandeur, matricule, etat,) VALUES($numero_kim, $nature, $objet, $cible, $kilometrage, $disponibilite, $demandeur, $matricule, $etat)'); $req->execute(array( '$numero_kim' => $_POST['numero_kim'], 'nature' => $_POST['nature'], 'objet' => $_POST['objet'], 'cible' => $_POST['cible'], 'kilometrage' => $_POST['kilometrage'], 'disponibilite' => $_POST['disponibilite'], 'demandeur' => $_POST['demandeur'], 'matricule' => $_POST['matricule'], 'etat' => "En cours", )); if($req) echo "Le Kim a bien été crée"; else echo "Erreur dans la base de données"; ?>

Re: insertion dans une bdd

par carte-sd » 04 juin 2016, 00:05

Je vois plusieurs problèmes dans ta requête que j'ai mis en valeur :

Code : Tout sélectionner

$req = $bdd->prepare('INSERT INTO kim2016(id, numero_kim, nature, objet, cible, kilometrage, ici >>> disponibilité <<<, demandeur, matricule, etat, date) VALUES(ici >>> :"" <<< :numero_kim, :nature, :objet, :cible, :kilometrage, ici >>> :disponibilité <<<, :demandeur, :matricule, :etat, ici >>> :"" <<<)');
Les accents sont interdits en SQL et vraiment pas recommandé en PHP, ensuite qu'est-ce que c'est que ça ?

Code : Tout sélectionner

VALUES(ici >>> :"" <<< :numero_kim, :etat, ici >>> :"" <<<)');
Voici comment tu dois écrire cette requête :

Code : Tout sélectionner

$req = $bdd->prepare('INSERT INTO kim2016 (id, numero_kim, nature, objet, cible, kilometrage, disponibilite, demandeur, matricule, etat, date) VALUES("", :numero_kim, :nature, :objet, :cible, :kilometrage, :disponibilite, :demandeur, :matricule, :etat, "")');
Pour récupérer tes variables avec la super globale $_POST :

Code : Tout sélectionner

$numero_kim = $_POST['numero_kim']; $nature = $_POST['nature']; // etc.

Re: insertion dans une bdd

par Maitrepylos » 03 juin 2016, 17:14

Oui tu es dans le faux.

Cela ne fonctionne pas comme ça.
Je te conseilles un peu de lecture : http://sylvie-vauthier.developpez.com/t ... -debutant/

Re: insertion dans une bdd

par wil974 » 03 juin 2016, 17:07

Merci pour ta réponse

j'ai modifié ,mais rien ne change .

je pense que je n'arrive pas a attribuée les variables :

si je rentre 0987654321 dans le champs numerokim

grâce a name="numéro_kim"

je crée la variable numero_kim qui sera égale a 0987654321

suis-je dans le faux???

Re: insertion dans une bdd

par Maitrepylos » 03 juin 2016, 16:48

Tes variables viennent d'où ? Le fait d'envoyer un formulaire ne crée pas les variables à la volée (cela à existé, mais on parle d'un temps que les moins de 20 ans ne connaissent pas).

Tu dois passer par la super global $_POST (puisque tu envoies ton formulaire avec la méthode post).

Code : Tout sélectionner

$req->execute(array( 'numero_kim' => $_POST['numero_kim'], 'nature' => $_POST['nature'], 'objet' => $_POST['objet'], ....

insertion dans une bdd

par wil974 » 03 juin 2016, 14:53

Bonjour,

je tiens à vous remercier déjà pour les réponses,qui m'on permis de résoudre certains problème auparavant,

j'ai un petit probleme d'insertion d'une ligne dans ma base de données ,

aucune erreur affiché,il me répond juste :"Le kim a bien été ajouté !"

aucune ligne supplémentaire dans mas base est crée .

voici mon code html pour le formulaire :

Code : Tout sélectionner

<!doctype html> <html> <head> <meta charset="utf-8"> <title>Formulaire creation Kim</title> </head> <body> <form action="traitementenvoiekim.php" method="post"> <input type="text" placeholder="numero kim" name="numero_kim" id='numero_kim' required><br /> <input type="text" placeholder="nature" name="nature" required><br /> <input type="text" placeholder="objet" name="objet" required><br /> <input type="text" placeholder="cible" name="cible" required><br /> <input type="text" placeholder="kilometrage" name="kilometrage" required><br /> <input type="text" placeholder="disponibilité" name="disponibilité" required><br /> <input type="text" placeholder="demandeur" name="demandeur" required><br /> <input type="text" placeholder="matricule" name="matricule" required><br /> <input type="text" placeholder="etat" name="etat" required><br /> <input type="submit" value="Envoyer"> </form> </body> </html>

et voici le code pour le traitement sur la bdd :

Code : Tout sélectionner

<!doctype html> <html> <head> <meta charset="utf-8"> <title>Traitement Nouveau Kim</title> </head> <body> <?php try { $bdd = new PDO('mysql:host=monhost;dbname=nomdemabd;charset=utf8', 'utilisateur', 'mdp', $pdo_options); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } $req = $bdd->prepare('INSERT INTO kim2016(id, numero_kim, nature, objet, cible, kilometrage, disponibilité, demandeur, matricule, etat, date) VALUES(:"" :numero_kim, :nature, :objet, :cible, :kilometrage, :disponibilité, :demandeur, :matricule, :etat, :"")'); $req->execute(array( 'numero_kim' => $numero_kim, 'nature' => $nature, 'objet' => $objet, 'cible' => $cible, 'kilometrage' => $kilometrage, 'disponibilité' => $disponibilité, 'demandeur' => $demandeur, 'matricule' => $matricule, 'etat' => $etat, )); echo 'Le kim a bien été ajouté !'; ?> </body> </html>
si vous avez une petite solution,bien sur je suis preneur :D

bon fin de journée