Renvoyer plusieurs valeurs a partir d'un select vers une BDD [Résolu]

Signaler
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
-
Bonjour,

J'ai un petit probleme qui est peut etre simple mais je ne connais pas le methode.
Je suis en train de développer un intranet pour ma societé, en PHP, et j'aimerais qu'un SELECT récupère 2 colonnes de ma table PARAMETRES, la colonne "parametre" et la colonne "rang".
On séléctionne ces 2 valeurs pour permettre d'enregistrer les autres INPUT dans la ligne où il y a la valeur $parametre dans la colonne "parametre" et la valeur $rang dans la colonne "rang".

C'est facile à récupérer ces 2 infos dans le SELECT, mais le plus dur est de les renoyer. JE sais récuperer ces 2 valeurs mais en renvoyer qu'une seule.

<SELECT NAME="pararang_mod" ID="pararang_mod">
<?php
ConnexionBaseCARRI($connect);
$sql="select PARAMETRE,RANG from parametres  ORDER BY RANG";
$res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());
while (odbc_fetch_row($res))
{   
    $rang_mod = trim(odbc_result($res,"RANG"));
    $parametre_mod = trim(odbc_result($res,"PARAMETRE"));
    echo "<OPTION value='".$rang_mod."'>".$rang_mod." - ".$parametre_mod."</OPTION>";
}
DeconnexionBaseCARRI($connect);
?> </SELECT>

Comme vous pouvez le voir, je viens récuperer PARAMETER et RANG, mais dans mon OPTION du SELECT, la valeur est $rang_mod, alors que je voudrais avoir les 2 SI les 2 n'existent pas dans al base (les 2 parce que il peut  avoir plusieurs meem parametres, plusieurs meme rangs, mais pas plusieurs même parametre ayant le meme rang. Peut etre ma méthode n'est pas bonne...

SVP aidez moi
Je vous en remercie.

Ju'

10 réponses

Messages postés
23
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2009

ben regarde la doc php sur cette fonction, faudra bidouiller c'est sur, mais je pense que c'est faisable en comptant combien il y a des caractère avec le "/" inclus et puis après tu commence ton  substr() là jusqu'à la fin ...

c'est juste une piste ...

Alex
Messages postés
23
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2009

tu coupe le premier jusqu'au "/"que tu met dans une variable avec strrpos(), tu compte avec strlen() le nombre de caractère que contient cette variable, et cela te donne la valeur de départ de ta deuxième chaine, et tu peux ainsi utiliser substr pour récupérer la deuxième chaine ...

Alex,
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
Hello !

Je reviens sur ce topic pour poster ma réponse si jamais ça peut servir à quelqu'un....

Bopn bah j'ai trouvé mon probleme, j'ai renvoyé dans la value "$rang_mod.$parametre_mod"
Ensuite en haut de page(puisqu'avec le formulaire je me rappelle moi meme) j'affecte 2 variable pour reprendre la renvoi de la valeur du VALUE avec la méthode que tu m'as dite en premier, faire un substr

    $parametre_mod = substr( $_POST['pararang_mod'], 3, strlen( $_POST['pararang_mod'] ) - 3 );
    $rang_mod = intval(substr( $_POST['pararang_mod'], 0, 3 ));

Et mon <SELECT> qui affiche les 2 colonnes de ma table :

<SELECT NAME="pararang_mod" ID="pararang_mod">
<?php




//CONNEXION A LA BASE
$sql="select PARAMETRE,RANG from parametres ORDER BY PARAMETRE, RANG";
$res=odbc_exec($connect, $sql) or die($sql."
".odbc_error());






while (odbc_fetch_row($res))
{   
  $rang_mod = trim(odbc_result($res,"RANG"));
  $parametre_mod = trim(odbc_result($res,"PARAMETRE"));







  echo "<OPTION value='".sprintf("%03d", $rang_mod ).$parametre_mod."'>".$parametre_mod." (".$rang_mod.")</OPTION>";






}






//DECONNEXION






?> </SELECT>


Et ça fonctionne niquel, merci du coup de main je n'aurais pas trouvé si tu ne m'avasi pas mis sur la voie merci beaucoup bonne journée a ++
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
j'ajoute que tout mon fichier sera traité en fonction de ces 2 variables récupérées, dans chacune de me requete je dois avoir :
$sql " select ............ where PARAMETRE '".$parametre_mod."' and
RANG = '".$rang_mod."' ";
meme chose pour les commandes "update" et "delete".
Messages postés
23
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2009

Je ne sais pas si j'ai compris ce que tu voulais, mais une concaténation dans la value suffit non ?

echo "<OPTION value='".$rang_mod.$parametre_mod"'>".$rang_mod." - ".$parametre_mod."</OPTION>";

J'attend ta réponse ...
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
Bonjour et merci de ta réponse.

Je me suis effectivement posé la question, mais à ce moment là, comment ça se passe pour la valeur renvoyée ?
Car si on laisse uniquement $rang_mod dasn le value, si par exemple $rang_mod = 2, le select renverra 2, mais pour plusieurs valeur je ne sais pas comment je peux gérer ça.
Messages postés
23
Date d'inscription
jeudi 4 octobre 2007
Statut
Membre
Dernière intervention
17 avril 2009

Autrement ce que tu peux essayer de faire c'est dans le value="


$rang_mod.


"/"$parametre_mod


"

, tu vois enfait séparer tes deux expressions, pour les découper après dans ton traitements ...
puis de découpé la chaine que tu récupère, première partie jusqu'au "/" et deuxième après ...
pour cela il y a les fonction <tt style="font-size: 9pt;">strrpos() et substr().</tt>

Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
Oui mais pour le substr() il faut connaitre à l'avance combien de caractères il y aura dans la variable. dans la 1ère c'est facile c'est soit 1 chiffres soti 2 chiffres... la 2e c'est une chaine de caractere en nvarchar(80) ...
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
bah je ne vois pas trop comment faire sachant que je ne sais pas si pour la premiere variabel il y a 1 ou 2 chiffres. (90% du temps 1 seul, mais il suffit de tomber sur les 10% qu'il reste.... arf).
Bah en tout cas merci d'avoir pris un peu de temps pour moi.

Je tiens au courant ce post si j'ai trouvé, si je n'ai pas trouvé d'ici là j'espere que quelqu'un pourra me donner un good idea pour pouvoir continuer.

@++
Messages postés
436
Date d'inscription
mercredi 26 septembre 2007
Statut
Membre
Dernière intervention
2 juillet 2014
4
un petit commentaire vite fait : comme je l'ai dit precedemment je ne savais aps combien de caracteres precisément comportait $rang_mod, sachant que je savis tres bien que le maximum de caractère allait être 3, J'ai mis un sprintf sur cette variabel avec l'attribut %03d; ce qui signifie que j'aurais toujorus 3 chifres, et le premier chiffres (ou les premiers) est un zéro. "%03d", $rang_mod

Voilou