Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/11/2007, 22h32   #1
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Par défaut [SQL] Afficher contenu d'une table dans une liste déroulante

Bonsoir,

J'ai une table categories ou j'ai effectuer des INSERT en dur, comment dois je faire pour les afficher avec php dans un champ " liste déroulante " ??

merci à vous

bonne soirée.
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 01h22   #2
Membre du Club
 
Inscription : novembre 2006
Messages : 61
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : novembre 2006
Messages : 61
Points : 42
Points : 42
Envoyer un message via MSN à gandalf76fr Envoyer un message via Skype™ à gandalf76fr
un truc du genre :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$sql='SELECT * FROM `auteur_doc` ORDER BY `nom` ASC ';	
$req=mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());	
while ($ligne=mysql_fetch_array($req))	
{	
	$id=addslashes($ligne['id']);	
	$nom=addslashes($ligne['nom']);	
	$prenom=addslashes($ligne['prenom']);
 
	echo '<option value="'.$ligne['id'].'">'.$nom.' '.$prenom.'</option>';	
}	
echo '</select>';
gandalf76fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 10h02   #3
Membre confirmé
 
Avatar de onirisme
 
Inscription : novembre 2004
Messages : 210
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : novembre 2004
Messages : 210
Points : 232
Points : 232
ou avec mysql_fetch_row ->

Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
//Connexion à la base de données
mysql_select_db("test");
 
//Tu lances la requête
$req=mysql_query("SELECT * FROM categories ");
 
echo '<select name="categories">'."\n";
//Boucle sur la requête
//[0] -> =id & [1] -> label
while($cat=mysql_fetch_row($req)){
	echo '<option value="'.$cat[0].'">'.$cat[1].'</option>'."\n";
}
echo '</select>'."\n";

Donne
Code HTML :
1
2
3
4
5
6
7
8
 
<select>
<option value="1">Catégorie1</option>
<option value="2">Catégorie2</option>
<option value="3">Catégorie3</option>
<option value="4">Catégorie4</option>
<option value="5">Catégorie5</option>
</select>
__________________
Mes parents m'ont offert le nouvel iPhone 3G pour mon anniversaire. Lorsqu'ils me l'ont donné, mon père m'a dit, un peu embarassé : "Le vendeur a dit que ça lisait les vidéos, mais j'ai un doute car je me demande bien où on peut mettre le DVD"
onirisme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 15h37   #4
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonjour,

J'ai essayer de faire mon formulaire mais pour aller chercher dans ma db les catégorie et me les afficher dans la liste déroulante sa ne fonctionne pas, et je n'arrive pas à insérer le champ catégorie juste en dessou du champ société.

Pouvez vous m'aider ?

Merci à vous

form.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
<html>
  <head>
    <title>Admin inserer des donnees</title>
  </head>
<body>	 
<div align="center"><h1>Admin</h1></div>
<br><div align="center"><b>Enregistré vos données</b></div>
<br>
<form name="insertion" action="insert.php" method="POST">  
 
<table border="0" align="center" cellspacing="2" cellpadding="2">
 
 <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">											 
	<input type="hidden" name="id_membres">
      <td>Société</td>
      <td><input type="text" name="societer" size="30"></td>
    </tr>		 
 
	<tr align="center">	  
	<?php
	$db = mysql_connect('localhost', 'root', '');  // connexion à la base 
    mysql_select_db('membres',$db);        // sélection de la base 	 
 
	//Tu lances la requête
    $req=mysql_query("SELECT * FROM categories ");
 
    echo '<select name="categories">'."\n";
    //Boucle sur la requête
    //[0] -> =id & [1] -> label
    while($cat=mysql_fetch_row($req)){
	echo '<option value="'.$cat[0].'">'.$cat[1].'</option>'."\n";
    }
    echo '</select>'."\n";
 
	?>	
	</tr>
 
    <tr align="center">
      <td>Contacts</td>
      <td><input type="text" name="contacts" size="30"></td>
    </tr>
    <tr align="center">
      <td>Adresse complète</td>
      <td><input type="text" name="adresses" size="30"></td>
    </tr>
    <tr align="left">
      <td>Téléphone</td>
      <td><input type="text" name="telephone" size="16"></td>
    </tr>
    <tr align="center">
      <td>E-mail</td>
      <td><input type="text" name="email" size="30"></td>
    </tr>
 
	<tr align="center">
      <td>URL</td>
      <td><input type="text" name="url" size="30"></td>
    </tr>
 
    <tr align="center">
      <td colspan="2"><input type="submit" value="insérer"></td>   
	  <!--bouton effacer-->		  
      <td colspan="2"><input type="reset" value="Effacer"></td> 
    </tr>		
 
  </table>
 
