L'exploitation de donnée

Eléphant du PHP | 174 Messages

23 juil. 2005, 18:30

tu as déjà testé celui-là sinon ?
oui

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 juil. 2005, 18:37

je suis étonné qu'il marche :lol:

regarde l'exemple que je t'ai donné qui est plus en adéquation avec ce que tu souhaites faire je pense ;)

Eléphant du PHP | 174 Messages

23 juil. 2005, 18:40

celui de la FAQ ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 juil. 2005, 18:41

non j'ai édité mon post de la page précédente

Eléphant du PHP | 174 Messages

23 juil. 2005, 18:47

j'ai réédité le post regarde le résultat que je recherche .
Nom : IARU HF World Championship

Période :
Mois : Juillet
Détails : 2 nd week-end entier, du samedi à 12:00 UTC
au dimanche à 12:00 UTC.

Bande : 160, 80, 40, 20, 15, 10 mètres

Mode : Phonie et Télégraphie

Report :
Société membre IARU
RST + abréviation de la société (ex : 599REF)
Radio Amateur
RST + Zone ITU (ex : 59927)

Lien : http://www.arrl.org/contests/rules/2005/iaru.html

Infos : Aucune
Modifié en dernier par elminio le 23 juil. 2005, 18:56, modifié 2 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 juil. 2005, 18:50

ok ça fonctionne mais ça ne ressemble que moyennement au résultat souhaité non ?

Eléphant du PHP | 174 Messages

23 juil. 2005, 19:04

voir post plus haut pour ça m'affiche pas qu'un seule formulaire ?

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 juil. 2005, 19:36

bon je t'a fait le code parceque sinon pas à pas on avance pas, j'espère qu'il marche

je l'ai commenté, demande si tu ne comprends pas des choses
<?php
// les AS servent à donner des noms plus facilement utilisables avec mysql_fetch_array
$sql = 'SELECT C.id_concours AS id_concours, C.nom AS nom, C.mois AS mois,
C. dmois AS dmois, B.bande AS bande, M.mode AS mode, C.report AS report, C.lien AS lien, C.info AS info
FROM concours C
INNER JOIN concours_bande CB
ON C.id_concours = CB.id_concours
INNER JOIN bandes B
ON CB.id_bande = B.id_bande
INNER JOIN concours_mode CM
ON C.id_concours = CM.id_concours
INNER JOIN modes M
ON CM.id_mode = M.id_mode
ORDER BY C.id_concours';

// exécution de la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

// tableaux qui va stocker les informations d'un concours
$concours_courant = Array();

// tant qu'il y a des lignes de résultat, on les met dan sle tableau $data
while ($data = mysql_fetch_array($req)) {
    // si l'identifiant du concours de la ligne courant est différent de celui stocké : on a changé de concours
    if ($concours_courant['id_concours'] <>  $data['id_concours']) {
    	// si $concours_courant est vide, c'est que c'est le premier passage dans la boucle donc on n'affiche rien
    	 if (count($concours_courant) > 0) {
			// on affiche toutes les infos du concours précédent
			echo ' <i>Nom : '.$concours_courant['nom'].'</i><br>';
			echo ' <i>Mois : '.$concours_courant['mois'].'</i><br>';
			echo ' <i>Détails : '.$concours_courant['dmois'].'</i><br>';

			echo ' <i>Bande : '.$concours_courant['bandes'].'</i><br>';
			echo ' <i>Mode : '.$concours_courant['modes'].' mètres</i><br>';

			echo ' <i>Report : '.$concours_courant['report'].'</i><br>';
			echo ' <i>lien : <a href="'.$concours_courant['lien'].'">'.$concours_courant['lien'].'</a></i><br>';
			echo ' <i>info : '.$concours_courant['info'].'</i><br>';

			// on supprime ces infos pour stocker les nouvelles
			$concours_courant = Array();
		}
		
        // on stocke l'identifiant du concours de la ligne de résultat comme l'identifiant courant
        $concours_courant['id_concours'] = $data['id_concours'];
        
        // on stocke les autres infos du nouveau concours
        $concours_courant['nom'] = $data['nom'];
        $concours_courant['mois'] = $data['mois'];
        $concours_courant['dmois'] = $data['dmois'];
        $concours_courant['report'] = $data['report'];
        $concours_courant['lien'] = $data['lien'];
        $concours_courant['info'] = $data['info'];
    }
    // ici on va concaténer chaque mode et chaque bande, pour les stocker ensemble, séparés par une virgule
    // pour pouvoir les afficher d'un coup à la fin
    $concours_courant['modes'] .= ', '.$data['mode'];
    $concours_courant['bandes'] .= ', '.$data['bande'];
}
?>
Modifié en dernier par ouckileou le 23 juil. 2005, 20:54, modifié 1 fois.

Eléphant du PHP | 174 Messages

23 juil. 2005, 20:42

$concours_courant['modes'] .= ', '.$data['mode'];
$concours_courant['bandes'] .= ', '.$data['bande'];
Resultat :
Nom :
Mois :
Détails :
Bande :
Mode : mètres
Report :
lien :
info :
Nom : Championnat de france HF Phonie
Mois : Février
Détails : dernier week-end
Bande : , 160m, 80m, 40m, 20m, 15m, 10m
Mode : , phonie, phonie, phonie, phonie, phonie, phonie mètres
Report : RST + N° ex: (59001)
lien : http://www.ref-union.org
info : Aucune
Nom : Championnat de france HF Télégraphie
Mois : Janvier
Détails : Dernier week-end
Bande : , 160m, 80m, 40m, 20m, 15m, 10m
Mode : , télégraphie, télégraphie, télégraphie, télégraphie, télégraphie, télégraphie mètres
Report : RST + N° ex: (599001)
lien : http://www.ref-union.org
info : Aucune
Nom : Concours IOTA
Mois : Juillet
Détails : dernier week-end
Bande : , 80m, 80m, 40m, 40m, 20m, 20m, 15m, 15m, 10m, 10m
Mode : , phonie, télégraphie, phonie, télégraphie, phonie, télégraphie, phonie, télégraphie, phonie, télégraphie mètres
Report : RST + N° ex: (59001)
lien : http://www.rsgb.org
info : Aucune
Nom : Championnat du monde HF IARU
Mois : Juillet
Détails : second week-end
Bande : , 160m
Mode : , mode digitaux mètres
Report : RST + N° ex: (59001)
lien : http://www.iaru.org
info : Aucune
Modifié en dernier par elminio le 23 juil. 2005, 21:19, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

23 juil. 2005, 20:54

j'ai édité le code, dans les deux lignes que tu as citées j'ai remplacé le + par un point

je regarde pour les infos vides du début

Eléphant du PHP | 174 Messages

24 juil. 2005, 10:21

j'ai modifié les deux lignes voir post precedent

ViPHP
pjl
ViPHP | 2119 Messages

24 juil. 2005, 10:45

ce n'est pas normal que l'on trouve plusieurs fois les mêmes valeurs répéttées.
Bande : , 80m, 80m, 40m, 40m, 20m, 20m, 15m, 15m, 10m, 10m
Il y a soit un soucis avec la requête (j'avoue ne pas l'avoir testé vu que je n'ai pas les données), soit un soucis avec les données elle-même.
Il faut vérifier ces 2 point.

Eléphant du PHP | 174 Messages

24 juil. 2005, 11:15

voilà le résultat de la dernière requete avec une petite partie des infos :
http://users.rockweb.org/f4bph/mysql2.JPG

ViPHP
pjl
ViPHP | 2119 Messages

24 juil. 2005, 11:32

Vu comme celà, la requête est bonne.
C'est effectivement normal qu'on trouve les bandes 2 fois puisque l'on 2 modes.

Eléphant du PHP | 174 Messages

24 juil. 2005, 15:57

par contre coment faire pour les faire apparaitre qu'une fois au lieu de x fois.