Aller au contenu

Sujets conseillés

Posté

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?

Posté

Bonjour Nympheasi,

As-tu essayé de modifier ta requête avec une instruction de tri ?

$req="SELECT * FROM BTS_SUBSCRIBER ORDER BY Date";

VentduSud

Posté

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.

Posté

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:

<?php
ini_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?

Posté

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)

Posté (modifié)

Good! ça fonctionne! Merci iNCiTE Web!

Voici mon code à nouveau:

<?php
ini_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 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>

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é par Nympheasi

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...