</form>
</body>
</html>
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 17h25   #5
Membre habitué
 
Avatar de dream_of_australia
 
Inscription : juin 2007
Messages : 167
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : juin 2007
Messages : 167
Points : 104
Points : 104
Quelle est la structure de ta table ? Parce que là tu pars du principe que : $cat[0] -> id & $cat[1] -> label. C'est ce que t'as donné onirisme, mais il faut peut-être l'adapter à ta table.
__________________
http://www.castaliope.fr
dream_of_australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 17h55   #6
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
j' ai 2 tables la première tbmembres et l'autre table tbcategories dans celle ci il y à déjà mais catégories définie.

tbmembres
idtbmembres
societer
contact
idcategories
ect
....

tbcategories
idcategories
categories

Bonne soirée.
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 18h10   #7
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
J'ai réussi à inserer des données dans les 2 tb maitenant se que je voudrais faire c'est de pouvoir modifier ou supprimer une ligne dans c'est 2 tb, en sachant qu'il doit supprimer les infos des 2 tb qui correspondent.

Pouvez vous m'aider ?

merci à vous
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 08h25   #8
Membre confirmé
 
Avatar de onirisme
 
Inscription : novembre 2004
Messages : 210
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : novembre 2004
Messages : 210
Points : 232
Points : 232
Donne un peu plus d'infos...

Que souhaites tu faire exactement?

Si tu supprimes ou modifies un enregistrement de la table utilisateur ceci n'a aucune incidence sur la table catégorie

Si tu supprimes une catégorie ceci va avoir une importance :
Il faut que tu intérroges ta base de donnée pour savoir si un utilisateur dépend de cette catégorie. Si ta requête retourne "vai", il faut définir une autre valeur dans cat_id.

Si tu modifies une catégorie, ceci n'a pas d'incidence étant donné que ta tables client est relié à l'id de la catégorie.

