[RESOLU] visualiser base de donnees dans une liste déroulante

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] visualiser base de donnees dans une liste déroulante

Re: visualiser base de donnees dans une liste déroulante

par marc73450 » 05 janv. 2013, 09:54

merci de ton conseil ! ca marche !

Re: visualiser base de donnees dans une liste déroulante

par xTG » 04 janv. 2013, 17:59

Le code contenu dans le else, pas le else avec. ;)
Sinon cela n'a aucun sens.

Re: visualiser base de donnees dans une liste déroulante

par marc73450 » 04 janv. 2013, 16:50

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

par xTG » 04 janv. 2013, 16:32

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

par marc73450 » 04 janv. 2013, 16:31

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

par marc73450 » 04 janv. 2013, 12:23

merci je vais essayé !

Re: visualiser base de donnees dans une liste déroulante

par xTG » 04 janv. 2013, 11:22

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

par marc73450 » 04 janv. 2013, 11:05

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

par xTG » 04 janv. 2013, 10:32

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

par marc73450 » 04 janv. 2013, 09:21

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

par xTG » 03 janv. 2013, 17:55

$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

par marc73450 » 03 janv. 2013, 17:23

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

par marc73450 » 03 janv. 2013, 16:14

la requête que tu me donne je la met dans $row ? :)

Re: visualiser base de donnees dans une liste déroulante

par marc73450 » 03 janv. 2013, 16:07

merci je vais essayé

Re: visualiser base de donnees dans une liste déroulante

par Ryle » 03 janv. 2013, 16:04

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);