Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
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 29/10/2011, 16h53   #1
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 5
Points : 1
Points : 1
Par défaut Soucis d'affichage de données

Bonjour a tous,

Alors voila je suis un débutant en php/mysql et j'ai une léger soucis que je n'arrive pas a régler.

Voici mon code qui consiste à récupérer des données dans une BDD et de les afficher dans un tableau :

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
<body>
	<?php
	// Connexion au serveur
	mysql_connect("localhost", "root","*******") or die("erreur de connexion au serveur");
	mysql_select_db("DMTD05") or die("erreur de connexion a la base de donnees");
 
	// Creation et envoi de la requete
	$sql = "SELECT * FROM animaux GROUP BY Nom";
 
	$requete = mysql_query($sql);
 
	// Recuperation des resultats
	echo( "<form><table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" align=\"center\">\n" );
	echo( "<tr>
	<th><div align=\"center\">Nom</div></th>
	<th><div align=\"center\">Espece</div></th>
	<th><div align=\"center\">Cri</div></th>
	<th><div align=\"center\">Proprietaire</div></th>
	<th><div align=\"center\">Age</div></th>
	<th><div align=\"center\">Choix</div></th>
	</tr>" );
 
 
	//mise en place d'un compteur
	$compteur = 1;
 
	// extraction des résultats
	while($result = mysql_fetch_array($requete) or die(mysql_error())){
		echo ( "<tr>\n" );
		echo( "<td><div align=\"center\">".$result["Nom"]."</div></td>\n" );
		echo( "<td><div align=\"center\">".$result["Espece"]."</div></td>\n" );
		echo( "<td><div align=\"center\">".$result["Cri"]."</div></td>\n" );
		echo( "<td><div align=\"center\">".$result["Proprietaire"]."</div></td>\n" );
		echo( "<td><div align=\"center\">".$result["Age"]."</div></td>\n" );
			if ($compteur == 1) {
				echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
				$compteur++;
				}
			else 
			echo( "<td><input type=\"checkbox\"></td></tr>\n" );
	}
 
	echo ( "<tr>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "</tr></table></form>\n" );
	?>
 
	</body>
</html>
Mais je voudrais par exemple rajouter une ligne et là le DRAME, impossible de l'afficher, pourtant j'ai mis mon code (affichage de la dernière ligne) après la boucle while mais sans succès. Si vous avez une réponse/explication, je serai ravie de l'entendre.

Merci d'avance !
Deos21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2011, 17h50   #2
Membre du Club
 
Inscription : octobre 2011
Messages : 50
Détails du profil
Informations forums :
Inscription : octobre 2011
Messages : 50
Points : 57
Points : 57
Par défaut CSS et pas HTML

Ca fait mal aux yeux le Html dans une boucle en plus !
Dans un soucis d'esthétique et ce pour ne pas que tu t'embrouille, utilse xhtml et css.


Tu veux ajouter une ligne ou ? Dans le formulaire
C'est quoi cette ligne ?
KstorTroy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/10/2011, 23h30   #3
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 5
Points : 1
Points : 1
Alors je voudrai ajouter une dernière ligne a la fin de mon tableau, c'est à dire ça :
Code :
1
2
3
4
5
6
7
8
echo ( "<tr>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "<td><input type=\"button\" value=\"Supprimer\"></td>\n" );
	echo( "</tr></table></form>\n" );
	?>
Qui devrai ajouter à chaques cellules un bouton supr, mais malheureusement apres la boucle while je n'arrive à rien n'afficher


Dans tout les cas avec du xhtml et du css, la syntaxe pour créer un tableau reste la même non ?

Merci en tout cas
Deos21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/10/2011, 17h43   #4
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Bonjour,

1/ tant qu'à débuter, autant prendre de bonnes habitudes :
-> Affichage de données dans un tableau HTML (avec Base de Données)
-> Les tableaux (XHTML & CSS)

2/ "sors" le code HTML du code PHP

3/ Quant à la conception du(des) formulaire(s), tu t'y prends mal.
Si tu veux pouvoir supprimer 1 ligne à la fois :
Il faut 1 formulaire par ligne + un champ (hidden) contenant l'id de l'enregistrement). Sinon, le programme ne saura pas quelle ligne supprimer.

Voici une façon de s'y prendre, si on veut pouvoir supprimer plusieurs lignes en même temps (avec un seul formulaire) :
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
<body>
<?php
	// Connexion au serveur
	mysql_connect("localhost", "root","*******") or die("erreur de connexion au serveur");
	mysql_select_db("DMTD05") or die("erreur de connexion a la base de donnees");
 
	// Creation et envoi de la requete
	$sql = "SELECT * FROM animaux GROUP BY Nom";
	$requete = mysql_query($sql);
?>
<form method="post" action="#">
	<table>
	<thead>
		<tr>
			<th>Nom</th>
			<th>Espece</th>
			<th>Cri</th>
			<th>Proprietaire</th>
			<th>Age</th>
			<th>Suppr.</th>
		</tr>
	</thead>
	<tbody>
<?php
	// extraction des résultats
	while($result = mysql_fetch_array($requete) or die(mysql_error()))
	{
?>
		<tr>
			<td><?php echo $result["Nom"]; ?></td>
			<td><?php echo $result["Espece"]; ?></td>
			<td><?php echo $result["Cri"]; ?></td>
			<td><?php echo $result["Proprietaire"]; ?></td>
			<td><?php echo $result["Age"]; ?></td>
			<!-- checkbox, avec pour value l'id de la ligne à supprimer -->
			<td><input type="checkbox" value="<?php echo $result["Id"]; ?>" /></td>
		</tr>
<?php 	} // fin while ?>
		<tr>
			<td colspan="6"><input type="submit" value="Valider" /></td>
		</tr>
 
	</tbody>
	</table>
</form>
 
</body>
</html>
=> on récupère les valeurs des checkbox cochée, et on supprime les lignes correspondantes.
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 00h11   #5
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 5
Points : 1
Points : 1
Merci de ta réponse

J'ai une autre question au sujet de la suppression d'une ou plusieurs lignes via des checkboxes :

voici mon code
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
<?php
	$compteur = 1;
	// extraction des résultats
	while($result = mysql_fetch_array($requete) or die(mysql_error()))
	{
 
 
?>
		<tr>
 
		<td><?php echo $result["Nom"]; ?></td>
 
			<TD><INPUT type="checkbox" name="supprimer[]" value="<?php $result["id"] ?>"></TD>
 
		</tr>
 
 
<?php 	} // fin while
 
// on teste si y a des checks de cochées
if ((isset($_POST["supprimer"])) AND count($_POST["supprimer"]) != 0)
{
$ids = implode(",",$_POST["supprimer"]);
$supprimer="DELETE  FROM `Nom` WHERE id IN ($ids)";
mysql_query($supprimer);
}
 
  ?>
Quand je clique sur supprimer rien ne s'effectue :/ Pourtant j'ai l'air d'avoir bien saisie le sens de tout ce code...

Merci à vous
Deos21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 08h35   #6
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Ton bout de code n'est pas suffisant pour comprendre ou corriger.
Il faut au moins savoir comment est structuré le formulaire (où sont les balises <form> ?...)

Cela dit, tu peux déjà vérifier le contenu de $_POST["supprimer"] :
Code :
1
2
3
<pre>
<?php print_r($_POST["supprimer"]); ?>
</pre>
PS : même si chronologiquement le traitement se fait "après" le formulaire,
dans le fichier, il faut mettre le script AVANT le form (pour en voir le résultat après ré-affichage du formulaire).
Je pense d'ailleurs que c'est LA solution à ton problème.

[Edit] Tiens ! je viens de voir que j'avais oublié l'attribut name dans mon précédent code !
Code :
			<td><input type="checkbox" name="supprimer[]" value="<?php echo $result["Id"]; ?>" /></td>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 15h08   #7
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par Deos21 Voir le message
Quand je clique sur supprimer rien ne s'effectue
C'est à dire ?

Car je ne vois pas de problème.
$ids récupère bien les id transmis (checkbox cochées)

A part ma remarque précédente :
Si tu fais le traitement APRES la requête, c'est normal que la modification ne s'affiche pas !
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
// 1/ TRAITEMENT si "supprimer"
// on teste si y a des checks de cochées
if (isset($_POST["boutonSupprimer"]) && isset($_POST["supprimer"]) && (count($_POST["supprimer"]) != 0))
{
	// on créé une liste des id ce qui va consommer moins que ta boucle je pense
	$ids = implode(",",$_POST["supprimer"]);
	$supprimer="DELETE  FROM `Nom` WHERE id IN ($ids)";
	mysql_query($supprimer);
}
// 2/ AFFICHAGE / ré-affichage
// Creation et envoi de la requete
$sql = "SELECT * FROM animaux GROUP BY Nom";
$requete = mysql_query($sql);
?>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 15h29   #8
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 5
Points : 1
Points : 1
Le soucis c'est quand je coche des checkboxes et que je clique sur supprimer, il n'y a rien qui se passe.

J'ai fais comme tu m'a dis, j'ai mis le script tout au début mais rien ne se passe.

J'ai pensé au debut que c'était à cause des deux boutons "submit" vu que le bouton ajouter renvoi sur un autre script.
Mais vu que dans le code que tu me présente, il verifie bien si c'est le bon bouton c'est ça ?
Deos21 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 16h27   #9
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 994
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 994
Points : 5 787
Points : 5 787
Envoyer un message via Skype™ à jreaux62
Comment veux-tu qu'on te donne une réponse correcte si tu caches des informations ?
Il est là le problème : UN formulaire ne peut avoir qu'UNE SEULE ACTION

Si les 2 boutons "supprimer" et "ajouter" sont dans UN SEUL et MEME formulaire, l'action sera la même (ici => ajout.php)
=> il te faut donc 2 FORMULAIRES.

Voici une façon de s'y prendre :
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
73
74
75
76
77
78
79
80
81
82
83
<?php
// ---------------------------
// AJOUTER : traitement
if (isset($_POST["boutonAJOUTER"]))
{
	include('./ajout.php'); // fichier de traitement "ajouter"
}
// ---------------------------
// SUPPRIMER : traitement
elseif (isset($_POST["boutonSUPPRIMER"]) && isset($_POST["supprimer"]) && (count($_POST["supprimer"]) != 0))
{
	// on créé une liste des id ce qui va consommer moins que ta boucle je pense
	$ids = implode(",",$_POST["supprimer"]);
	$supprimer = "DELETE  FROM `Nom` WHERE id IN ($ids);";
	mysql_query($supprimer);
}
// ---------------------------
// AFFICHAGE / ré-affichage
// 	requete
	$sql = "SELECT * FROM animaux GROUP BY Nom;";
	$requete = mysql_query($sql);
// ---------------------------
?>
<!DOCTYPE HTML>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>[...]</title>
 
</head>
<body>
 
	<table border="1" align="center">
	<thead>
	<!-- formulaire "AJOUTER" -->
	<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>" >
		<tr>
			<th>Nom</th>
			<th>Espece</th>
			<th>Cri</th>
			<th>Proprietaire</th>
			<th>Age</th>
			<th>&nbsp;</th>
		</tr>
		<tr>
			<td><input type="text" name="nom" value="" /></td>
			<td><input type="text" name="espece" value="" /></td>
			<td><input type="text" name="cri" value="" /></td>
			<td><input type="text" name="proprietaire" value="" /></td>
			<td><input type="text" name="age" value="" size="3" /></td>
			<td><input type="submit" name="boutonAJOUTER" value="Ajouter" /></td>
		</tr>
	</form>
	</thead>
 
	<tbody>
	<!-- formulaire "SUPPRIMER (checkbox)" -->
	<form method="post" action="<?php $_SERVER['PHP_SELF']; ?>" >
<?php
	// extraction des résultats
	while($result = mysql_fetch_array($requete) or die(mysql_error()))
	{
?>
		<tr>
			<td><?php echo $result["Nom"]; ?></td>
			<td><?php echo $result["Espece"]; ?></td>
			<td><?php echo $result["Cri"]; ?></td>
			<td><?php echo $result["Proprietaire"]; ?></td>
			<td><?php echo $result["Age"]; ?></td>
			<!-- checkbox, avec pour value l'id de la ligne à supprimer -->
			<td><input type="checkbox" name="supprimer[]" value="<?php echo $result["id"]; ?>" /></td>
		</tr>
<?php 	} // fin while ?>
 		<tr>
			<td colspan="5" style="text-align:right;">cases cochées :</td>
			<td><input type="submit" name="boutonSUPPRIMER" value="Suppr" /></td>
		</tr>
	</form>
	</tbody>
	</table>
 
</body>
</html>
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 18h44   #10
Invité de passage
 
Homme
Inscription : octobre 2011
Messages : 5
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : octobre 2011
Messages : 5
Points : 1
Points : 1
Merci de la réponse si hâtive ! Mais le soucis reste le même, j'ai dejà testé le double formulaire et je viens de retesté le code que tu me proposes et toujours rien... Quand je clique sur supprimer, il n'effectue aucune instruction rien..



Vraiment je vois pas ou est le soucis
Deos21 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 09h53.


 
 
 
 
Partenaires

Hébergement Web