Nympheasi Posté 4 Mars 2009 Posté 4 Mars 2009 Bonjour, J'ai dans une bd MYSQL nommé Rapports j'ai une table nommée BTS_SUBSCRIBER. J'ai dans cette table 5 champs. Dans l'ordre: nbr_subs, Ville, sub_profile, date, nbr_pri. Dans une page nommée index.php, j'affiche le contenu de chacun des champs dans un tableau (pour le tableau j'utilise le plugin TableSorter de Jquery (javascript)). Chaque dimanche, j'ai un script qui viens remplir ma bd avec des infos qu'il prend ailleurs. Ce que je veux faire c'est de trier les résultats par date via les dates que j'ai dans le champs date de ma BD. Un petit menu dropdown contenant les dates comprises dans le champs date ferait l'affaire. Voici ce que j'ai comme code présentement: <?$db = mysql_connect ( 'localhost', 'xxxx', 'xxxxxxx' ) or die ( mysql_error () );;mysql_select_db ( 'Rapports', $db );$sqlOptions = "SELECT distinct date FROM BTS_SUBSCRIBER";$resultOptions = "mysql_query($sqlOptions)";$req="SELECT * FROM BTS_SUBSCRIBER";if ($result = mysql_query($req, $db)) { echo "<table id='myTable' class='tablesorter' align='center'>"; echo "<thead><tr><TH>Date</TH><TH>Nombre Clients</TH><TH>Ville</TH><TH>Sub_Profile</TH><TH>Nombre PRI</TH><TH>Ratio Clients/PRI</TH></tr></thead><tbody>"; while($row = mysql_fetch_row($result)){if ($row[4]!=0) {$ratio=$row[0] / $row[4];}$css_add="";if ($ratio < '200.00'){$css_add='style="color:green"';}if ($ratio >= '200.00'){$css_add='style="color:orange"';}if ($ratio >= '230.00'){$css_add='style="color:red"';} echo " <tr class='tablesorter' align='center'> <td align=center>".$row[3]."</td> <td align=center>".$row[0]."</td> <td align=center>".$row[1]."</td> <td align=center>".$row[2]."</td> <td align=center>".$row[4]."</td> <td align=center $css_add>".number_format($ratio,2)."</td> </tr>"; $ratio=0; } echo "</tbody></table>"; mysql_free_result($result);}mysql_close($db);?> Des suggestions?
VentduSud Posté 5 Mars 2009 Posté 5 Mars 2009 Bonjour Nympheasi, As-tu essayé de modifier ta requête avec une instruction de tri ? $req="SELECT * FROM BTS_SUBSCRIBER ORDER BY Date"; VentduSud
Nympheasi Posté 6 Mars 2009 Auteur Posté 6 Mars 2009 En fait j'ai rajouter ce bout de code: $res=mysql_query("SELECT distinct date FROM BTS_SUBSCRIBER order by date") or die(mysql_error());echo '<select>';while($row=mysql_fetch_array($res)){echo "<option value=$row[0]>$row[date]</a></option>";}echo "</select>"; Avec ça j'ai drop down list avec les date que je vais chercher dans ma bd mysql. Par contre j'aimerais faire en sorte que lorsque je choisi une date que seuls les items correspondants à cette date s'affiche dans mon tableau. J'ai lu un peu à propos d'une fonction ''onchange'' en javascript mais je ne sais pas trop comment l'utilisée.
Nympheasi Posté 8 Mars 2009 Auteur Posté 8 Mars 2009 J'ai changé mon code un peu mais mon menu deroulant ne fonctionne toujours pas. Je réussi à récuperer les date du champs date de ma table BTS_SUBSCRIBER et les mettre dans le menu mais lorsque je sélectionne une date, rien ne se passe. Voici mon code: <?phpini_set ( "display_errors", "1" );error_reporting ( E_ALL );?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 //EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr"><head> <title>Rapport Hebdomadaire VOIP</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <link rel="stylesheet" media="screen" type="text/css" title="Design" href="./themes/blue/style.css" /> <script type="text/javascript" src="jquery-latest.js"></script> <script type="text/javascript" src="jquery.tablesorter.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#myTable").tablesorter(); } ); </script></head> <body> <? // Connection à la DB $db = mysql_connect ('localhost', 'xxxx', 'xxxx') or die (mysql_error());; mysql_select_db ( 'Rapports', $db ); [b]// Menu déroulant $res=mysql_query("SELECT distinct date FROM BTS_SUBSCRIBER order by date") or die(mysql_error());; echo '<select name="date" onchange="submit();">'; while($row=mysql_fetch_array($res)) { echo "<option value="$row[0]" '.($_GET['date']=="$row[0]").'>$row[date]</option>"; } echo "</select>"; [/b] //Sélection des données SQL à mettre dans le tableau Tablesorter $req="SELECT * FROM BTS_SUBSCRIBER order by date"; if ($result = mysql_query($req, $db)) { echo "<table id='myTable' class='tablesorter' align='center'>"; echo " <thead> <tr> <TH>Date</TH> <TH>Nombre Clients</TH> <TH>Ville</TH> <TH>Sub_Profile</TH> <TH>Nombre PRI</TH> <TH>Ratio Clients/PRI</TH> </tr> </thead>"; echo "<tbody>"; while($row = mysql_fetch_row($result)) { // Si Ratio Client/PRI différent de 0, mettre en noir if ($row[4]!=0) { $ratio=$row[0] / $row[4]; } $css_add=""; // Si Ratio Client/PRI plus petit que 200, mettre en vert if ($ratio < '200.00') { $css_add='style="color:green"'; } // Si Ratio Client/PRI plus grand que 200, mettre en orange if ($ratio >= '200.00') { $css_add='style="color:orange"'; } // Si Ratio Client/PRI plus grand que 230, mettre en rouge if ($ratio >= '230.00') { $css_add='style="color:red"'; } echo " <tr class='tablesorter' align='center'> <td align=center>".$row[3]."</td> <td align=center>".$row[0]."</td> <td align=center>".$row[1]."</td> <td align=center>".$row[2]."</td> <td align=center>".$row[4]."</td> <td align=center $css_add>".number_format($ratio,2)."</td> </tr>"; $ratio=0; } echo "</tbody></table>"; mysql_free_result($result); } mysql_close($db);?> </body></html> En gras c'est la partie du code de menu déroulant. Le onchange ne fonctionne pas... Des idées du problème?
iNCiTE Web Posté 8 Mars 2009 Posté 8 Mars 2009 Tu fais un onchange="submit()" mais tu n'as pas de formulaire, donc submit de quoi ? Si tu veux vraiment utiliser le onchange, fais plutôt : echo '<select name="madate" onchange="location=index.php?madate=+this.value">'; Mais en fait tu dois modifier ta requête si madate (j'ai changé le nom) est valorisé, et plus faire un SELECT DISTINCT (qui a au passage sans GROUP BY je me demande ce que ça donne) mais un SELECT... WHERE date = $_GET["madate"], ou quelque chose équivalent... Je vois aussi que tu déclares un doctype XHTML 1.1 mais ça m'étonnerais que ton code soit valide (par exemple il manque le id du select)
Nympheasi Posté 9 Mars 2009 Auteur Posté 9 Mars 2009 (modifié) Good! ça fonctionne! Merci iNCiTE Web! Voici mon code à nouveau: <?phpini_set ( "display_errors", "1" );error_reporting ( E_ALL );?><head><title>Rapport Hebdomadaire VOIP</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><link rel="stylesheet" media="screen" type="text/css" title="Design" href="./themes/blue/style.css" /><script type="text/javascript" src="jquery-latest.js"></script><script type="text/javascript" src="jquery.tablesorter.js"></script><script type="text/javascript">$(document).ready(function() { $("#myTable").tablesorter(); } ); </script></head> <body><?// Connection à la DB$db = mysql_connect ('localhost', 'xxxx', 'xxxx');mysql_select_db ( 'xxxx', $db );// Menu déroulant[b]echo '<form method="get" action="index.php?date=$_GET[date]">'; echo '<select name="date">';$requete="SELECT distinct date FROM BTS_SUBSCRIBER group by date";$res=mysql_query($requete);while($row=mysql_fetch_array($res)){echo "<option value='$row[date]'>$row[date]</option>";}echo "</select>"; echo '<input id="submit" type="submit" value="Ok">';if ($date!=""){echo "Vous avez sélectionné :"; echo "$date";}echo '</form>';[/b]//Sélection des données SQL à mettre dans le tableau Tablesorter[b]$req="SELECT * FROM BTS_SUBSCRIBER WHERE date='$_GET[date]' order by Ville";[/b]if ($result = mysql_query($req, $db)) {echo "<table id='myTable' class='tablesorter' align='center'>";echo " <thead><tr><TH>Date</TH><TH>Nombre Clients</TH><TH>Ville</TH><TH>Sub_Profile</TH><TH>Nombre PRI</TH><TH>Ratio Clients/PRI</TH></tr></thead>";echo "<tbody>";while($row = mysql_fetch_row($result)){// Si Ratio Client/PRI différent de 0, mettre en noirif ($row[4]!=0) {$ratio=$row[0] / $row[4];}$css_add="";// Si Ratio Client/PRI plus petit que 200, mettre en vert if ($ratio < '200.00'){$css_add='style="color:green"';}// Si Ratio Client/PRI plus grand que 200, mettre en orangeif ($ratio >= '200.00'){$css_add='style="color:orange"';}// Si Ratio Client/PRI plus grand que 230, mettre en rougeif ($ratio >= '230.00'){$css_add='style="color:red"';}echo " <tr class='tablesorter' align='center'><td align=center>".$row[3]."</td><td align=center>".$row[0]."</td><td align=center>".$row[1]."</td><td align=center>".$row[2]."</td><td align=center>".$row[4]."</td><td align=center $css_add>".number_format($ratio,2)."</td></tr>"; $ratio=0; }echo "</tbody></table>";mysql_free_result($result);}mysql_close($db);?> </body></html> J'ai mis en gras les changements que j'ai fait. Par contre le seul souci qu'il me reste c'est que lorsque l'on entre sur le site avec index.php il faudrais que cette page prenne automatiquement la forme index.php?date='date la plus récente entrée dans la BD' Des idées? Modifié 9 Mars 2009 par Nympheasi
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant