moi j'aimerais savoir si on peut adapté ton système à celà (désolé je repete souvent le script dans ce post)n'afficher qu'un seul résultat même si tu as plusieurs lignes de résultats, tu peux procéder de la manière suivante: enregistre le retour de la base de données dans un tableau indexé et affiche seulement l'index 0 de ton tableau. Même si la base de renvoie 100 lignes, tu n'en afficheras qu'une seule.
$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']) {
// 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'].'</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 socke l'identifiant du concours 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
$concours_courant['modes'] .= ', '.$data['mode'];
$concours_courant['bandes'] .= ', '.$data['bande'];
<?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>Bandes : ';
// on affiche le contenu du tableau
foreach($concours_courant['bandes'] as $bande) {
echo $bande.', ';
}
echo '</i><br>';
echo ' <i>Modes : ';
// on affiche le contenu du tableau
foreach ($concours_courant['modes'] as $mode) {
echo $mode.', ';
}
echo ' 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 stocker les bandes/modes dans un tableau à deux-dimensions
// si la bande/mode est déjà dans le tableau correspondant, on ne le stocke pas
if (!in_array($date['mode'],$concours_courant['modes'])) {
$concours_courant['modes'][] = $data['mode'];
}
if (!in_array($date['bande'],$concours_courant['bandes'])) {
$concours_courant['bandes'][] = $data['bande'];
}
}
?>
Warning: in_array(): Wrong datatype for second argument in c:\program files\easyphp1-8\www\bconcours\list7.php on line 80
Warning: in_array(): Wrong datatype for second argument in c:\program files\easyphp1-8\www\bconcours\list7.php on line 83
line 80 if (!in_array($date['mode'],$concours_courant['modes'])) {
$concours_courant['modes'][] = $data['mode'];
}
line 83 if (!in_array($date['bande'],$concours_courant['bandes'])) {
$concours_courant['bandes'][] = $data['bande'];
}
les $date = data sa doit etre celà<?php
$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();
$i = 0;
// tant qu'il y a des lignes de résultat, on les met dan sle tableau $data
while ($data = mysql_fetch_array($req))
{
$concours_courant[$i] = array();
// si l'identifiant du concours de la ligne courant est différent de celui stocké : on a changé de concours
if ($concours_courant[$i]['id_concours'] <> $data['id_concours'])
{
// 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'].'</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
$i++;
}
// on stocke l'identifiant du concours comme l'identifiant courant
$concours_courant[$i]['id_concours'] = $data['id_concours'];
// on stocke les autres infos du nouveau concours
$concours_courant[$i]['nom'] = $data['nom'];
$concours_courant[$i]['mois'] = $data['mois'];
$concours_courant[$i]['dmois'] = $data['dmois'];
$concours_courant[$i]['report'] = $data['report'];
$concours_courant[$i]['lien'] = $data['lien'];
$concours_courant[$i]['info'] = $data['info'];
// ici on va concaténer chaque mode et chaque bande, pour les stocker ensemble, séparés par une virgule
$concours_courant['modes'] .= ', '.$data['mode'];
$concours_courant['bandes'] .= ', '.$data['bande'];
$i++;
}
?>
Il me manque les éléments pour les deux dernières lignes du la boucle, mais dans le pincipe, ça te ferais la première dimension pour l'id du concours, comme ça, tu as les résultat d'un même concours dans un index (0, 1, 2 etc..) et dans chacun des tableaux pour les différents résultats.
Nom : Championnat de france HF Phonie
Mois : Février
Détails : dernier week-end
Bandes : 160m, 80m, 40m, 20m, 15m, 10m,
Modes : 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
Bandes : 160m, 80m, 40m, 20m, 15m, 10m,
Modes : 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
Bandes : 80m, 40m, 20m, 15m, 10m,
Modes : 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
Bandes : 160m,
Modes : mode digitaux, mètres
Report : RST + N° ex: (59001)
lien : http://www.iaru.org
info : Aucune
$mode = '180m,';
$mode = substr($mode,0,-1); // c'est la que ça se passe
echo $mode; // ça affiche 180m
ok salut fab le script fonctionne par contre je l'ai intégré au script php precedent :