Pour modifier un enregistrement -> $req = mysql_query("UPDATE etc...
Pour effacer un enregistrement -> $req=mysql_query("DELETE etc...
__________________
Mes parents m'ont offert le nouvel iPhone 3G pour mon anniversaire. Lorsqu'ils me l'ont donné, mon père m'a dit, un peu embarassé : "Le vendeur a dit que ça lisait les vidéos, mais j'ai un doute car je me demande bien où on peut mettre le DVD"
onirisme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 08h43   #9
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonjour,

Se que je voudrais faire c'est une zone d'admin qui supprime, modifie ou ajout un enregistrement se que j'ai déja fais c'est l'ajout et l'affichage des enreg.
Pour se qui est de la suppression et modification je n'y parviens pas, enfait dans l'affichage je voudrais avoir à coter de chaque enregistrement un icone afin de pouvoir supprimer rapidement chaque ligne.

insert.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
<?php
  //récupération des valeurs des champs:
  //idmembres
  $idmembres        = $_POST["idmembres"] ;    
  //societer
  $societer         = $_POST["societer"] ;
  //idcategories
  $idcategories     = $_POST["idcategories"] ;
  //contacts
  $contacts         = $_POST["contacts"] ;
  //adresses	
  $adresses	        = $_POST["adresses"] ;  
  //telephone
  $telephone        = $_POST["telephone"] ;
  //email 
  $email            = $_POST["email"] ;
  //url
  $url              = $_POST["url"] ;
 
  // On vérifie si les champs sont vides 
if(empty($societer) OR empty($idcategories) OR empty($email) OR empty($contacts))
    { 
    echo '<font color="red">Attention, seul les champs <b>adresse</b>, <b>téléphone</b> et URL peut rester vide !</font>'; 
    } 
 
// Aucun champ n'est vide, on peut enregistrer dans la table 
else      
    { 
 
$db = mysql_connect('localhost', 'root', '');  // connexion à la base 
mysql_select_db('membres',$db);        // sélection de la base 
 
// on regarde dans la table membres si societer existe déjà 
$sql = "SELECT idmembres FROM tbmembres WHERE societer='$societer'"; 
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
$res= mysql_num_rows($req); 
 
if($res!=0)  // la societer existe déjà, on affiche un message d'erreur 
    { 
      echo '<font color="red">Désolé, mais cette société existe déjà dans notre base de donnée aucune informations seras modifier !</font>'; 
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 	 
    } 
 
else  // la societer n'existe pas, on insère d'abord les infos dans la tb tbmembres 
    { 
    $sql = "INSERT INTO tbmembres 
	       (societer, idcategories, contacts, adresses, telephone, email, url) 
		   VALUES
		   ('$societer','$idcategories', '$contacts', '$adresses', '$telephone', '$email', '$url')"; 
           mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
	//Redirection vers la page d'insertion
    header('location: form.php'); 
 
mysql_close($db);  // on ferme la connexion  
}		
}
?>
affich.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
<html>
<body>
<div align="center"><font size="+2"><i>Base de donnée complètes
</i></font></div>
<br><br> 
<div align="center">
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'membres';
 
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
 
// requête SQL qui compte le nombre total d'enregistrements dans la table et qui
//récupère tous les enregistrements
//$select = 'SELECT tbmembres.societer, tbmembres.contacts, tbmembres.adresses, tbmembres.telephone, tbmembres.email, tbmembres.url, tbcategories.categories
 //INNER JOIN tbmembres ON tbcategories.idcategories = tbmembres.idcategories) Order by societer Asc';   
 
 $select = 'SELECT m.societer, c.categories, m.contacts, m.adresses, m.telephone, m.email, m.url
    FROM tbcategories c, tbmembres m
    WHERE m.idcategories = c.idcategories Order by m.societer Asc';
 
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
 
 
// si on a récupéré un résultat on l'affiche.
if($total) {
    // début du tableau
        echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Société</u></b></td>'; 
		echo '<td bgcolor="#669999"><b><u>Catégories</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Contacts</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Adresse Complètes</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Téléphone</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>Adresse E-mail</u></b></td>';
		echo '<td bgcolor="#669999"><b><u>URL</u></b></td>';
 
        echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row['societer'].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row['categories'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['contacts'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['adresses'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['telephone'].'</td>';
		echo '<td bgcolor="#CCCCCC">'.$row['email'].'</td>';
	    echo '<td bgcolor="#CCCCCC">'.$row['url'].'</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
   // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
 
// on libère le résultat
mysql_free_result($result);
 
?>	  
</div>
<br><br>
<div align="center"><a href="form.php">Retour au Menu Principal</a></div>
</body>
</html>
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/11/2007, 10h15   #10
Membre confirmé
 
Avatar de onirisme
 
Inscription : novembre 2004
Messages : 210
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : novembre 2004
Messages : 210
Points : 232
Points : 232
Ok.
Bon, j'ai fais un truc rapide

j'ai tout mis su la même page avec des appels de fonctions

Voici la fonction pour afficher les utilisateurs et créer des liens pour la modification ou la suppression ->
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
function showUsers(){
 
	//Selection de la base de' donnée pour test
	mysql_select_db("test");
 
	//Requêe MySql pour l'affichage des utilisateurs'
	$req1= mysql_query("SELECT id, nom, cat_id FROM utilisateurs");
 
	//Affichage des résultats sous forme de tableau
	echo '<table>';
	echo '<tr><td>ID</td><td>Nom</td><td colspan="2">Catégorie</td><td colspan="2">Actions</td></tr>';
	while($user = mysql_fetch_row($req1)){
		echo '<tr>';
		echo '<td>'.$user[0].'</td>';
		echo '<td>'.$user[1].'</td>';
		echo '<td>'.$user[2].' - ';
 
		//ceci permet d'afficher la liste des catégorie id+libellé'
		$userCat = $user[2];
		showCatLib($userCat);
 
		echo '</td>';
 
		//Liens pour les fonctions update et delete
		//j'envoie l'id dans la barre d'adresse
		echo '<td><a href="test.php?p=update&user_id='.$user[0].'">Modifier</td>';
		echo '<td><a href="test.php?p=delete&user_id='.$user[0].'">Supprimer</td>';
		echo '</tr>';
	}
	echo '<table>';
}
Ceci génére un tableau avec la liste des utilisateurs leur catégories et des liens. Je passe par l'adresse pour appeler mes fonctions (pour l'exemple, je ne sais pas si tu as des pages séparées)

Si tu cliques sur supprimer, voilà ce que tu as dans la barre d'adresse :
Code X :
1
2
test.php?p=delete&user_id=2
p -> appel de ma fonction (voir plus bas)
user_id -> l'id de l'utilisateur
Il ne reste plus qu'à récupérer l'id et l'inclure dans une fonction
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
function deleteUser(){
	//Récupération de l'id de l'utilisateur'
	mysql_select_db("test");
	$user_id = $_GET['user_id'];
 
	//Selection de l'utilisateur à supprimer'
	$req=mysql_query("SELECT id,nom FROM utilisateurs WHERE \"$user_id\"=id");
	$user_name = mysql_fetch_row($req) or die ("ERREUR MySql ! ".mysql_error());
	echo 'Vous êtes sur le point de supprimer l\'utilisateur <b>'.$user_name[1].'</b>!<br/> Confirmez pour supprimer l\'utilisateur<br/>';
 
	//Si le formulaire est soumis, on efface l'enregistrement
	if(isset($_POST['submit'])){
		$delUser=("DELETE FROM utilisateurs WHERE \"$user_id\"=id");
		mysql_query($delUser) or die ("Erreur MySql ! ".mysql_error());
		echo 'Utilisateur supprimé (paix à son âme...)<br/>';
		accueilBack();
 
	//Sinon on affiche le bouton de validation	
	}else{
		echo '<form name="delUser" action="" method="post">';
		echo '<input type="submit" name="submit" value="Confirmer" />';
		echo '</form>';
 
	}
 
}

Il y a un message d'avertissement si la validation est cliquée, on supprime l'enregistrement.

Voici les autres fonctions :
Code PHP :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
/**
 * Permet d'appeler les fonctions '
**/
if(isset($_GET['p'])){
	$action = $_GET['p'];
	//modification
	if($action=="update"){
		updateUser();
	}
	//suppression
	if($action=="delete"){
		deleteUser();
	}
	//Si pas de valeur['p'] on affiche la table des utilisateurs
}else{
	showUsers();
}
 
/**
 * Affiche les catégories sous forme de select
**/
function showCat(){
	$showCat=mysql_query("SELECT * FROM categories ");
	echo '<select name="categories">';
	while($cat = mysql_fetch_row($showCat)){
		echo '<option value="'.$cat[0].'">'.$cat[1].'</option>';
		}
	echo '</select>';
}
 
/**
 * Affiche le libellé des catégorie
 * Voir la fonction showUser
**/
function showCatLib($userCat){
	//$userCat = $user[2];
	$req=mysql_query("SELECT * FROM categories WHERE \"$userCat\"=id");
	$catLib=mysql_fetch_row($req) or die ("Erreur MySql ! ".mysql_error());
	echo $catLib[1];
}

tu peux faire autrement, par exemple avec des cases à cocher pour selectionner l'enegistrement.

Tu trouveras surement ta réponse dans tout ça, j'imagine que c'est pas parfait mais ça fonctionne.

Mets des images à la place des liens supprimer,modifier.
Adapte en fonction de tes tables, moi j'ai juste id, nom, cat_id
Si tu travaille sur plusieurs pages, il suffit de modifier le lien en mettant le tien
exemple : delete.php?user_id= (id sélectionné)
et de le récupérer
__________________
Mes parents m'ont offert le nouvel iPhone 3G pour mon anniversaire. Lorsqu'ils me l'ont donné, mon père m'a dit, un peu embarassé : "Le vendeur a dit que ça lisait les vidéos, mais j'ai un doute car je me demande bien où on peut mettre le DVD"
onirisme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/11/2007, 08h19   #11
Nouveau Membre du Club
 
Inscription : août 2007
Messages : 416
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 416
Points : 31
Points : 31
Bonjour,

Super merci bcp !!

Bonne journée.
cdevl32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h39.


 
 
 
 
Partenaires

Hébergement Web