option dans un select sectionné par default quand je post

Petit nouveau ! | 2 Messages

23 sept. 2005, 16:00

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>

Eléphant du PHP | 199 Messages

23 sept. 2005, 16:08

Utilise la balise code ou/et php pour mettre en forme tes sources :wink:
Les 2 font la paire : coder ET commenter :wink:

Mammouth du PHP | 19672 Messages

23 sept. 2005, 16:59

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>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

23 sept. 2005, 17:29

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 !