Page 1 sur 1

option dans un select sectionné par default quand je post

Posté : 23 sept. 2005, 16:00
par pitioli
Bonjour j'ai 2 liste deroulante,

La premiere va rechercher les base dedonnée existante et me les insere dans ma liste quand je valide ca crée une 2e liste deroulante et son inséré directement toute les table de cette base.

par contre au moment du réaffichage je voudrais que ma base selectionné reste par default !!!

Alors je sais pas si c un peu de javascript a inserer ou si c'est un test php...

à vous de me dire :wink:
je vous fourni le source :

<html>
<head>
</head>
<body>
<form name="database" method='post' action='tp7.php'>
<?php echo affichDb() ?>
</form>


<?php

function affichDb()
{
	//Connection au serveur
		
	if (($connect = mysql_connect('127.0.0.1','root','')) == 0 )
	{
		die("Impossible de se connecter au serveur");
	}
		
	$sql = "SHOW DATABASES"; 

		
	$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
	
	
		$combo = "";
		$combo.="<select name='combo'>";
		$combo.="<option value='default'> [--  Database  --] </option>";
		while($data = mysql_fetch_row($req)) 
	    { 
			for ($i=0;$i<count($data);$i++)
			{
				
				$combo.="<option value=".$data[$i].">".$data[$i]."</option>";
			}
		}
		
		$combo.="</select>";
		
		$combo.="<input type='submit' value='ok'><br>";

		if (isSet($_POST['combo']))
		{
			
			$combo.= affichTable();
		}
		
		return $combo;
		
	//mysql_close($connect);
}
function affichTable()
{ 	
		if(mysql_select_db($_POST['combo']) == 0)
		{
			die("Impossible de se connecter à la base");
		}
		
		$sql = "SHOW TABLES"; 
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		$combo2="";
		$combo2.="<select name='combo2'>";
		$combo2.="<option value='default'> [--  Table  --] </option>";
		while($data = mysql_fetch_row($req)) 
		{ 
			for ($i=0;$i<count($data);$i++)
			{
				
				$combo2.="<option value=".$data[$i].">".$data[$i]."</option>";
			}
		}
		
		$combo2.="</select>";
		if (isSet($_POST['combo2']))
		{
			
			$combo2.=affichChamp();
		}
		
		return $combo2;
		
}
function affichChamp()
{
		if(mysql_select_db($_POST['combo']) == 0)
		{
			die("Impossible de se connecter à la base");
		}
		$sql = "EXPLAIN ".$_POST['combo'].".".$_POST['combo2']; 
		$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
		$champ="";
		while($data = mysql_fetch_row($req)) 
		{ 
			
			$champ.="<input type='text' value".$data[0].">".$data[0]."</input><br>";
		}
		return $champ;
		
}
?>
</body>
</html>

Posté : 23 sept. 2005, 16:08
par smarties
Utilise la balise code ou/et php pour mettre en forme tes sources :wink:

Posté : 23 sept. 2005, 16:59
par Cyrano
Je ne sais pas trop ce que tu envisages de faire avec ça, mais j'aime bien l'idée. Voici une proposition de correction fonctionnelle testée:
<?php
function connexion()
{
    $serveur = "localhost";
    $admin   = "root";
    $mdp     = "";
    $connexion = mysql_connect($serveur, $admin, $mdp) or die("Impossible de se connecter au serveur");
    return $connexion;
}
function affichDb()
{
    //Connection au serveur
    $choix = isset($_POST['combo']) ? $_POST['combo'] : "";
    connexion();

    $sql = "SHOW DATABASES";

    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

    $combo = "";
    $combo.="  <select name='combo'>\n";
    $combo.="    <option value='default'> [-- Database --] </option>\n";
    while($data = mysql_fetch_row($req))
    {
        $selected = $data[0] == $choix ? " selected = \"\"" : null;
        $combo.="    <option value=\"".$data[0]."\"". $selected .">".$data[0]."</option>\n";
    }

    $combo.="  </select>\n";
    $combo.="  <input type='submit' value='ok' /><br />\n";
    if (isset($_POST['combo']))
    {
        $combo.= affichTable();
    }
    return $combo;
    //mysql_close($connect);
}
function affichTable()
{
    $choix = isset($_POST['combo2']) ? $_POST['combo2'] : "";
    if(mysql_select_db($_POST['combo']) == 0)
    {
        die("Impossible de se connecter à la base");
    }

    $sql = "SHOW TABLES";
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $combo2="";
    $combo2.="  <select name='combo2'>\n";
    $combo2.="    <option value='default'> [-- Table --] </option>\n";
    while($data = mysql_fetch_row($req))
    {
        $selected = $data[0] == $choix ? " selected = \"\"" : null;
        $combo2.="    <option value=\"".$data[0]."\"". $selected .">".$data[0]."</option>\n";
    }

    $combo2.="  </select><br />\n";
    if (isSet($_POST['combo2']))
    {

        $combo2.=affichChamp();
    }

    return $combo2;

}
function affichChamp()
{
    if(mysql_select_db($_POST['combo']) == 0)
    {
        die("Impossible de se connecter à la base");
    }
    $sql = "EXPLAIN ".$_POST['combo'].".".$_POST['combo2'];
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    $champ="";
    while($data = mysql_fetch_row($req))
    {

        $champ.="  <input type='text' value=\"".$data[0]."\" /> ".$data[0]."<br />\n";
    }
    return $champ;

}
/* Fin des fonctions */
?>

<?php
/* Affichage de la page */
echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" xml:lang="fr" />
<title>Liste des bases de données en local.</title>
</head>
<body>
<form id="database" method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
  <p>
<?php echo affichDb() ?>
  </p>
</form>
</body>
</html>

Posté : 23 sept. 2005, 17:29
par pitioli
J'envisage rien lol
C'est juste pour apprendre le php, Si tout ce passe bien ca s'enriente vers un generateur de SELECT en SQL, c'est à dire que les personne choisiront ce qu'elle veule afficher dans leur table. Rien de plus mais bon pour moi c'est du boulot

Merci. Je ne connaissais pas l'attribut selected de option...
On dirais bien qu'il ya des choses à revoir en html aussi lol

En tt k tu m'as eviter des heures de recherches pour pas grand chose !!
Grand merci !