Page 1 sur 2
visualiser base de donnees dans une liste déroulante
Posté : 03 janv. 2013, 15:11
par marc73450
bonjour,
j'ai réalisé un code permettant de visualiser les données de ma base, dans une liste déroulante pour pouvoir ensuite les modifier ! j'ai réussi a faire afficher le selected (l'option choisis par l'utilisateur) et j'aimerais donc visualiser la valeur par défaut ( le selected) + les autres valeurs qu'il peut y avoir dans mon type ENUM poste ('employé','directeur','PDG'). comment puis-je faire ? avez vous des idées ?
voici mon code :
$result = mysql_query("SELECT DISTINCT * FROM personne WHERE Nom LIKE '".mysql_real_escape_string($nom)."' && Prenom LIKE '".mysql_real_escape_string($prenom)."'");
$list = mysql_query("SELECT DISTINCT * FROM personne ");//requete pour listing personnes
echo '<select name="poste">';//création du select
while ($data = mysql_fetch_array($result))
{
while ($row = mysql_fetch_array($list)) {
if ($row["poste"] == $data["poste"]) //si la personne trouvée est celle de reponse, alors
echo '<option value="'.$row["poste"].'" selected>'.$row["poste"].'</option>';//option avec select
else
echo '<option value="'.$row["poste"].'">'.$row["poste"].'</option>';//option sans select
}
}
echo '</select>';//fin select
merci d'avance
Re: visualiser base de donnees dans une liste déroulante
Posté : 03 janv. 2013, 16:04
par Ryle
Le plus simple serait de faire un select avec tes 3 valeurs... mais bon, si tu veux éviter la redondance, il faut faire une requête sur la structure de la table pour pouvoir récupérer les valeurs autorisées de l'enum (attention cela implique également que le user utilisé pour se connecter à la base dispose des droits nécessaires) :
SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'le_nom_de_ta_table' AND COLUMN_NAME = 'le_nom_de_ta_colonne'
Bon par contre, faut nettoyer le résultat pour virer tout ce qui ne te sert pas, mais ça peut se faire assez facilement avec une expression régulière :
preg_match_all( "/'(.*?)'/", $row, $val );
print_r($val);
Re: visualiser base de donnees dans une liste déroulante
Posté : 03 janv. 2013, 16:07
par marc73450
merci je vais essayé
Re: visualiser base de donnees dans une liste déroulante
Posté : 03 janv. 2013, 16:14
par marc73450
la requête que tu me donne je la met dans $row ?

Re: visualiser base de donnees dans une liste déroulante
Posté : 03 janv. 2013, 17:23
par marc73450
j'ai reussi a utlidé ta requete mais preg_match_all ne fonctionne pas !
mon code :
$row = mysql_query("SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'personne' AND COLUMN_NAME = 'situation'");
$res = mysql_fetch_array($row);
preg_match_all( "/'(.*?)'/", $res, $val );
print_r($val);
l'erreur est :
"SCREAM: Error suppression ignored for"
" Warning: preg_match_all() expects parameter 2 to be string, array given in C:\..."
peux tu m'aider STP ?
merci d'avance
Re: visualiser base de donnees dans une liste déroulante
Posté : 03 janv. 2013, 17:55
par xTG
$res est un array, il faut passer une String.
preg_match_all( "/'(.*?)'/", $res[0], $val );
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 09:21
par marc73450
bonjour,
j'ai donc essayé avec ta solution :
$row = mysql_query("SELECT COLUMN_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'personne' AND COLUMN_NAME = 'situation'");
$res = mysql_fetch_array($row);
preg_match_all( "/'(.*?)'/", $res[0], $val );
print_r($val);
mais il me sort :
Array ( [0] => Array ( [0] => 'Celibataire' [1] => 'En couple' [2] => 'Pacse' [3] => 'Marie' [4] => 'Divorce' [5] => 'Veuf' ) [1] => Array ( [0] => Celibataire [1] => En couple [2] => Pacse [3] => Marie [4] => Divorce [5] => Veuf ) )
et j'aimerais que récupérer les valeurs (célibataire,En couple,Pacse , Marie, Divorce,Veuf) c'est tout !!
et pouvoir les exploité une par une ! aurais tu une idée comment faire ?
merci d'avance
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 10:32
par xTG
La documentation est très complète quand à comment exploiter les array :
http://fr2.php.net/manual/en/language.types.array.php 
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 11:05
par marc73450
merci j'avais déjà lu cette doc . mais elle ne parle pas de comment exploité les mysql_fetch_array() .
je n'arrive donc pas à récupérer les valeurs une par une ! je ne suis pas calés en PHP
d'autres idées ou solution ?
merci
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 11:22
par xTG
mysql_fetch_array te retourne un array.

