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 20/07/2011, 11h36   #1
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Par défaut Mysql afficher une fois un type

Bonjour,

ma base de données SQL de liens est ainsi construite :
type_lien lien nom_lien emetteur
Cinémas http://cinemaici.fr ici user12
Cinémas http://cinemalabas.fr labas user14
...

je souhaite n'afficher qu'une seule fois le type de lien et les tous les liens à la suite de cette façon :

Type de lien : Cinémas

Liens :
ici
labas
...

merci de votre aide.

mon code pour afficher (mais qui affiche à chaque ligne le type de lien...) :
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
<?php session_start();
?>
<!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" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
<div id="maincontent">
<br />
<br />
<?php
// ************************************************
//           pour Affichage des liens
// ************************************************
echo '<h3>'.'<strong>'.'Liens '.'</strong>'.'</h3>';
echo '<br />';
// connexion à la base
require("configuration.php");
$sql = connect_sql();
// on écrit la requête
mysql_query("SET NAMES utf8");
$select = "SELECT * FROM liens ORDER BY type_lien ASC";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
//On vérifie que la table contient quelque chose
if
(mysql_num_rows($result) == 0)
{
echo '<p>'.'<b>'.'Aucun lien ! '.'</b>'.'</p>'.'<br>'.'</br>';
echo '<a href="#haut">'.'Haut de page'.'</a>';
}
//Si il y a des entrées	  
else
{
//On fait une boucle pour sortir toutes les entrées
while($affiche = mysql_fetch_array($result))
{
//On affiche les liens
echo '<br />';
echo '<span style="color:#8E236B;">';
echo '<strong>';
echo '<b>'.$affiche["type_lien"]."   ".'</b>';
echo '</strong>';
echo '</span>';
echo '<br />';
echo '<strong>';
echo '<a href="'.$affiche["lien"].'">'.$affiche["nom_lien"].'</a>';
echo '<br />';
echo " mis en ligne par  ".$affiche["emetteur"]."   ";
echo '</strong>';
echo '<br />';
}	//On ferme la boucle while
}	//on ferme le else
// Fermeture de la connexion à la base de données
mysql_close();		
?>
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 11h54   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
ton code fait ce que tu lui demandes.
retire l'affichage de "type de lien" de la boucle et il ne se répètera plus...
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 12h02   #3
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
merci gene69 mais il ne va plus s'afficher du tout...

alors que je souhaite qu'il s'affiche une seule fois...
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 15h11   #4
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 27
Points : 27
Peut être que tu peux faire un premier affichage en dehors de la boucle, puis ton affichage sans les liens dans ta boucle.

