j'ai un formulaire qui doit remplir un champ: type_produit - n°serie - statut
je débute en en php et j'aimerais savoir si il est possible de préremplir le champ n°serie en fonction du champ type_produit ( qui propose un choix dans une liste déroulante ).
Le but étant que j'ai dans ma table plusieurs "type_produit" et qu'il me préremplisse mon champ n°serie en fonction du type_produit.
coucou; oui je suis donc tombé sur AJAX en creusant et du coup j'y suis depuis 1 heure; est ce que cette méthose est encore d'actualité ? car le cours semble dater ?
Je pense que tu n'a pas besoin de l'Ajax , vu que tu n'a pas besoin d'aller chercher des ressources et les charger dynamiquement.
Si j'ai bien compris , tu as une liste déroulante avec plusieurs type de produits. Et tu veux que à chaque fois qu'on sélectionné une entrée de la liste que le champs n° de série se rempli d'après le type de produit sélectionné ?
alors oui en quelques sortes: dans ma table, pour faire court, j'ai le champ produit et un champ n° de serie; une fct prend dans une autre table tous mes types de produits et l'inclu dans ma liste déroulante produit.
dans ma seconde table j'écrit ce produit avec un n° de serie.
J'aimerais que ce n° de serie soit prérempli en fonction du tye de produit.
Je sais traiter tout ce qu'il faut en php sql; mais j'ai effectivement besoin de javascript je pense, car pour une fonction php j'aurais besoin de connaître le $_POST['produit'] sans envoyer le form.
Ce que tu peux faire c'est récupérer la valeur du selectbox de tes types de produits en Javascript. Et l'envoyer en Ajax en POST vers ton script php.
// Evenement lorsque qu'on select un autre choix dans la liste déroulante
$('#id_de_ton_Selectbox').change(function() {
// on récupere la value de l'option séléctionné
var produit = $("#id_de_ton_Selectbox option:selected").val();
//on lance l'appel ajax vers le script PHP
$.ajax({
url: "fichier.php",
type: "POST",
data: {produit:produit},
success: function (data) {
// Faire quelque chose quand l'appel Ajax s'est bien passé.
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
});
<?php
function ref_prod_list(){
global $bdd;
$req = $bdd->query('SELECT ref FROM product');
while ($data = $req->fetch()){
echo '<option value="' . $data['ref'] . '">' . $data['ref'] . '</option>' ;
}
}
function last_serial(){
global $bdd;
$product = $_POST['type'];
$req1 = $bdd->query('SELECT MAX(seriale) AS max_serial FROM stock ');
while ($data = $req1->fetch()){
echo $data['max_serial'];
}
$req1->closeCursor();
}
et du coup le JS(que tu m'as fourni et que j'ai rempli du mieux que je peux :))
"new_prod.js"
// Evenement lorsque qu'on select un autre choix dans la liste déroulante
$('#product_sel').change(function() {
// on récupere la value de l'option séléctionné
var type = $("#product_sel option:selected").val();
//on lance l'appel ajax vers le script PHP
$.ajax({
url: "data_proces.php",
type: "POST",
data: {type,type},
success: function(data){
console.log(type);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
});
Enfait dans le "Data" tu mets les paramètres qui vont passer en post.
Quand je dis
data: {type:type},
C'est pour dire qu'il y'aura une variable en POST nommé type. et je lui assigne la variable type initialiser plus haut. Si on renomme la variable ça serait plus clair pour toi je pense:
var type = $("#product_sel option:selected").val();
//on lance l'appel ajax vers le script PHP
$.ajax({
url: "data_proces.php",
type: "POST",
data: {type_post:type},
success: function(data){
console.log(type);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
Donc pour récupérer ce parametre en POST du coté le PHP :
$_POST['type_post']
Et dans ton succes tu fera le JS pour remplir les champs avec les données que ta renvoyer le PHP. Attention: Une fois que tu fais l'appel vers le PHP ton script doit faire un echo json_encode($donnees) pour que ton appel Ajax puisse récuperer les données et dans le succes il faut faire un JsonParse() pour les re convertir en tableau JS et le manipuler.
mon data_process.php comprend la fonction que je veux utiliser: pour le moment je ne la fais pas encore intervenir la variable en POST, j'essaye juste de la récupérer avec succès, et c'est là que le message d'erreur php m'indique que $_POST['type'] est indefini. la fct est
function last_serial(){
global $bdd;
$product = $_POST['type'];
$req1 = $bdd->query('SELECT MAX(seriale) AS max_serial FROM stock ');
while ($data = $req1->fetch()){
echo $data['max_serial'];
}
$req1->closeCursor();
}
Ok ok, Mais en MVC tes url's sont du style : "http://siteweb.com/NomDuControlleur/NomDeFonction
Dans ton cas si ta fonction "last_serial" se trouve dans le ControllerAdmin :
http://siteweb.com/admin/last_serial
Mais bon vue que tu fait juste des require_once() de tes fichiers php, j'en deduis que tu n'a pas ce système de routes qui génère les url's que j'ai cité au-dessus.
Dans ce contexte tu ne pourra pas appeler tes fonctions via une URL.
Ce que tu dois faire pour accéder à la variable POST "type":
- Tu devras placer ton code en dehors de la fonction
- Faire un isset de la variable POST "type"
if(isset($_POST['type']){
$product = $_POST['type'];
echo $product;
}
function last_serial(){
global $bdd;
$req1 = $bdd->query('SELECT MAX(seriale) AS max_serial FROM stock ');
while ($data = $req1->fetch()){
echo $data['max_serial'];
}
$req1->closeCursor();
}
Oui je me rend compte que je ne connais pas encore grand chose; cela veut donc dire que je ne peux pas utiliser de jquery / ajax ? comment charger mon POST en fonction d'un event du coup ?
salut, tu pour expliquer ça : "Le but étant que j'ai dans ma table plusieurs "type_produit" et qu'il me préremplisse mon champ n°serie en fonction du type_produit."
et bien j'ai un autr module en parralèle qui enregistre un type de produit: exemple, type: clavier; souris; ecran ...
et que le module que je suis en train de faire pour le moment qui représente un stock insert 1 unité d'un type ( un écran par exemple ) et lui attribue un n° serie en fonction du dernier element "type". de ma base stock.
chaque type à sa suite de n° de serie différente: dans mon exemple, j'ai un 0001 ecran , un 0001clavier etc.
Le but etant de pré-remplir le ahmp n° de serie en fct du type que je choisi dans mon select.
D'autre part, je gere le coté php/SQL mais n'ai pratiquement pas de connaissance en jquery / ajax. Avec l'aide de mohzah, et le code qu'il m'a fourni, je peux gere l'evenement du select mais à cause de mes lacunes dans ces derniers languages, il me manque des notions élémentaires.
Oui dans le isset que je t'ai envoyé plus loin tu fait ta requête et tu renvoi le résultat au code je en faisant un echo du resultat et dans la succès de l'Ajax tu fais le script jquery pour remplir le champ avec la réponse reçu. Tu y est presque
Merci beaucoup; je surchauffe pour ce soir, je remprendrais demain je vais finir par y arriver lol
je pense que mon architecture est encore bancale, ca me complique la chose il faudra que je lise le cours MVC quand j'aurais le temps, car je me base sur l'intro de l'architecture qui se trouve dans le cours php.
j'ai avancé avec la gestion du jquery mais il y'a juste quelque chose qui m'échape, et que je n'arrive pas à régler je n'arrive toujour pas à acceder au POST en dehors de mon code jquery.
du coup je n'arrive pas à tester positivement le isset.
En fin de compte; il me semble que ce que je cherche à faire est impossible, je me suis un peu perdu dans les différents languages et leurs portées...
Je cherchais à exécuter mon php en fonction du résultat obtenu dans ma liste déroulante... ce qui semble logiquement impossible vu que le php executé coté srveur renvoi le html, sans recharger la page, il est impossible de traiter ma requete sql n'est ce pas ?
effectivement encore désolé mais j'étais vraiment perdu,à force de tester plein de choses, j'ai fini par créer une zone ou je sélectionne mon produit, et un iframe avec plusieurs champs qui se remplissent en fonction de l'object sélectionné.
l'evenement jquery rempli le POST avec la selection et l'envoie vers ma page php ou je fais ma requete.
et du coup ce que je suis en train de faire c'est d'écrire l'ajax pour remplir les champs auto avec le resultat de ma requete grace au success.
j'arrive à executer mon php; j'ai presque réussi, merci beaucoup pour l'aide
formulaire: préremplir un champ avec conrenu bdd
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
N'oubliez pas d'activer les erreurs PDO.