Tu as de plus des exemples d'utilisation dans la doc :
http://fr2.php.net/mysql_fetch_array
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 12:23
par marc73450
merci je vais essayé !
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 16:31
par marc73450
j'ai réussi a récupérer les valeurs comme ceci :
<?php
$result1 = mysql_query("SELECT DISTINCT * FROM personne WHERE Nom LIKE '".mysql_real_escape_string($nom)."' && Prenom LIKE '".mysql_real_escape_string($prenom)."'");
$list1 = mysql_query("SELECT DISTINCT situation FROM personne ");//requete pour listing personnes
echo '<select name="situation">';//création du select
while ($data = mysql_fetch_array($result1))
{
while (($row = mysql_fetch_array($list1) ))
{
if ($row["situation"] == $data["situation"]){
echo '<option value="'.$row["situation"].'" selected>'.$row["situation"].'</option>';}//option avec select
else
{
$ress = mysql_query('SHOW COLUMNS FROM personne LIKE "situation" ');// requete pour chercher les valeurs dans SET
$ligne = mysql_fetch_array($ress);//je met les valeurs dans un tableau
$type = substr($ligne['Type'], 5, (strlen($ligne['Type'])-7));//je les traites en enlevant les premier caractere
$mon_enum = preg_split('#\',\'#', $type);//j'eneleve les guiellemets et les virgules
for ($i=0 ; $i<6 ; $i++)
echo '<option value="'.$mon_enum[$i].'">'.$mon_enum[$i].'</option>';
}
}
}
echo '</select>';//fin select
?>
Mais par contre tout ce qu'il y a aprés le "else" se répete autant de fois qu'il y a de personne dans ma table , j'aimerais qu'il se répete qu'une seul fois
comment puis-je faire ?
merci
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 16:32
par xTG
Mets donc le code de ce else en dehors de ta boucle while pour que ces infos n'apparissent qu'une seule fois dans ton select.
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 16:50
par marc73450
je ne peux pas sinon ca me fait une erreur !!
Parse error: syntax error, unexpected T_ELSE in C:\....
while ($data = mysql_fetch_array($result1))
{
while (($row = mysql_fetch_array($list1) ))
{
if ($row["situation"] == $data["situation"])
echo '<option value="'.$row["situation"].'" selected>'.$row["situation"].'</option>';//option avec select
}
}
else
{
$ress = mysql_query('SHOW COLUMNS FROM personne LIKE "situation" ');
$ligne = mysql_fetch_array($ress);//je met les valeurs dans un tableau
$type = substr($ligne['Type'], 5, (strlen($ligne['Type'])-7));//je les traites en enlevant les premier caractere
$mon_enum = preg_split('#\',\'#', $type);//j'eneleve les guiellemets et les virgules
for ($i=0 ; $i<6 ; $i++)
echo '<option value="'.$mon_enum[$i].'">'.$mon_enum[$i].'</option>';
}
Re: visualiser base de donnees dans une liste déroulante
Posté : 04 janv. 2013, 17:59
par xTG
Le code contenu dans le else, pas le else avec.

Sinon cela n'a aucun sens.