Ton lien ne s'affichera qu'une seule fois.
West-tck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 16h11   #5
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
le souci est que si je le sors de la boucle, il ne m'affiche que le premier type de lien et pas les suivants !
Des idées ?
Merci.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
// essai d'affichage du type de lien sans boucle
$affiche2 = mysql_fetch_array($result);
echo '<span style="color:#8E236B;">';
echo '<strong>';
echo '<b>'.$affiche2["type_lien"]."   ".'</b>';
echo '</strong>';
echo '</span>';
//On fait une boucle pour sortir toutes les entrées
while($affiche = mysql_fetch_array($result))
{
//On affiche les liens
echo '<br />';
echo '<br />';
echo '<strong>';
echo '<a href="'.$affiche["lien"].'">'.$affiche["nom_lien"].'</a>';
echo '<br />';
echo " mis en ligne par  ".$affiche["emetteur"]."   ";
echo '</strong>';
echo '<br />';
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 16h33   #6
Nouveau Membre du Club
 
Homme
Étudiant
Inscription : juin 2011
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2011
Messages : 34
Points : 27
Points : 27
Si tu fais une première requête pour récupérer les types de liens, puis une seconde comme tu as fait mais tu ne sélectionne pas tous tes champs (juste nom et emetteur) je pense que tu peux ensuite :

- faire une première boucle sur les types de liens (donc première requête)

- faire une seconde boucle imbriquée dans la première qui affiche tous les résultats (pour un lien donné).

Tu auras le résultat que tu souhaite je pense.
West-tck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 14h18   #7
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Désolé West-tck mais cela ne fonctionne pas, il me met seulement le premier type de lien, puis les liens et ensuite les autres types de liens.....

je ne vois pas comment faire pour avoir ceci :

Cinéma (type de lien)
ici (liens)
labas ....
........

Autres (type de lien)
autre lien (liens)
encore un autre lien ....
....
etc...

Merci.

mon code modifié qui ne fonctionne pas :
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
 
<?php session_start();
?>
<!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" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
<div id="maincontent">
<br />
<?php
// ************************************************
//           pour Affichage des liens
// ************************************************
echo '<h3>'.'Liens '.'</h3>';
echo '<br />';
// connexion à la base
require("configuration.php");
$sql = connect_sql();
// on écrit la requête
mysql_query("SET NAMES utf8");
// pour les types de lien
$select = "SELECT type_lien FROM liens ORDER BY type_lien ASC";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
// pour les liens
$select2 = "SELECT lien, nom_lien, emetteur FROM liens ORDER BY nom_lien ASC";
$result2 = mysql_query($select2) or die ('Erreur : '.mysql_error() );
// boucle pour les types de liens
while($affiche = mysql_fetch_array($result)) {
echo '<span style="color:#8E236B;">';
echo '<strong>';
echo '<b>'.$affiche["type_lien"]."   ".'</b>';
echo '</strong>';
echo '</span>';
// boucle pour les liens
while($affiche2 = mysql_fetch_array($result2))
{
echo '<br />';
echo '<br />';
echo '<strong>';
echo '<a href="'.$affiche2["lien"].'">'.$affiche2["nom_lien"].'</a>';
echo '<br />';
echo " mis en ligne par  ".$affiche2["emetteur"]."   ";
echo '</strong>';
echo '<br />';
}
}
// Fermeture de la connexion à la base de données
mysql_close();		
?>
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/07/2011, 22h16   #8
Membre expérimenté
 
Avatar de papyphp
 
Inscription : avril 2005
Messages : 425
Détails du profil
Informations personnelles :
Âge : 62
Localisation : Belgique

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : avril 2005
Messages : 425
Points : 545
Points : 545
Bonsoir,

Quand j'ai ce genre de problème je fonctionne comme ceci. Ce n'est peut-être pas la meilleure solution, mais ça fonctionne.

Code :
1
2
3
4
5
6
7
8
9
10
 
$res = mysql_query('select * from ma_table order by ma_colonne');
$ma_colonne = '';
while ($ligne = mysql_fetch_assoc($res)){
    if($ligne['ma_colonne'] != $ma_colonne){
        echo 'ma_colonne';
        }
    echo 'mes_autres_colonnes';
    $ma_colonne = $ligne['ma_colonne'];
    }
__________________
Lu kinze d' awousse, la Vierje arandje û dusbrôle lu timp. Et ce coup ci, elle ne nous a pas ratés
papyphp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/07/2011, 14h40   #9
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
@ papyphp :

j'ai essayé ceci :
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
<?php session_start();
// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')
{	// bandeau classique si pas connecté
	$bandeau = 'bandeau.php';	}
else
{	// bandeau membre si connecté
	$bandeau = 'bandeau_membres.php';	}
?>
<!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" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="maincontent">
<br />
<?php
// ************************************************
//           pour Affichage des liens
// ************************************************
echo '<h3>'.'Liens '.'</h3>';
echo '<br />';
// connexion à la base
require("configuration.php");
$sql = connect_sql();
// on écrit la requête
mysql_query("SET NAMES utf8");
$res = mysql_query('select * from liens order by type_lien');
$type_lien = '';
while ($ligne = mysql_fetch_assoc($res)){
    if($ligne['type_lien'] != $type_lien){
        echo 'type_lien';
        }
    echo 'mes_autres_colonnes';
    $type_lien = $ligne['nom_lien'];
    }
// Fermeture de la connexion à la base de données
mysql_close();		
?>
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
MAIS voici ce que ça m'affiche :
Code :
1
2
3
Liens
 
type_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lienmes_autres_colonnestype_lien.....
des idées ?
merci.
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/07/2011, 09h40   #10
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
j'ai ajouté une table pour les types de liens et modifié le 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
echo '<br />';
echo '<h3>'.'Liens '.'</h3>';
echo '<br />';
// connexion à la base
require("configuration.php");
$sql = connect_sql();
// on écrit la requête
mysql_query("SET NAMES utf8");
// pour les types de lien
$select = "SELECT type_de_lien FROM type_lien ORDER BY type_de_lien ASC";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
//pour les liens
$select2 = "SELECT type_lien, lien, nom_lien, emetteur FROM liens ORDER BY type_lien ASC";
$result2 = mysql_query($select2) or die ('Erreur : '.mysql_error() );
 
// boucle pour les types de liens
while($affiche = mysql_fetch_array($result)) 
{
 
// boucle pour les liens
while($affiche2 = mysql_fetch_array($result2))
{
	if($affiche2['type_lien'] != $affiche["type_de_lien"]) { // si le type de lien est égal à celui de la base des liens
	echo '<b>'.$affiche_seul_lien.'</b>';
	echo '<span style="color:#8E236B;">';
	echo '<strong>';
	echo '<b>'.$affiche2["type_lien"]."   ".'</b>';
	echo '</strong>';
	echo '</span>';
	echo '<br />';
	echo '<strong>';
	echo '<a href="'.$affiche2["lien"].'">'.$affiche2["nom_lien"].'</a>';
	echo '</strong>';
	echo '<br />';
	echo '<span style="color:##FF1493;">';
	echo '<h4>'.'<i>'." mis en ligne par  ".$affiche2["emetteur"]."   ".'<i/>'.'</h4>';
	echo '</span>';
	echo '<br />';
}
} // fin du while pour les liens
} // fin du while pour les types de liens
 
// Fermeture de la connexion à la base de données
mysql_close();		
?>

mais voici ce que ça donne :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
Type de lien A
Lien essai 1A
 
Type de lien B
Lien essai 1B
 
Type de lien C
Lien essai 1C
 
etc...
et voici ce que je voudrai en fait :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
Type de lien A
Lien essai 1A
 
Type de lien A
Lien essai 2A
 
Type de lien A
Lien essai 3A
 
Type de lien B
Lien essai 1B
 
Type de lien B
Lien essai 2B
 
etc...
Merci.
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 21h53   #11
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
je me suis trompé, c'est ça que je souhaite :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
Type de lien A
Lien essai 1A
Lien essai 2A
Lien essai 3A
etc...
 
Type de lien B
Lien essai 1B
Lien essai 2B
Lien essai 3B 
etc...
désolé
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 22h26   #12
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
avec PDO ça se fait facilement.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 23h47   #13
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
Il faut simplement que tu stokes le type du précédent enregistrement. Si le type de l'enregistrement actuel est égal au précédent, tu l'affiches pas.

Ca donnerait :

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
<?php session_start();
?>
<!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" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<title>MON SITE</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<?php include('bandeau.php'); ?> <!-- insère le bandeau principal en haut -->
<div id="maincontent">
<br />
<br />
<?php
// ************************************************
//           pour Affichage des liens
// ************************************************
echo '<h3>'.'<strong>'.'Liens '.'</strong>'.'</h3>';
echo '<br />';
// connexion à la base
require("configuration.php");
$sql = connect_sql();
// on écrit la requête
mysql_query("SET NAMES utf8");
$select = "SELECT * FROM liens ORDER BY type_lien ASC";
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
//On vérifie que la table contient quelque chose
if (mysql_num_rows($result) == 0)
{
   echo '<p>'.'<b>'.'Aucun lien ! '.'</b>'.'</p>'.'<br>'.'</br>';
   echo '<a href="#haut">'.'Haut de page'.'</a>';
}
//Si il y a des entrées	  
else
{
   //On initialise le lien précédent à ''
   $PrecedentLien="";
   //On fait une boucle pour sortir toutes les entrées
   while($affiche = mysql_fetch_array($result))
   {
      //On affiche les liens
      echo '<br />';
      if ($affiche["type_lien"] <> $PrecedentLien)
      {
         echo '<span style="color:#8E236B;">';
         echo '<strong>';
         echo '<b>'.$affiche["type_lien"]."   ".'</b>';
         echo '</strong>';
         echo '</span>';
      }
      $PrecedentLien=$affiche["type_lien"];
      echo '<br />';
      echo '<strong>';
      echo '<a href="'.$affiche["lien"].'">'.$affiche["nom_lien"].'</a>';
      echo '<br />';
      echo " mis en ligne par  ".$affiche["emetteur"]."   ";
      echo '</strong>';
      echo '<br />';
      }	//On ferme la boucle while
   }	//on ferme le else
// Fermeture de la connexion à la base de données
mysql_close();		
?>
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
Oublie pas d'indenter c'est plus lisible.
Marc3001 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 11h07   #14
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
@ Marc3001 :

Excellent : c'est exactement ça !

Encore merci,

PS : indenter, c'est mettre en forme le code, c'est ça ?
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/07/2011, 15h41   #15
Membre chevronné
 
Avatar de Marc3001
 
Homme
Ingénieur développement logiciels
Inscription : février 2008
Messages : 430
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : février 2008
Messages : 430
Points : 682
Points : 682
indenter : http://fr.wikipedia.org/wiki/Indentation

Marc3001 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 04h39.


 
 
 
 
Partenaires

Hébergement Web