Une zone de liste deux champs enregistrés
maxireussite
Messages postés
405
Statut
Membre
-
maxireussite Messages postés 405 Statut Membre -
maxireussite Messages postés 405 Statut Membre -
Bonjour à tous,
Voilà un script qui pour une fois fonctionne très bien. Il me permettait jusqu'à maintenant de visualiser les champs code_client et nom, mais de faire ma sélection d'après le code_client.
je souhaiterais le modifier. L'affichage doit rester le même, mais je souhaite que le champs nom soit désormais pris en compte parmi tous les champs à récupérer par la page "action".
Bien entendu j'ai déjà rajoutér le champs nom dans la table MysQl et modifié la page "Action" pour qu'elle récupère ce champs.
<?php
$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requette = mysql_query("SELECT code_client,nom FROM oc_clients ORDER BY code_client ASC ") or die("Pb avec la requette ".mysql_error());
?>
<td class="auto-style2" style="width: 131px">code client *</td>
<td><select name="code_client" style="width: 159px">
<?php
while ($valeur = mysql_fetch_array($requette)){
echo "<option value=\"". $valeur['code_client'] ." ". $valeur['nom'] ."\">". $valeur['code_client'] ." ". $valeur['nom'] ."</option>\n";
}
?>
Merci par avance.
Voilà un script qui pour une fois fonctionne très bien. Il me permettait jusqu'à maintenant de visualiser les champs code_client et nom, mais de faire ma sélection d'après le code_client.
je souhaiterais le modifier. L'affichage doit rester le même, mais je souhaite que le champs nom soit désormais pris en compte parmi tous les champs à récupérer par la page "action".
Bien entendu j'ai déjà rajoutér le champs nom dans la table MysQl et modifié la page "Action" pour qu'elle récupère ce champs.
<?php
$db='****';
$cnx=mysql_connect('localhost', '****', '****') or die("Pb connexion serveur ".mysql_error()); // connexion à la base
$db_sel=mysql_select_db($db) or die("Erreur de selection ".mysql_error());
$requette = mysql_query("SELECT code_client,nom FROM oc_clients ORDER BY code_client ASC ") or die("Pb avec la requette ".mysql_error());
?>
<td class="auto-style2" style="width: 131px">code client *</td>
<td><select name="code_client" style="width: 159px">
<?php
while ($valeur = mysql_fetch_array($requette)){
echo "<option value=\"". $valeur['code_client'] ." ". $valeur['nom'] ."\">". $valeur['code_client'] ." ". $valeur['nom'] ."</option>\n";
}
?>
Merci par avance.
A voir également:
- Une zone de liste deux champs enregistrés
- Liste déroulante excel - Guide
- Alternative zone telechargement - Accueil - Outils
- Comment enregistrer une conversation entre deux personnes ? - Guide
- Nombre de jours entre deux dates excel - Guide
- Liste code ascii - Guide
9 réponses
Donc si j'ai bien compris, tu souhaite récupérai jusque là le "code client" sélectionné dans ta page de traitement "action" et maintenant tu souhaite récupérer le nom qui correspond au code client sélectionné ?
Si c'est ça, je doute que rajouter "$valeur['code_client'] ." ". $valeur['nom']" soit la meilleure solution, car là sur la page action, la variable $_POST['code_client'] va donner "XXX Nom_Du_Client", et bon, ça fait pas très propre ^^
Donc ya trois solutions :
Soit tu récupère le nom du client qui correspond au code client récupéré depuis la page action à l'aide d'une simple requete select nom from table where code_client = '$_POST['code_client']' (en ayant bien retiré $valeur['nom'] de "<option value=")
Soit tu ajoute pendant ta boucle "while ($valeur = mysql_fetch_array($requette)){ ", le nom du client dans la balise option
Exemple :
et tu ajoute un input hidden donc la valeur devra être mise à jour (en js) à chaque fois que l'utilisateur modifie le select (ou en ajoutant un "onSubmit" à ton formulaire)
Soit tu met un # ou autre caractère qui n'est ni dans code client ni dans le nom entre $valeur['code_client'] et $valeur['nom'] pour ensuite, dans la page de traitement, parser le $_POST['code_client'] en splitant par le # (ou autre) pour obtenir en variable [0] : le code et en [1], le nom...
Enfin j'espère ne pas m'être trop égaré du sujet et que c'etait bien ça que tu cherchai :/
Si c'est ça, je doute que rajouter "$valeur['code_client'] ." ". $valeur['nom']" soit la meilleure solution, car là sur la page action, la variable $_POST['code_client'] va donner "XXX Nom_Du_Client", et bon, ça fait pas très propre ^^
Donc ya trois solutions :
Soit tu récupère le nom du client qui correspond au code client récupéré depuis la page action à l'aide d'une simple requete select nom from table where code_client = '$_POST['code_client']' (en ayant bien retiré $valeur['nom'] de "<option value=")
Soit tu ajoute pendant ta boucle "while ($valeur = mysql_fetch_array($requette)){ ", le nom du client dans la balise option
Exemple :
echo "<option value=\"". $valeur['code_client'] ."\" cli_name=\"". $valeur['nom'] ."\">". $valeur['code_client'] ." ". $valeur['nom'] ."</option>n";
et tu ajoute un input hidden donc la valeur devra être mise à jour (en js) à chaque fois que l'utilisateur modifie le select (ou en ajoutant un "onSubmit" à ton formulaire)
Soit tu met un # ou autre caractère qui n'est ni dans code client ni dans le nom entre $valeur['code_client'] et $valeur['nom'] pour ensuite, dans la page de traitement, parser le $_POST['code_client'] en splitant par le # (ou autre) pour obtenir en variable [0] : le code et en [1], le nom...
Enfin j'espère ne pas m'être trop égaré du sujet et que c'etait bien ça que tu cherchai :/
Bon, TucSky, je te remercie mais tes propositions ne me sont pas très accessibles vu que je ne touche pas du tout en php.
J'ai tenté d'adapter, sans comprendre ce que je fais...
Peux-tu stp partir d'UNE solution pas trop éloignée de mon existant ?
J'ai tenté d'adapter, sans comprendre ce que je fais...
Peux-tu stp partir d'UNE solution pas trop éloignée de mon existant ?
Salut
Tu touche pas du tout au php ? Mais pourtant tu a modifié la page action (et ça doit être du php non ?).
Si tu peut modifier la page action, laisse ton code du formulaire comme il etait dans ton premier message, sauf que au niveau de
Tu touche pas du tout au php ? Mais pourtant tu a modifié la page action (et ça doit être du php non ?).
Si tu peut modifier la page action, laisse ton code du formulaire comme il etait dans ton premier message, sauf que au niveau de
<option value=\"". $valeur['code_client'] ." ". $valeur['nom'] ."\">Met un # entre les deux variables :
<option value=\"". $valeur['code_client'] ."#". $valeur['nom'] ."\">Ensuite dans la page action, au niveau de t'es déclaration de variable POST, met ça
$cli = explode('#',$_POST['code_client']);
$code_cli = intval($client[2]); //contiendra le code client
$nom_cli = mysql_real_escape_string($client[1]); //contiendra le nom du client
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci bcp, je vais tester cela.
je voulais dire que je ne suis pas un crack, :).
Car je fais des trucs qu'à partir de modèles que j'adapte, et j'avoue ne pas toujours comprendre ce que je fais...
je voulais dire que je ne suis pas un crack, :).
Car je fais des trucs qu'à partir de modèles que j'adapte, et j'avoue ne pas toujours comprendre ce que je fais...
TucSky,
Ok pour la page du formulaire,
mais pour la page action, je ne vois pas d'emblée où mettre le code que tu me proposes...
J'ai tenté plusieurs versions, mais elles donnent toutes des erreurs...
Mon script commence ainsi :
"<?php
if(isset($_POST['code_client'])) $code_client=$_POST['code_client'];
else $code_client="";
if(isset($_POST['piece'])) $piece=$_POST['piece'];
else $piece="";
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";
if(isset($_POST['marque'])) $marque=$_POST['marque'];
else $marque="";
.../..."
Dois-je remplacer toute la ligne relative au code_client ou bien juste remplacer le 1er $_POST ?
Ok pour la page du formulaire,
mais pour la page action, je ne vois pas d'emblée où mettre le code que tu me proposes...
J'ai tenté plusieurs versions, mais elles donnent toutes des erreurs...
Mon script commence ainsi :
"<?php
if(isset($_POST['code_client'])) $code_client=$_POST['code_client'];
else $code_client="";
if(isset($_POST['piece'])) $piece=$_POST['piece'];
else $piece="";
if(isset($_POST['nom'])) $nom=$_POST['nom'];
else $nom="";
if(isset($_POST['marque'])) $marque=$_POST['marque'];
else $marque="";
.../..."
Dois-je remplacer toute la ligne relative au code_client ou bien juste remplacer le 1er $_POST ?
Salut
Remplace donc
par
et bien-sur met le # comme j'avais dit avant
Remplace donc
if(isset($_POST['code_client'])) $code_client=$_POST['code_client'];
else $code_client="";
par
if(isset($_POST['code_client'])) {
$cli = explode('#',$_POST['code_client']);
$code_client = intval($cli[2]);
$nom_client = mysql_real_escape_string($cli[1]);
} else {
$code_client="";
$nom_client="";
}
et bien-sur met le # comme j'avais dit avant
Malheureusement, ça me donne un message d'erreur. En plus ça ne remplit même pas la table.
Voilà le début du script tel que l'ai adapté :
"<?php
if(isset($_POST['code_client'])) {
$cli = explode('#',$_POST['code_client']);
$code_client = intval($cli[2]);
$nom = mysql_real_escape_string($cli[1]);
} else {
$code_client="";
$nom="";
}
if(isset($_POST['piece'])) $piece=$_POST['piece'];
else $piece="";
.../...
Voilà le début du script tel que l'ai adapté :
"<?php
if(isset($_POST['code_client'])) {
$cli = explode('#',$_POST['code_client']);
$code_client = intval($cli[2]);
$nom = mysql_real_escape_string($cli[1]);
} else {
$code_client="";
$nom="";
}
if(isset($_POST['piece'])) $piece=$_POST['piece'];
else $piece="";
.../...