Pas compris ce que vous vouliez.
Toujours est-il que si je supprime cette fameuse ligne, ou plus exactement avant que j'ajoute cette seule ligne, il n'y avait pas d'erreur !
Enfin, voici l'ensemble du code, voir /* LIGNES AJOUTÉES */
select count(distinct choice) as $countrows from VTTlog where Date = $ListDate;
select count(*) as countrows from VTTlog;
j'avais mis la première ligne; comme ça ne fonctionnait pas je l'ai remplacée par la seconde, plus simple, qui ne fonctionne pas non plus.
<?php
session_start(); // On démarre la session AVANT toute chose
if ($_SESSION['ID'] == "") die ('<br><img src="../gif/Stop.gif"><Font Color=Red>Accès non autorisé</Font>');
// connexion à la base
$db = mysql_connect('rudyv.be.mysql', 'rudyv_be', 'le mot de passe') or die('<img src="../gif/Stop.gif">Erreur de connexion '.mysql_error());
// sélection de la base
mysql_select_db('rudyv_be',$db) or die('<img src="../gif/Stop.gif">Erreur de selection '.mysql_error());
$OneYearAgo = mktime(0,0,0,date("m"),date("d")-365,date("Y"));
$DateOYA=date("ymd", $OneYearAgo);
if (Date("Hi")<'1330')
$NOW = mktime(0,0,0,date("m"),date("d"),date("Y"));
else
$NOW = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
$DateNOW=date("ymd", $NOW);
/* Futur */
Echo "<TABLE BORDER CELLSPACING=1 CELLPADDING=2 WIDTH='900' ALIGN='center' BGCOLOR=Yellow><TBODY>";
$ListDate=" ";
$result = mysql_query("SELECT * FROM VTTlog WHERE Date>=$DateNOW ORDER BY Date DESC,choice DESC");
while($row = mysql_fetch_array($result))
{
if ($ListDate <> $row['Date'])
{
echo "<TR><TD WIDTH='10%'>".substr($row['Date'],-2)."/".substr($row['Date'],2,2)."/20".substr($row['Date'],0,2)."</TD>" ;
$ListDate = $row['Date'];
$ListChoice=" ";
$lead="<TD WIDTH='10%'>";
}
if ($ListChoice <> $row['choice'])
{
$ListChoice = $row['choice'];
$Sep = "";
switch ($ListChoice)
{
case "V":
echo $lead."VTT</TD><TD WIDTH='80%'>";
break;
case "R":
echo $lead."Route</TD><TD WIDTH='80%'>";
break;
case "N":
echo $lead."Ne roule pas</TD><TD WIDTH='80%'>";
break;
case "A":
echo $lead."Absent</TD><TD WIDTH='80%'>";
break;
default:
echo $lead."? ".$ListChoice;
}
$lead="</TD></TR><TR><TD WIDTH='10%'> </TD><TD WIDTH='10%'>";
}
if($row['Comment']=="")
echo $Sep.$row['Name'] ;
else
{
$Comment=" <small>[".$row['Comment']."]</small>";
echo $Sep.$row['Name'].$Comment;
}
$Sep = ", ";
}
Echo "</Table></TD></TR></TBODY> ";
/* passé */
Echo "<TABLE BORDER CELLSPACING=1 CELLPADDING=2 WIDTH='900' ALIGN='center' BGCOLOR=Silver><TBODY>";
$ListDate=" ";
$result = mysql_query("SELECT * FROM VTTlog WHERE (Date>$DateOYA && Date<$DateNOW) ORDER BY Date DESC,choice DESC");
while($row = mysql_fetch_array($result))
{
if ($ListDate <> $row['Date'])
{
echo "<TR><TD WIDTH='10%'>".substr($row['Date'],-2)."/".substr($row['Date'],2,2)."/20".substr($row['Date'],0,2)."</TD>" ;
$ListDate = $row['Date'];
$ListChoice=" ";
/* LIGNES AJOUTÉES */
select count(distinct choice) as $countrows from VTTlog where Date = $ListDate;
select count(*) as countrows from VTTlog;
$lead="<TD WIDTH='10%' rowspan=".$countrows.">";
}
if ($ListChoice <> $row['choice'])
{
$ListChoice = $row['choice'];
$Sep = "";
switch ($ListChoice)
{
case "V":
echo $lead."VTT</TD><TD WIDTH='80%'>";
break;
case "R":
echo $lead."Route</TD><TD WIDTH='80%'>";
break;
case "N":
echo $lead."Ne roule pas</TD><TD WIDTH='80%'>";
break;
case "A":
echo $lead."Absent</TD><TD WIDTH='80%'>";
break;
default:
echo $lead."? ".$ListChoice;
}
$lead="</TD></TR><TR><TD WIDTH='10%'> </TD><TD WIDTH='10%'>";
}
if($row['Comment']=="")
echo $Sep.$row['Name'] ;
else
{
$Comment=" <small>[".$row['Comment']."]</small>";
echo $Sep.$row['Name'].$Comment;
}
$Sep = ", ";
}
Echo "</Table></TD></TR></TBODY> ";
// on ferme la connexion
mysql_close();
?>
</body>
</html>
Pour expliquer ce que je veux faire,
dans le cadre d'un club vélo (c'est le cas de le dire) une DB contient l'agenda, un enregistrement par date, type d'activité, membre et commentaire éventuel
par exemple la DB contient pour le 16/11
16/11/2013 VTT FrançoisB
16/11/2013 VTT Sylvain
16/11/2013 Route Isabelle
16/11/2013 Ne roule pas Marie [comment]
16/11/2013 Ne roule pas Rudy [comment]
16/11/2013 Ne roule pas Jacques
16/11/2013 Ne roule pas Chantal
16/11/2013 Ne roule pas Christian
16/11/2013 Ne roule pas Francis
16/11/2013 Absent Jean-Marie
Actuellement, sans la ligne ajoutée, l'affichage donne
en construisant la table affichée je voudrais compter le nombre d'entrées qui ont la même date et des activité distinctes (par exemple 4 pour le 16/11/2013) afin de mettre un colspan approprié dans le TD; c'est juste une question esthétique pour la première colonne.