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 14/10/2006, 17h58   #1
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Par défaut interprétation de résultats

Bonjour tout le monde !

J'ai mis en place un petit sondage et j'aimerais interprêter les résultats en fonction de l'age ( -18, 18-30a, 30-50a, +50 )

Le code ci dessus est opérationnel (si je puis dire ) mais j'aimerais réduire les lignes pour arriver au même résultat...

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
 
<?php
 
include ("configuration.php");
 
$query = mysql_query("SELECT * FROM $sondage WHERE age <= 18");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>-18</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 18 AND 30");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 30 AND 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age >= 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
?>
Voilà, merci d'avance pour le tit coup de main
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 19h27   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
A priori, tu as une erreur. Tes bornes sont incluses dans deux classes.
Exemple : 30 ans est compté à la fois dans [18-30] et dans [30-50].
Il faudrait que tu fasses par exemple : [18-30[ et [30-50[, soit :

... BETWEEN 18 AND 29
... BETWEEN 30 AND 49

Sinon, pour ta question, tu peux utiliser COUNT et GROUP BY
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2006, 19h46   #3
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Si j'ai bien compris, je peux organiser ma requête de cette façon :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
$query = mysql_query("SELECT count(*) FROM $sondage WHERE age <= 18 AND (age BETWEEN 18 AND 29) AND (age BETWEEN 30 AND 49) AND (age >= 50) GROUP BY age");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>-18</b></a>";
echo '<br>';
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
echo "<a href=\"resultat01.php?age=$row[1]\"><b>30-50</b></a>";
echo '<br>';
echo "<a href=\"resultat01.php?age=$row[1]\"><b>+50</b></a>";
echo '<br>';
Mais de cette façon comment distinguer les liens ci-dessus où -18a,18-30a,30-50a,+50a) renvoient à la même adresse resultat01.php?age=$row[1]

Merci d'avance
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 00h37   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Tu cherches en gros à faire une pagination en focntion de l'age (question un peu lourde mais c'est pour bien comprendre la demande )
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 00h45   #5
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
En fait j'aimerais interpréter les résultats d'un questionnaire en fonction de l'âge dont voici ma requête principale si je puis dire.

Code :
1
2
3
$result = mysql_query("SELECT * FROM $sondage WHERE age='$age'");
    $num_rows = mysql_num_rows($result);
Pour ce faire, j'utilise ce code pour remplacer $age

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
 
<?php
 
include ("configuration.php");
 
$query = mysql_query("SELECT * FROM $sondage WHERE age <= 18");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>-18</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 18 AND 30");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 30 AND 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age >= 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
?>
où $row[1] est égal à ma colonne âge

Ce code marche mais me paraît assez lourd et je pense que je peux le réduire et le simplifier ?

Voilà
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 00h49   #6
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
D'où ma question : Réduire comment ? Pagination en fonction de l'age ?
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 01h04   #7
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Juste simplifier (si possible) le code en conservant le même résultat.

Voici le LIEN sans mise en page pour l'instant qui est, je l'accorde assez illisible...
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 01h13   #8
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Désolé de te contredire mais ton code ne marche pas du tout

Tu souhaites obtenir un intervalle de date or avec ton code tu lui donnes un age précis et tu fais ta requete. DOnc par exemple pour les -18 tu fais ta sélection et tu récupere le premier élément de la première ce qui peut etre 17 comme 10 et après tu ne fais plus de between pour obtenir tous les éléments appartenant à la zone -18.
Donc ça correpond pas à ce que j'ai compris (Qui est un affichage à partir d'une zone précise de tes enregistrements, me trompe-je ?)
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 01h29   #9
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Je saisi pas tout désolé ... Pour reprendre, je récupère via un questionnaire différents éléments dont l'âge du sondé.

Lors de l'interprétation des résultats je divise le questionnaire en 4 catégories et par age : -18a, 18-30a, 30-50a et +50a (cf LIEN

Pour cela voilà ma requête :

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
 
 
include ("configuration.php");
 
$query = mysql_query("SELECT * FROM $sondage WHERE age <= 18");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>-18</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 18 AND 30");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 30 AND 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age >= 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
et voici l'autre partie du code pour interprêter les résultats en fonction de l'âge :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$result=mysql_query("SELECT sondage.promo01, count( * ) AS nombre FROM sondage WHERE age='$age' GROUP BY sondage.promo01 ORDER BY nombre desc LIMIT 0 , 3") or die ('Erreur : '.mysql_error() );
	$row = mysql_query($result);
    $nombre = $row['nombre'];
	
while($row = mysql_fetch_assoc($result)) {

echo $row['promo01'];
echo '<br>';
echo '<b>Réponse(s): </b>';
echo $row['nombre'];
echo '<br>';
echo $partdec;
echo '<br>';

}
?>
En tout cas merci de prendre le temps d'essayer de comprendre même si cela nous semble difficile là
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 01h38   #10
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Voilà ton gros problème déjà : La récupération des ages. Regardes toi meme sur ta page et tu verras que tu fais une requete que sur un age précis. Or c'est pas ce que tu souhaites.

DOnc je te conseillerai de virer toute cette partie :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$query = mysql_query("SELECT * FROM $sondage WHERE age <= 18");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>-18</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 18 AND 30");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age BETWEEN 30 AND 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
 
$query = mysql_query("SELECT * FROM $sondage WHERE age >= 50");
$row = mysql_fetch_row($query);
 
echo "<a href=\"resultat01.php?age=$row[1]\"><b>18-30</b></a>";
echo '<br>';
Et de la remplacer par celle-ci :
Code :
1
2
3
4
5
6
7
8
9
10
11
echo '<a href="resultat01.php?age=0-18"><b>-18</b></a>';
echo '<br>';
 
echo '<a href="resultat01.php?age=18-30"><b>18-30</b></a>';
echo '<br>';
 
echo '<a href="resultat01.php?age=30-50"><b>30-50</b></a>";
echo '<br>';
 
echo '<a href="resultat01.php?age=50-150"><b>18-30</b></a>';
echo '<br>';
Ensuite pour ce qui est de ceci :
Code :
$result=mysql_query("SELECT sondage.promo01, count( * ) AS nombre FROM sondage WHERE age='$age' GROUP BY sondage.promo01 ORDER BY nombre desc LIMIT 0 , 3") or die ('Erreur : '.mysql_error() );
Le remplacer par ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12

if(isset($_GET['age']) && !empty($_GET['age']))
{
   $age = $_GET['age'];
  $between = str_replace('-', ' and ', $age);
}
else
{
  $between = '0 and 18';
}
$result=mysql_query("SELECT sondage.promo01, count( * ) AS nombre FROM sondage WHERE age BETWEEN ".$between." GROUP BY sondage.promo01 ORDER BY nombre desc LIMIT 0 , 3") or die ('Erreur : '.mysql_error() );
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 01h46   #11
Nouveau Membre du Club
 
Avatar de Angelik
 
Inscription : août 2006
Messages : 217
Détails du profil
Informations personnelles :
Âge : 29

Informations forums :
Inscription : août 2006
Messages : 217
Points : 31
Points : 31
Merci Je vais tester tout ça de suite...

Tu donnes des cours particuliers ? Parce que ça pourrait m'aider.

Pourtant depuis qq mois j'ai l'impression d'avoir progressé mais ce soir j'ai pas été forte j'avoue...
Angelik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/10/2006, 01h47   #12
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Non pas du tout. Et si je le voulais j'ai vraiment pas le temps.

Déjà testes ceci et on verra après
Kerod 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 17h22.


 
 
 
 
Partenaires

Hébergement Web