Insertion données tableau html dans la bdd avec PDO
Fermé
arkal221
arkal221
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
arkal221
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
10 réponses
totodunet
21 juil. 2017 à 15:03
- Messages postés
- 1377
- Date d'inscription
- mercredi 18 mars 2009
- Statut
- Membre
- Dernière intervention
- 5 mars 2020
21 juil. 2017 à 15:03
Ok
C'est pas mal du tout !!!
Il faut que tu soumettes les nouvelles données à ce bout de code PHP. De manière asynchrone, on utilisera Ajax. Tu utilises la librairie jQuery ?
Le premier champ de table facture tu l'initialises à null ? C'est pas une clé primaire par hasard ? Tu as vérifié si ta requête SQL fonctionne bien avant et t'insères une ligne ?
La page où il y a ton PHP c'est situé sur la même page que le formulaire ou sur une autre ? Il est de bonne pratique d'envoyer les données par POST ou GET plutôt que d'aller chercher les valeurs dans le DOM avec Javascript et se mélanger les pinceaux entre PHP, HTML et JavaScript :
$insert->execute(array(
'designation' => $_POST['designation'],
'Qte' => $_POST['quantite'],
'pu' => $_POST['price'],
'tot' => $_POST['designation'],
));
PS: c'est ma signature
C'est pas mal du tout !!!
Il faut que tu soumettes les nouvelles données à ce bout de code PHP. De manière asynchrone, on utilisera Ajax. Tu utilises la librairie jQuery ?
Le premier champ de table facture tu l'initialises à null ? C'est pas une clé primaire par hasard ? Tu as vérifié si ta requête SQL fonctionne bien avant et t'insères une ligne ?
La page où il y a ton PHP c'est situé sur la même page que le formulaire ou sur une autre ? Il est de bonne pratique d'envoyer les données par POST ou GET plutôt que d'aller chercher les valeurs dans le DOM avec Javascript et se mélanger les pinceaux entre PHP, HTML et JavaScript :
$insert->execute(array(
'designation' => $_POST['designation'],
'Qte' => $_POST['quantite'],
'pu' => $_POST['price'],
'tot' => $_POST['designation'],
));
PS: c'est ma signature
totodunet
21 juil. 2017 à 17:00
- Messages postés
- 1377
- Date d'inscription
- mercredi 18 mars 2009
- Statut
- Membre
- Dernière intervention
- 5 mars 2020
21 juil. 2017 à 17:00
J'ai bien compris oui. Si utilises jQuery (ce que je ferais) faut que tu utilises la fonction $.ajax()
tu y spécifies l'URL, les données, le mode d'envoi (GET/POST/PUT/DELETE), la fonction a exécuter en cas de succès/erreur
https://api.jquery.com/jQuery.ajax/
sinon faut que tu créées un objet de type XMLHttpRequest que j'ai jamais fait. Mais c'est un sujet très riche en documentation, tu trouveras très facilement des exemples type sur Internet
tu y spécifies l'URL, les données, le mode d'envoi (GET/POST/PUT/DELETE), la fonction a exécuter en cas de succès/erreur
https://api.jquery.com/jQuery.ajax/
sinon faut que tu créées un objet de type XMLHttpRequest que j'ai jamais fait. Mais c'est un sujet très riche en documentation, tu trouveras très facilement des exemples type sur Internet
arkal221
22 juil. 2017 à 10:36
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
22 juil. 2017 à 10:36
c'est chaud!
totodunet
24 juil. 2017 à 15:33
- Messages postés
- 1377
- Date d'inscription
- mercredi 18 mars 2009
- Statut
- Membre
- Dernière intervention
- 5 mars 2020
24 juil. 2017 à 15:33
dis-toi que tu as déjà fais le code qui insère la ligne dans ton tableau html et le code PHP qui insère dans la BDD
il faut juste maintenant que tu envoies les données au code PHP pour que cela s'insère
il faut juste maintenant que tu envoies les données au code PHP pour que cela s'insère
totodunet
21 juil. 2017 à 13:33
- Messages postés
- 1377
- Date d'inscription
- mercredi 18 mars 2009
- Statut
- Membre
- Dernière intervention
- 5 mars 2020
21 juil. 2017 à 13:33
slt,
il est où ton code PHP ?
il est où ton code PHP ?
arkal221
21 juil. 2017 à 14:25
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
21 juil. 2017 à 14:25
Bon tel que tu l'as dis qui ne tente rien n'a rien j'ai essayé de faire sa :
mais je suis perdu franchement de l'aide je ne maitrise vraiment pas du javascript help!!!!
<?php
include_once('connect.php');
if (isset($_POST['Enregistrer'])){ // execution apres envoi du formulaire
// obetention des inputs de l'utilisateur
$insert = $bdd->prepare('
INSERT INTO facture VALUES(null, :designation, :Qte, :pu, :tot)
');
$insert->execute(array(
'designation' => "echo <script> document.getElementById(getProducts).value </script>",
'Qte' => "echo <script> document.getElementById(price).value </script>",
'pu' => "echo <script> document.getElementById(qtecom).value </script>",
'tot' => "echo <script> document.getElementById(getProducts).value </script>",
));
if ($insert){
$_GET['message']="succes";
}else{
$_GET['erreur']="login";
}
}
?>
mais je suis perdu franchement de l'aide je ne maitrise vraiment pas du javascript help!!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
arkal221
21 juil. 2017 à 16:34
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
21 juil. 2017 à 16:34
Oui le premier champ de ma table c'est une clé auto_increment et aussi ma page PHP est situé sur la même page
totodunet
21 juil. 2017 à 16:51
- Messages postés
- 1377
- Date d'inscription
- mercredi 18 mars 2009
- Statut
- Membre
- Dernière intervention
- 5 mars 2020
21 juil. 2017 à 16:51
dans ce cas n'initialise pas le premier champ à NULL. ta requête SQL ne peut pas marcher
INSERT INTO facture (nom_column2, nom_column3, nom_column4...) VALUES (valeur_column2, valeur_column3, valeur_column4...);
INSERT INTO facture (nom_column2, nom_column3, nom_column4...) VALUES (valeur_column2, valeur_column3, valeur_column4...);
arkal221
21 juil. 2017 à 16:40
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
21 juil. 2017 à 16:40
Soit s'il y a un lien qui explique comment ajouter des lignes dans une table html avec un autre code javascript et enfin l'envoyer dans ma base si possible tu me donnes stp!!! soit un code un peu plus explicite parce que là je suis perdu
arkal221
21 juil. 2017 à 16:47
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
21 juil. 2017 à 16:47
mon problème est que je voudrais à l'aide d'un code javascript ajouter des lignes à l'aide d'un input et à la fin enregistrer toutes ces données dans une base de données
arkal221
28 juil. 2017 à 17:35
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
28 juil. 2017 à 17:35
Bonjour mon frère @totodunet: regarde ce que jai fait jusque qui marche un peu bien mon code javascript est là qui m'ajoute de données des valeurs des input:
et mon tableau qui recoit les données ressemble à celui ci:
regarde maintenant le code ajax que j'ai fait pour recevoir les valeurs de mon tableau et envoyé dans le bdd est là :
Ma page php est là :
Mais ça n'envoie rien dans ma bdd rien ne se produise au faite, tu peux avoir une idée à ce niveau? please!!!
function addRow() {
"use strict";
var tableBody = document.getElementById("table-body");
var td1 = document.createElement("td");
var td2 = document.createElement("td");
var td3 = document.createElement("td");
var td4 = document.createElement("td");
var td5 = document.createElement("td");
var td6 = document.createElement("td");
var td7 = document.createElement("td");
var row = document.createElement("tr");
td1.innerHTML = document.getElementById("ID").value;
td2.innerHTML = document.getElementById("NAME").value;
td3.innerHTML = document.getElementById("PASSWORD").value;
td4.innerHTML = document.getElementById("CREDITS").value;
td5.innerHTML = document.getElementById("EMAIL_ID").value;
td6.innerHTML = document.getElementById("CREATED_ON").value;
td7.innerHTML = document.getElementById("MODIFIED_ON").value;
row.appendChild(td1);
row.appendChild(td2);
row.appendChild(td3);
row.appendChild(td4);
row.appendChild(td5);
row.appendChild(td6);
row.appendChild(td7);
tableBody.appendChild(row);
}
et mon tableau qui recoit les données ressemble à celui ci:
<table id="table" border="1">
<thead id="table-head">
<tr>
<th>Item</th>
<th>Item</th>
<th>Item</th>
<th>Item</th>
<th>Item</th>
<th>Item</th>
<th>Total</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
regarde maintenant le code ajax que j'ai fait pour recevoir les valeurs de mon tableau et envoyé dans le bdd est là :
$("#btn_submit").click(function(){
//get the form values
var arrayLignes = document.getElementById("table-body").rows; //on récupère les lignes du tableau
var longueur = arrayLignes.length;//on peut donc appliquer la propriété length
var valeurc = arrayColonnes.val;
for(var i=0; i<longueur; i++)//on peut directement définir la variable i dans la boucle
{
var arrayColonnes[] = arrayLignes;//on récupère les cellules de la ligne
}
var ID = $('#ID').val();
var NAME = $('#NAME').val();
var PASSWORD = $('#PASSWORD').val();
var CREDITS = $('#CREDITS').val();
var EMAIL_ID = $('#EMAIL_ID').val();
var CREATED_ON = $('#CREATED_ON').val();
var MODIFIED_ON = $('#MODIFIED_ON').val();
var valeurligne = $('arrayLignes[1]');
// make the postdata
// var postData = '&ID='+ID+'&NAME='+NAME+'&PASSWORD='+PASSWORD+'&CREDITS'+CREDITS+'&EMAIL_ID'+EMAIL_ID+'&CREATED_ON'+CREATED_ON+'&MODIFIED_ON'+MODIFIED_ON;
// alert(postData);
var myData={"IDN":ID,"NAMEN":NAME,"PASSWORDN":PASSWORD,"CREDITSN":CREDITS,"EMAIL_IDN":EMAIL_ID,"CREATED_ONN":CREATED_ON,"MODIFIED_ONN":MODIFIED_ON,"largeur":longueur,"valeur":valeurligne};
//call your .php script in the background,
//when it returns it will call the success function if the request was successful or
//the error one if there was an issue (like a 404, 500 or any other error status)
$.ajax({
url : "Form_Data.php",
type: "POST",
data : myData,
success: function(data,status,xhr)
{
//if success then just output the text to the status div then clear the form inputs to prepare for new data
$("#status_text").html(data);
$('#ID').val();
$('#NAME').val('');
$('#PASSWORD').val('');
$('#EMAIL_ID').val('');
$('#CREATED_ON').val('');
$('#MODIFIED_ON').val('');
}
});
});
Ma page php est là :
include 'connect.php';
mysql_set_charset('utf8');
//query for insert data into tables
$ID = $_POST['valeur'];
$NAME =$_POST['valeur'];
$EMAIL_ID =$_POST['valeur'];
$PASSWORD =$_POST['valeur'];
$CREDITS =$_POST['valeur'];
$CREATED_ON=$_POST['valeur'];
$MODIFIED_ON=$_POST['valeur'];
$largeur = $_POST['largeur'];
var_dump($_POST['largeur']);
for($i=0; $i<$largeur; $i++)
{
$query = "INSERT INTO `user_table`
(`NAME`,`EMAIL_ID`,`PASSWORD`,`CREDITS`,`CREATED_ON`,`MODIFIED_ON`)
VALUES
('$NAME','$EMAIL_ID','$PASSWORD','$CREDITS','$CREATED_ON','$MODIFIED_ON')";
$query_run= mysql_query($query);
// $retval=mysql_query($query,$conn);
if ($query_run)
{
echo 'It is working';
}
}
mysql_close($con);
Mais ça n'envoie rien dans ma bdd rien ne se produise au faite, tu peux avoir une idée à ce niveau? please!!!
jordane45
28 juil. 2017 à 18:45
- Messages postés
- 35763
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 30 juin 2022
28 juil. 2017 à 18:45
Bonjour,
Pour commencer....
remplace les "valeur" .. pas leur nom de variable dans ton code...
Coté javascript ... ajoute le error dans l'ajax
en fonction de ta version de jquery... le .error ou le .fail
Pense aussi à regarder dans la console de ton navigateur si il n'y aurait pas des erreurs javascript et des messages concernant ton appel ajax.
NB: Pour voir les erreurs.. il faut soit passer par la console de firefox.... soit installer un plugin dans chrome pour prendre en charge l'ajax;
NB² : L'extension mysql est considérée comme obsolète. Passe à PDO ou mysqli.
Pour commencer....
remplace les "valeur" .. pas leur nom de variable dans ton code...
$ID = $_POST['valeur']; $NAME =$_POST['valeur']; $EMAIL_ID =$_POST['valeur']; $PASSWORD =$_POST['valeur']; $CREDITS =$_POST['valeur']; $CREATED_ON=$_POST['valeur']; $MODIFIED_ON=$_POST['valeur']
$ID = $_POST['IDN']; $NAME =$_POST['NAMEN']; $EMAIL_ID =$_POST['PASSWORDN']; //etc....
Coté javascript ... ajoute le error dans l'ajax
en fonction de ta version de jquery... le .error ou le .fail
Pense aussi à regarder dans la console de ton navigateur si il n'y aurait pas des erreurs javascript et des messages concernant ton appel ajax.
NB: Pour voir les erreurs.. il faut soit passer par la console de firefox.... soit installer un plugin dans chrome pour prendre en charge l'ajax;
NB² : L'extension mysql est considérée comme obsolète. Passe à PDO ou mysqli.
arkal221
29 juil. 2017 à 11:48
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
29 juil. 2017 à 11:48
Merci @Jordan
Je suis passer en PDO et regarde à ce que ressemble mon code mais la même chose toujours :
Je suis passer en PDO et regarde à ce que ressemble mon code mais la même chose toujours :
<?php
include 'connect.php';
mysql_set_charset('utf8');
//query for insert data into tables
$ID = $_POST['IDN'];
$NAME =$_POST['NAMEN'];
$EMAIL_ID =$_POST['EMAIL_IDN'];
$PASSWORD =$_POST['PASSWORDN'];
$CREDITS =$_POST['CREDITSN'];
$CREATED_ON=$_POST['CREATED_ONN'];
$MODIFIED_ON=$_POST['MODIFIED_ONN'];
$largeur = $_POST['largeur'];
//var_dump($_POST['largeur']);
for($i=0; $i<$largeur; $i++)
{
$insert = $bdd->prepare('
INSERT INTO user_table (NAME,EMAIL_ID,PASSWORD,CREDITS,CREATED_ON,MODIFIED_ON) VALUES(:NAME, :EMAIL_ID, :PASSWORD, :CREDITS, :CREATED_ON,:MODIFIED_ON)
');
$insert->execute(array(
'NAME' => htmlspecialchars($ID),
'EMAIL_ID' => htmlspecialchars($NAME),
'PASSWORD' => htmlspecialchars($EMAIL_ID),
'CREDITS' => htmlspecialchars($CREDITS),
'CREATED_ON' => htmlspecialchars($CREATED_ON),
'MODIFIED_ON' => htmlspecialchars($MODIFIED_ON),
));
if ($insert){
echo "OK";
}
mysql_close($con);
?>
jordane45
29 juil. 2017 à 12:21
- Messages postés
- 35763
- Date d'inscription
- mercredi 22 octobre 2003
- Statut
- Modérateur
- Dernière intervention
- 30 juin 2022
29 juil. 2017 à 12:21
Tu as laissé des instructions mysql_
Et que contient ton fichier de connexion ?
Et que contient ton fichier de connexion ?
arkal221
Modifié le 29 juil. 2017 à 12:45
- Messages postés
- 32
- Date d'inscription
- mercredi 30 mars 2016
- Statut
- Membre
- Dernière intervention
- 31 juillet 2017
Modifié le 29 juil. 2017 à 12:45
@Jordan j'ai réussi a envoyé mes données des inputs dans ma bdd dont voici le code côté ajax:
grâce à ton conseil d'installer l'extension ajax mais un problème qui reste qui reste c'est d'envoyer les données de mon tableau crée dynamiquement et non des inputs mon code php est là :
$("#btn_submit").click(function(){
//get the form values
var arrayLignes = document.getElementById("table-body").rows; //on récupère les lignes du tableau
var longueur = arrayLignes.length;//on peut donc appliquer la propriété length
for(var i=0; i<longueur; i++)//on peut directement définir la variable i dans la boucle
{
//var arrayColonnes[1,i] = arrayLignes;//on récupère les cellules de la ligne
}
var ID = $('#ID').val();
var NAME = $('#NAME').val();
var PASSWORD = $('#PASSWORD').val();
var CREDITS = $('#CREDITS').val();
var EMAIL_ID = $('#EMAIL_ID').val();
var CREATED_ON = $('#CREATED_ON').val();
var MODIFIED_ON = $('#MODIFIED_ON').val();
// make the postdata
// var postData = '&ID='+ID+'&NAME='+NAME+'&PASSWORD='+PASSWORD+'&CREDITS'+CREDITS+'&EMAIL_ID'+EMAIL_ID+'&CREATED_ON'+CREATED_ON+'&MODIFIED_ON'+MODIFIED_ON;
// alert(postData);
var myData={"IDN":ID,"NAMEN":NAME,"PASSWORDN":PASSWORD,"CREDITSN":CREDITS,"EMAIL_IDN":EMAIL_ID,"CREATED_ONN":CREATED_ON,"MODIFIED_ONN":MODIFIED_ON,"largeur":longueur};
//call your .php script in the background,
//when it returns it will call the success function if the request was successful or
//the error one if there was an issue (like a 404, 500 or any other error status)
$.ajax({
url : "Form_Data.php",
type: "POST",
data : myData,
success: function(data,status,xhr)
{
//if success then just output the text to the status div then clear the form inputs to prepare for new data
$("#status_text").html(data);
$('#ID').val();
$('#NAME').val('');
$('#PASSWORD').val('');
$('#EMAIL_ID').val('');
$('#CREATED_ON').val('');
$('#MODIFIED_ON').val('');
},
error : function(data, status, erreur){
}
});
})
grâce à ton conseil d'installer l'extension ajax mais un problème qui reste qui reste c'est d'envoyer les données de mon tableau crée dynamiquement et non des inputs mon code php est là :
include 'connect.php';
mysql_set_charset('utf8');
//query for insert data into tables
$ID = $_POST['IDN'];
$NAME =$_POST['NAMEN'];
$EMAIL_ID =$_POST['EMAIL_IDN'];
$PASSWORD =$_POST['PASSWORDN'];
$CREDITS =$_POST['CREDITSN'];
$CREATED_ON=$_POST['CREATED_ONN'];
$MODIFIED_ON=$_POST['MODIFIED_ONN'];
$largeur = $_POST['largeur'];
//var_dump($_POST['largeur']);
for($i=0; $i<$largeur; $i++)
{
$insert = $bdd->prepare('
INSERT INTO user_table (NAME,EMAIL_ID,PASSWORD,CREDITS,CREATED_ON,MODIFIED_ON) VALUES(:NAME, :EMAIL_ID, :PASSWORD, :CREDITS, :CREATED_ON,:MODIFIED_ON)
');
$insert->execute(array(
'NAME' => htmlspecialchars($ID),
'EMAIL_ID' => htmlspecialchars($NAME),
'PASSWORD' => htmlspecialchars($EMAIL_ID),
'CREDITS' => htmlspecialchars($CREDITS),
'CREATED_ON' => htmlspecialchars($CREATED_ON),
'MODIFIED_ON' => htmlspecialchars($MODIFIED_ON),
));
if ($insert)
{
echo 'It is working';
}
}