[mysql] probleme d'affichage de variable
bilane
Messages postés
13
Date d'inscription
Statut
Membre
Dernière intervention
-
bilane Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
bilane Messages postés 13 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
Je voudrais afficher la liste des textes classée par année. Mais le problème, il m’affiche pour chaque texte l’année comme ceci :
ANNEE 2006
- 2006-01-13 : texte n° 003
ANNEE 2006
- 2006-01-11 : texte n° 002
ANNEE 2006
- 2006-01-10 : texte n° 001
ANNEE 2004
- 2004-01-15 : texte n° 0025
Je voudrais comme ceci :
ANNEE 2006
- 2006-01-13 : texte n° 003
- 2006-01-11 : texte n° 002
- 2006-01-10 : texte n° 001
ANNEE 2004
- 2004-01-15 : texte n° 0025
Code :
<?php
// on se connecte à MySQL
require('connect.php.inc');
$db=connect();
$req = mysql_query('SELECT DISTINCT nature_texte FROM texte');
echo "<h4><center><b><u>Recherche par nature du texte</u></b></center></h4>";
echo "<form method='POST'>";
echo '<table>';
echo '<tr>';
echo '<td> Choississez la nature du texte : ';
echo "<select name='nature'>";
while($data = mysql_fetch_assoc($req))
{
$nature=$data['nature_texte'];
if($nature == $_POST['nature']) {
echo "<option value=\"$nature\" selected >$nature</option>";
} else {
echo "<option value=\"$nature\">$nature</option>";
}
}
echo "</select>";
echo '</td>';
echo '<td>';
echo "<input type='submit' value='Valider' name='B1' style='border-style: solid; border-width: 1; padding: 1'> ";
echo '</td>';
echo '</tr>';
echo '</table>';
echo "</form>";
if (isset($_POST['nature'])){
$nature=$_POST['nature'];
//echo "<h1><b>$nature</b></h1>";
$sql = "SELECT texte.id_jo, id_texte, num_texte, date_texte, nature_texte, commentaire_texte FROM texte where nature_texte='$nature' ORDER BY date_texte DESC, num_texte DESC ";
$req1 = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$annee="";
while($data1 = mysql_fetch_assoc($req1))
{
$id_texte=$data1['id_texte'];
$num=$data1['num_texte'];
$jo=$data1['id_jo'];
$date=$data1['date_texte'];
list($year, $month, $day) = explode("-", $date);
$months = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
$mois = $months[$month-1];
echo "<font size=3px><b><center>ANNEE " .$year." </center></b></font><br><br>";
echo '- <a jo/'.$jo.'/'.$num.'.php>'.$data1['date_texte'].' : '.$data1['nature_texte'].' n° '.$data1['num_texte'].' </a></br>';
}
}
mysql_close();
?>
Merci d’avance.
Je voudrais afficher la liste des textes classée par année. Mais le problème, il m’affiche pour chaque texte l’année comme ceci :
ANNEE 2006
- 2006-01-13 : texte n° 003
ANNEE 2006
- 2006-01-11 : texte n° 002
ANNEE 2006
- 2006-01-10 : texte n° 001
ANNEE 2004
- 2004-01-15 : texte n° 0025
Je voudrais comme ceci :
ANNEE 2006
- 2006-01-13 : texte n° 003
- 2006-01-11 : texte n° 002
- 2006-01-10 : texte n° 001
ANNEE 2004
- 2004-01-15 : texte n° 0025
Code :
<?php
// on se connecte à MySQL
require('connect.php.inc');
$db=connect();
$req = mysql_query('SELECT DISTINCT nature_texte FROM texte');
echo "<h4><center><b><u>Recherche par nature du texte</u></b></center></h4>";
echo "<form method='POST'>";
echo '<table>';
echo '<tr>';
echo '<td> Choississez la nature du texte : ';
echo "<select name='nature'>";
while($data = mysql_fetch_assoc($req))
{
$nature=$data['nature_texte'];
if($nature == $_POST['nature']) {
echo "<option value=\"$nature\" selected >$nature</option>";
} else {
echo "<option value=\"$nature\">$nature</option>";
}
}
echo "</select>";
echo '</td>';
echo '<td>';
echo "<input type='submit' value='Valider' name='B1' style='border-style: solid; border-width: 1; padding: 1'> ";
echo '</td>';
echo '</tr>';
echo '</table>';
echo "</form>";
if (isset($_POST['nature'])){
$nature=$_POST['nature'];
//echo "<h1><b>$nature</b></h1>";
$sql = "SELECT texte.id_jo, id_texte, num_texte, date_texte, nature_texte, commentaire_texte FROM texte where nature_texte='$nature' ORDER BY date_texte DESC, num_texte DESC ";
$req1 = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$annee="";
while($data1 = mysql_fetch_assoc($req1))
{
$id_texte=$data1['id_texte'];
$num=$data1['num_texte'];
$jo=$data1['id_jo'];
$date=$data1['date_texte'];
list($year, $month, $day) = explode("-", $date);
$months = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin",
"Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre");
$mois = $months[$month-1];
echo "<font size=3px><b><center>ANNEE " .$year." </center></b></font><br><br>";
echo '- <a jo/'.$jo.'/'.$num.'.php>'.$data1['date_texte'].' : '.$data1['nature_texte'].' n° '.$data1['num_texte'].' </a></br>';
}
}
mysql_close();
?>
Merci d’avance.
A voir également:
- [mysql] probleme d'affichage de variable
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Mysql community server - Télécharger - Bases de données
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
4 réponses
Bonjour,
Moi je ferais d'abord une requete pour obtenir toutes les années différentes. Ensiute pour chaque année, je récupérerais les textes correspondants et je les afficherais. Le code deviendrait ca mais c'est à tester (l'idée fonctionne mais le code devrait fonctionner):
Moi je ferais d'abord une requete pour obtenir toutes les années différentes. Ensiute pour chaque année, je récupérerais les textes correspondants et je les afficherais. Le code deviendrait ca mais c'est à tester (l'idée fonctionne mais le code devrait fonctionner):
<?php // on se connecte à MySQL require('connect.php.inc'); $db=connect(); $req = mysql_query('SELECT DISTINCT nature_texte FROM texte'); echo "<h4><center><b><u>Recherche par nature du texte</u></b></center></h4>"; echo "<form method='POST'>"; echo '<table>'; echo '<tr>'; echo '<td> Choississez la nature du texte : '; echo "<select name='nature'>"; while($data = mysql_fetch_assoc($req)) { $nature=$data['nature_texte']; if($nature == $_POST['nature']) { echo "<option value=\"$nature\" selected >$nature</option>"; } else { echo "<option value=\"$nature\">$nature</option>"; } } echo "</select>"; echo '</td>'; echo '<td>'; echo "<input type='submit' value='Valider' name='B1' style='border-style: solid; border-width: 1; padding: 1'> "; echo '</td>'; echo '</tr>'; echo '</table>'; echo "</form>"; if (isset($_POST['nature'])){ $nature=$_POST['nature']; //echo "<h1><b>$nature</b></h1>"; $sql1="SELECT date_texte FROM texte where nature_texte='$nature' ORDER BY date_texte DESC" $req1 = mysql_query($sql1) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $listeYear= array(); while($data1 = mysql_fetch_assoc($req1)) { $tmp= explode("-", $data1['date_texte']); if(!in_array($tmp[0],$listeYear)) array_push($listeYear,$tmp[0]); } foreach($listeYear as $year) { $sql = "SELECT texte.id_jo, id_texte, num_texte, date_texte, nature_texte, commentaire_texte FROM texte where nature_texte='$nature' AND date_texte LIKE '$year%' ORDER BY date_texte DESC, num_texte DESC "; $req2 = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); $annee=""; while($data1 = mysql_fetch_assoc($req2)) { $id_texte=$data1['id_texte']; $num=$data1['num_texte']; $jo=$data1['id_jo']; $date=$data1['date_texte']; list($year2, $month, $day) = explode("-", $date); $months = array("Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"); $mois = $months[$month-1]; echo "<font size=3px><b><center>ANNEE " .$year." </center></b></font><br><br>"; echo '- <a jo/'.$jo.'/'.$num.'.php>'.$data1['date_texte'].' : '.$data1['nature_texte'].' n° '.$data1['num_texte'].' </a></br>'; }
merci de votre aide, mais ca marche pas, j'ai toujours le meme probleme.
excuse moi mais je suis debutante, si vous pouvez me proposer une autre solution, ca serait sympa.
merci.
excuse moi mais je suis debutante, si vous pouvez me proposer une autre solution, ca serait sympa.
merci.
Bonjour,
il faut que tu changes de place la ligne qui affiche ANNEE 2000 (l'avant dernier echo) :
echo "<font size=3px><b><center>ANNEE " .$year." </center></b></font><br><br>";
il faut le mettre avant le while:
while($data1 = mysql_fetch_assoc($req2))
il faut que tu changes de place la ligne qui affiche ANNEE 2000 (l'avant dernier echo) :
echo "<font size=3px><b><center>ANNEE " .$year." </center></b></font><br><br>";
il faut le mettre avant le while:
while($data1 = mysql_fetch_assoc($req2))
Bonjour, j’ai le même problème d'affichage de variable que l’autre fois j’ai essayé d’adapter votre méthode mais ça ne marche pas. Pourriez vous m’aider.
Code :
<?php
if (isset($_GET['n'])){
$id=$_GET['n'];
$req1 = mysql_query("SELECT id_jo, num_jo,date_jo FROM jo where id_jo='$id'");
while($data1 = mysql_fetch_assoc($req1)) {
$id= $data1['id_jo'];
$num= $data1['num_jo'];
$date=$data1['date_jo'];
list($year, $month, $day) = explode("-", $date);
$months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
$mois = $months[$month-1];
echo "<font size=3px><b>Journal officiel n° ".$num. " du " .$day ." " .$mois." ".$year. "</b></font><br><br>";
}
$req2 = mysql_query("SELECT * FROM texte where id_jo='$id' ORDER BY num_inst ASC ");
while($data = mysql_fetch_assoc($req2)) {
$id_texte=$data['id_texte'];
$id=$data['id_jo'];
$inst=$data['num_inst'];
$dat=$data['date_texte'];
list($year, $month, $day) = explode("-", $dat);
$months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
$mois = $months[$month-1];
$dat = $day." ".$mois." ".$year;
$req3 = mysql_query("SELECT * FROM institution WHERE num_inst='$inst'");
$listeinst= array();
while ($data3 = mysql_fetch_assoc($req3))
{$insti= $data3['num_inst'];
if(!in_array($insti[0],$listeinst))
array_push($listeinst,$insti[0]);
}
foreach($listeinst as $inst)
{
echo "<font color=#800000> <u>" .$inst. "</u>"; echo "<br><br>";
echo '<font size=3px><a href=http://127.0.0.1/siteofficiel/jo/'.$year.'/'.$id.'/'.$id_texte.'.php>'.$dat.' : '.$data['nature_texte'].' n° '.$data['num_texte'] .$data['commentaire_texte'].'</a></font></br>';
echo "<br>"; echo'</tr>';
}}}
mysql_close();
?>
Merci d’avance.
Code :
<?php
if (isset($_GET['n'])){
$id=$_GET['n'];
$req1 = mysql_query("SELECT id_jo, num_jo,date_jo FROM jo where id_jo='$id'");
while($data1 = mysql_fetch_assoc($req1)) {
$id= $data1['id_jo'];
$num= $data1['num_jo'];
$date=$data1['date_jo'];
list($year, $month, $day) = explode("-", $date);
$months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
$mois = $months[$month-1];
echo "<font size=3px><b>Journal officiel n° ".$num. " du " .$day ." " .$mois." ".$year. "</b></font><br><br>";
}
$req2 = mysql_query("SELECT * FROM texte where id_jo='$id' ORDER BY num_inst ASC ");
while($data = mysql_fetch_assoc($req2)) {
$id_texte=$data['id_texte'];
$id=$data['id_jo'];
$inst=$data['num_inst'];
$dat=$data['date_texte'];
list($year, $month, $day) = explode("-", $dat);
$months = array("janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre");
$mois = $months[$month-1];
$dat = $day." ".$mois." ".$year;
$req3 = mysql_query("SELECT * FROM institution WHERE num_inst='$inst'");
$listeinst= array();
while ($data3 = mysql_fetch_assoc($req3))
{$insti= $data3['num_inst'];
if(!in_array($insti[0],$listeinst))
array_push($listeinst,$insti[0]);
}
foreach($listeinst as $inst)
{
echo "<font color=#800000> <u>" .$inst. "</u>"; echo "<br><br>";
echo '<font size=3px><a href=http://127.0.0.1/siteofficiel/jo/'.$year.'/'.$id.'/'.$id_texte.'.php>'.$dat.' : '.$data['nature_texte'].' n° '.$data['num_texte'] .$data['commentaire_texte'].'</a></font></br>';
echo "<br>"; echo'</tr>';
}}}
mysql_close();
?>
Merci d’avance.
Bonjour
Je viens de réinstaller mon pc donc je ne peux pas tester le code et voir ce qui s'affiche mal.
Mais je pense que c'est le $inst qui va pas?
Si c'est le $inst qui s'affiche plusieurs fois alors qu'une seule est souhaitée, il faut l'afficher avant le foreach. Donc il faut deplacer la ligne :
echo "<font color=#800000> <u>" .$inst. "</u>"; echo "<br><br>";
Désolé si je répond à coté
Je viens de réinstaller mon pc donc je ne peux pas tester le code et voir ce qui s'affiche mal.
Mais je pense que c'est le $inst qui va pas?
Si c'est le $inst qui s'affiche plusieurs fois alors qu'une seule est souhaitée, il faut l'afficher avant le foreach. Donc il faut deplacer la ligne :
echo "<font color=#800000> <u>" .$inst. "</u>"; echo "<br><br>";
Désolé si je répond à coté