Vous n'êtes pas identifié(e).
Pages : 1
Bon des fois je me demande comment je raisonne.... J'ai trouvé beaucoup plus simple....
[codephp]
<table border="1">
<tr><td><b>Type</b></td><td><b>Nombre</b></td><td><b>Temps Min</b></td><td><b>Temps max</b></td><td><b>Temp moyen</b></td></tr>
<?php
$sql_rapport = "SELECT type_csd, count(*), min(duree_csd), max(duree_csd), avg(duree_csd) from csd
GROUP BY TYPE_CSD
ORDER BY count(*) DESC;";
$req_rapport = mysql_query($sql_rapport) or die ('Erreur SQL !'.$sql_rapport.''.mysql_error());
while ( $data = mysql_fetch_array( $req_rapport ) )
{
$type_csd = $data['type_csd'];
$nb_csd = $data['count(*)'];
$duree_max = $data['max(duree_csd)'];
$duree_min = $data['min(duree_csd)'];
$duree_moy = sprintf('%.2f',$data['avg(duree_csd)']);
print '<tr><td><b>'.$type_csd.'</b></td><td>'.$nb_csd.'</td><td>'.$duree_min.'</td><td>'.$duree_max.'</td><td align="right">'.$duree_moy.'</td></tr>';
}
$sql_count = "SELECT type_csd, count(*), min(duree_csd), max(duree_csd), avg(duree_csd) from csd";
$req_count = mysql_query($sql_count) or die('Erreur SQL !'.$sql_count.''.mysql_error());
while ( $data = mysql_fetch_array( $req_count ) )
{
$nb_csd = $data['count(*)'];
$duree_max = $data['max(duree_csd)'];
$duree_min = $data['min(duree_csd)'];
$duree_moy = sprintf('%.2f',$data['avg(duree_csd)']);
print '<tr><td><b>Total</b></td><td>'.$nb_csd.'</td><td>'.$duree_min.'</td><td>'.$duree_max.'</td><td align="right">'.$duree_moy.'</td></tr>';
}
mysql_close();
?>
</table>
[/code]
Salut à tous,
j'aimerai ordonner un peu mon tableau... Il faudrait que je puisse classer mon tableau par le nombre croissant de type mais je n'y parviens pas... Si vous voyez une astuce.....
[code php]
<table border="1">
<tr><td><b>Type</b></td><td><b>Nombre</b></td><td><b>Temps Min</b></td><td><b>Temps max</b></td><td><b>Temp moyen</b></td></tr>
<?php
$sql_type = "SELECT type_csd from csd
GROUP BY TYPE_CSD;";
$req_type = mysql_query($sql_type) or die ('Erreur SQL !'.$sql_type.''.mysql_error());
while ( $data = mysql_fetch_array( $req_type ) )
{
?><tr><td><?php
$type_csd = $data['type_csd'];
print '<b>'.$type_csd.'</b>';
?></td><td><?php
$sql_count_type = " SELECT count(*) FROM CSD
WHERE TYPE_CSD='$type_csd'
ORDER BY count(*) DESC";
$req_count_type = mysql_query($sql_count_type) or die ('Erreur SQL !'.$sql_count_type.''.mysql_error());
while ( $data = mysql_fetch_array( $req_count_type) )
{
$nb_type = $data[0];
echo "$nb_type ";
}
?></td><td><?php
$sql_min = "SELECT MIN( `DUREE_CSD` )
FROM csd
WHERE TYPE_CSD = '$type_csd';";
$req_min = mysql_query($sql_min) or die ('Erreur SQL !'.$sql_min.''.mysql_error());
while ( $data = mysql_fetch_array( $req_min) )
{
$nb_type = $data[0];
echo "$nb_type "; ?> </td>
</td><?php
}
?></td><td><?php
$sql_max = "SELECT MAX( `DUREE_CSD` )
FROM csd
WHERE TYPE_CSD = '$type_csd';";
$req_max = mysql_query($sql_max) or die ('Erreur SQL !'.$sql_max.''.mysql_error());
while ( $data = mysql_fetch_array( $req_max) )
{
$nb_type = $data[0];
echo "$nb_type "; ?> </td>
</td><?php
}
?></td><td align="right"><?php
$sql_moy = "SELECT AVG( `DUREE_CSD` )
FROM csd
WHERE TYPE_CSD = '$type_csd';";
$req_moy = mysql_query($sql_moy) or die ('Erreur SQL !'.$sql_moy.''.mysql_error());
while ( $data = mysql_fetch_array( $req_moy) )
{
$nb_type = sprintf('%.2f',$data[0]);
echo "$nb_type "; ?> </td>
</td></tr><?php
}
}
$sql_count = "SELECT count(*) FROM CSD";
$req_count = mysql_query($sql_count) or die('Erreur SQL !'.$sql_count.''.mysql_error());
while ( $data = mysql_fetch_array( $req_count ) )
{
$nb_total = $data[0];
} ?>
<tr>
<td><b>Total</b></td>
<td><?php echo $nb_total;
?></td><td><?php
$sql_min = "SELECT MIN( `DUREE_CSD` )
FROM csd;";
$req_min = mysql_query($sql_min) or die ('Erreur SQL !'.$sql_min.''.mysql_error());
while ( $data = mysql_fetch_array( $req_min) )
{
$nb_type = $data[0];
echo "$nb_type "; ?> </td>
</td><?php
}
?></td><td><?php
$sql_max = "SELECT MAX( `DUREE_CSD` )
FROM csd;";
$req_max = mysql_query($sql_max) or die ('Erreur SQL !'.$sql_max.''.mysql_error());
while ( $data = mysql_fetch_array( $req_max) )
{
$nb_type = $data[0];
echo "$nb_type "; ?> </td>
</td><?php
}
?></td><td align="right"><?php
$sql_moy = "SELECT AVG( `DUREE_CSD` )
FROM csd;";
$req_moy = mysql_query($sql_moy) or die ('Erreur SQL !'.$sql_moy.''.mysql_error());
while ( $data = mysql_fetch_array( $req_moy) )
{
$nb_type = sprintf('%.2f',$data[0]);
echo "$nb_type "; ?></td><?php
}
mysql_close();
?>
</tr>
</table>
[/code]
Merci pour tout
Nickel, ca marche
Merci bcp pour ce coup de pouce
Bonne journée
J'avoue que là j'ai du mal, j'ai bien vu e enregistrant sou la page au format html et en regardant le code source que les span et les td étaient fermés n'importe comment, mais là j'ai du mal avec le java pour bien placer mes fins de balise, j'ai essayé de le mettre partout (avant ouverture de td) mais ca ne fonctionne pas.
J'ai bien besoin de ton oeil ecaliré
La voici
Si l'insert ne fonctionne pas voici son lien dl.free.fr : http://dl.free.fr/getfile.pl?file=/0PPWof09
Salut à tous,
j'essaie tant bien que mal de faire un formulaire dynamique avec un nombre de champs variable.
Je m'explique, je gère plusieurs serveurs et je souhaite faire un suivi des mise à jour Windows faites dessus. Pour cela j'ai fait un formulaire qui me permet de mettre à jour la base mysql pour une muse à jour. Mais le plus souvent il y a plusieurs mises à jour par serveur. J'aimerai donc mettre un bouton qui me permet d'ajouter un champs dans mon formulaire.
En cherchant sur le net j'ai pu trouver et adapter du java script (que je ne connais absolument pas) pour mon formulaire. Mais le soucis, est que la présentation est vraiment plus que laissant à désirer : la ligne de mon tableau n'est pas droite (même en ajoutant des valign="top").
Ma question est donc est ce que quelqu'un peu m'apporter un coup de main pour corriger ce bout de code...
[code java]
<html>
<head>
<title>Document sans nom</title>
<script language="javascript">
<!--
function create_champ(i)
{
var i2 = i + 1;
document.getElementById('input_'+i).innerHTML = '<td valign="top">KB<input type="text" name="KB_'+i+'" size="8" maxlength="6"></td>';
document.getElementById('input_'+i).innerHTML += (i < 5) ? '<td><span id="input_'+i2+'"><input type="button" onClick="javascript:create_champ('+i2+')" value="+"></span></td>' : '';
}
-->
</script>
</head>
<body>
<form method="post" action="/pages/verif_ajout_update.php">
<?php
$i="1";
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('windows',$db);
$sql = "SELECT NOM_SERVEUR, ID_SERVEUR FROM serveurs ORDER BY NOM_SERVEUR ASC ;";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$nbl = mysql_num_rows($req);
?>
<table border="0" valign="top">
<tr valign="top">
<td valign="top">
Serveur : <SELECT name="id_serveur">
<OPTION VALUE="">Choisissez le serveur...</OPTION>
<?php
while ( $data = mysql_fetch_array( $req ) )
{
$serveur = $data['NOM_SERVEUR'];
$id_serveur = $data ['ID_SERVEUR'];
?>
<OPTION VALUE="<?php echo $id_serveur; ?>"><?php echo $serveur; ?></OPTION>
<?php
} ?>
</SELECT>
</td>
<td>
KB<INPUT value="" type="text" name="KB_1" size="8" maxlength="6">
</td>
<td>
<span id="input_2">
<input name="button" type="button" onClick="javascript:create_champ(2)" value="+">
</span>
</td>
<td>
Reboot : <INPUT type="radio" name="reboot_<?php echo $i; ?> value="oui">Oui <INPUT type="radio" name="reboot_<?php echo $i; ?> value="non" checked>Non
</td>
</tr>
</table>
<input type="hidden" name="nb_entrees" value="<?php echo $i;?>">
<input type="submit" value="Envoyer">
</form></body></html>
[/code]
Encore merci par avance pour votre précieuse aide
PS, je ne sais pas si le soucis vient du java (mais je le suspecte quand même) donc j'ai posté ici, mais si ce n'est pas le bon endroit, il ne faut pas hésiter à le déplacer
[Edit] Le problème de mise en page n'apparait qu'avec FF
Avec IE les lignes sont bien respectées...
On est vraiment nuls, je viens de voir l'erreur en regardant la source de la page créée... Il manquait l'incrément de ma variable $i.... Quelle erreur bête :s
Bon désolé pour tout ce retard, mais j'étais plus au tafn donc plus derrière mon pc..
Pour le coup de numéroter les jours de la semaine, c'est bien vu ça fait gagner un peu de place dans la table semaine...
Imaginons Juliette DUPONT c'est la première personne que tu as entré dans la base elle a donc l'ID 1.
Elle est disponible les mercredi PM, samedi AM et PM et dimanche AM et PM.
Elle t'as prévenu qu'elle est en vacance du 10/02/2010 au 17/02/2010.
Nous sommes le dimanche 31/01/2010,
Tu interroges ta base ce qui donne.
Juliette est bien disponible le dimanche matin et après midi. Le 31/01/2010 n'est pas entre le 3/02/2010 et le 10/02/2010. Elle est donc effectivement disponible aujourd'hui.
Pour les critères supplémentaires c'est le même principe, je te conseille de faire une table pour les critères, une table pour les formations. En fait à chaque fois que tu veux une information récurrente et qui se répète plusieurs fois, je te conseille de l'extraire dans une table, ca fait un gain de place dans la base
Bon courage ^^
Voici la structure SQL que j'ai pu faire via mysql:
[code sql]
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `asso`
--
--
-- Structure de la table `benevole`
--
CREATE TABLE IF NOT EXISTS `benevole` (
`id_benevole` int(11) NOT NULL AUTO_INCREMENT,
`nom_benevole` varchar(20) NOT NULL,
`prenom_benevole` varchar(30) NOT NULL,
PRIMARY KEY (`id_benevole`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Structure de la table `disponibilite`
--
CREATE TABLE IF NOT EXISTS `disponibilite` (
`id_disponibilite` int(11) NOT NULL AUTO_INCREMENT,
`disponibilite` varchar(3) NOT NULL,
`id_benevole` int(11) NOT NULL,
`id_jour` int(11) NOT NULL,
PRIMARY KEY (`id_disponibilite`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Structure de la table `jour_semaine`
--
CREATE TABLE IF NOT EXISTS `jour_semaine` (
`id_jour` int(11) NOT NULL AUTO_INCREMENT,
`jour` varchar(15) NOT NULL,
PRIMARY KEY (`id_jour`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
-- Structure de la table `vacances`
--
CREATE TABLE IF NOT EXISTS `vacances` (
`id_vacances` int(11) NOT NULL AUTO_INCREMENT,
`debut_vacances` date NOT NULL,
`fin_vacances` date NOT NULL,
`id_benevole` int(11) NOT NULL,
PRIMARY KEY (`id_vacances`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
[/code]
Ca ne marche pas mieux. Comme j'ai une 50aines d'entrée, je ne peux répondre qu'une fois pour tous les serveurs. Il y a environs 100 boutons radio à l'ecran et au lieu d'en cocher 50 (un par serveur) je ne peux toujours qu'en cocher 1...
Le problème de la condition vacances scolaires est que c'est une colonne variable. Si tu ne veux pas faire 50 changements de table, le mieux je pense est de faire une autre table vacances(ID_vacances, debut vacances, fin vacances, ID_bénévole) dans laquelle tu entres les congés des différents bénévoles.
Quand tu veux faire un planning tu joins les différentes tables et tu fais le test si le bénévole est en vacances à laquelle tu veux le planifier. S'il n'est pas dans la table vacances à la date voulue, c'est qu'il est disponible (bien sur s'il y a oui pour la table disponibilité le concernant).
Ce que tu peux faire c'est une table pour rentrer tous les bénévoles,
une table pour la disponibilité,
une table pour le jour de la semaine.
Ca va limiter le nombre de colonnes comme ca.
Je te propose les structures des différentes tables
benevole(ID_benevole, nom_benevole, prenom_benevole)
disponibilite(ID_dispo, disponible, ID_benevole, ID_jour)
jour_semaine(ID_jour, jour)
Comme tu peux le voir, il y a des clés étrangères. Avec cette structure tu vas gagner énormément de place dans la base (en fonction du nombre de bénévoles...
Bonjour à tous,
j'aimerai faire un formulaire dynamique avec un bouton radio.
Voici le code que j'ai commencé à faire :
[code php]
<html><body>
<form method="post" action="pages/verif_ajout_etat.php">
<ul>
<?php
$i="0";
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('windows',$db);
$sql = "SELECT NOM_SERVEUR, ID_SERVEUR FROM serveurs ORDER BY NOM_SERVEUR ASC ;";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.''.mysql_error());
$nbl = mysql_num_rows($req);
while ( $data = mysql_fetch_array( $req ) )
{
$serveur = $data['NOM_SERVEUR'];
$id_serveur = $data['ID_SERVEUR'];
$i = $i++;
?>
<INPUT type="hidden" name="id_serveur_<?php echo $i; ?>" size="1" value="<?php echo $id_serveur; ?>">
<li><?php
echo "$serveur"; ?> : KB
<INPUT value="" type="text" name="KB1_<?php echo "$i"; ?>" size="6" maxlength="6"> KB
<INPUT value="" type="text" name="KB2_<?php echo "$i"; ?>" size="6" maxlength="6"> Reboot : oui
<INPUT TYPE="radio" value="oui" name="reboot_<?php echo "$i"; ?>"> non
<INPUT type="radio" value="non" name="reboot_<?php echo "$i"; ?>" CHECKED>
</li>
<?php
}
?>
<input type="hidden" name="nb_entrees" value="<?php echo $i;?>">
<input type="submit" value="Envoyer">
</form></body></html>
[/code]
Mon problème vient de la balise radio. En effet, je pose plusieurs fois la même question pour plusieurs serveurs. Mais le fait d'indexer le nom name de mon "input type=radio" ne suffit pas à lui faire comprendre que ce n'est pas la même question. J'ai une 50aine de serveur à prendre en compte et la balise radio ne me permet de répondre oui ou non pour un seul des serveurs alors que ce n'est pas censé être la même question.
Avez vous une idée de comment je peux m'en sortir ?
Merci de tous vos conseils
Ta requête de base était correcte. Et tu récupérais le nom du serveur.
Sachant que si tu ordonnes ton tableau en fonction de l'ordre dans lequel tu devrais l'afficher tu n'as plus qu'à parcourir ainsi :tableau_serveur = {serveur1,serveur2,serveur3,serveur4}
j = 0
Pour toutes les valeurs du tableau_sql : i
Si tableau_sql[i][nom_serveur] = tableau[j] alors
afficher tableau_sql[i][etat]
i++
Sinon
afficher "offline"
Fin Si
j++
Fin Pour
pas bête l'idée de mettre le retour de la requête sql dans un tableau php, j'avoue que je n'y avais pas pensé... Je vais me pencher la dessus Merci pour ce coup de pouce (aie ca fait mal un coup... Quoi que avec le pouce ca va )
Dès que j'ai eu le temps d'optimiser ca, je repasse par ici pour donner le code... Ca pourra toujours servir pour les suivants
De rien, you're welcome ^^
Ca sert à ca aussi les sites d'entr'aide (pour une fois que je peux donner un coup de main )
>>Si quelqu'un a une idée pour optimiser le tout, je suis preneur
moi, je te propose une gomme
une poubelle, ce serai encore mieux
a++
C'est intelligent ca...
Je ne suis pas expert en php/mysql (ca se voit surement) mais je suppose qu'il fortement possible d'optimiser le code de la page...
Donc si la solution est autre que tout détruire je suis preneur. Sinon passez votre chemin
Salut,
quand définis ta fonction yu fais
[code php]
function nom_de_lafocntion($variable1, $variable_2...)
{
instructions;
return $valeur_a_retourner;
}
[/code]
Quant tu appelle ta fonction tu fais
[code php]
$variable = nom_de_lafocntion($variable1, $variable_2...);
[/code]
Voili voilou
Je m'en suis finalement sorti en faisant du ligne à ligne... Mais le nombre de requête n'est pas terrible, une requête par table ce n'est pas génial... Voici le code
[code php]
<div align="left">
<?php
//Définition des variables utilisées dans la page
//La variable ORDER correspond au champs utilisé par le tri des requètes
if ( isset($_GET['ORDER']) )
{
$ORDER = $_GET['ORDER'];
}
else
{
$ORDER = "ID_ETAT";
}
//La variable ORDRE correspond à l'ordre de tri : ASC ou DESC
if ( isset($_GET['ORDRE']) )
{
$ORDRE = "DESC";
}
else
{
$ORDRE = "ASC";
}
//La variable date_lundi permet de savoir quelle est la date du lundi de la semaine en cours
if ( !isset($_GET['date_requete_lundi'] ))
{
$date_lundi = week2date(date('W'),date('Y'));
$tab = explode("-",$date_lundi);
$annee = $tab[0];
$mois = $tab[1];
$jour = $tab[2];
$date_requete_lundi = mktime(0, 0, 0, $mois, $jour, $annee);
}
$db = mysql_connect('', '', '');
mysql_select_db('',$db);
//$req_serveurs = mysql_query($sql_serveurs) or die('Erreur SQL !'.$sql_serveurs.''.mysql_error());
function affiche_date($date_journee)
{
//Requète qui récupère la date des différents etats des serveurs
$sql_date = "SELECT DATE_ETAT FROM etat_serveur
WHERE UNIX_TIMESTAMP(DATE_ETAT) = $date_journee" //BETWEEN $date_requete_lundi AND $date_requete_vendredi
." GROUP BY DATE_ETAT;";
?>
<td colspan="2" align="center"><?php
$req_date = mysql_query($sql_date) or die('Erreur SQL !'.$sql_date.''.mysql_error());
while ( $data = mysql_fetch_array( $req_date ) )
{
echo $data['DATE_ETAT'];
}?>
</td>
<?php
}
function affiche_titre($date_journee)
{
//Requète qui récupère la date des différents etats des serveurs
$sql_date = "SELECT DATE_ETAT FROM etat_serveur
WHERE UNIX_TIMESTAMP(DATE_ETAT) = $date_journee" //BETWEEN $date_requete_lundi AND $date_requete_vendredi
." GROUP BY DATE_ETAT;";
$req_date = mysql_query($sql_date) or die('Erreur SQL !'.$sql_date.''.mysql_error());
while ( $data = mysql_fetch_array( $req_date ) )
{ ?>
<td align="center">
Service
</td>
<td align="center">
Journal
</td><?php
}
}
function affiche_ligne ($id_serveur, $date_journee)
{
// Définition des couleurs utilisé dans le tableau
$rouge = "#FF0000";
$vert = "#66FF00";
$sql_etat_serveur = "SELECT JOURNAL, SERVICES FROM serveurs , etat_serveur
WHERE ETAT_SERVEUR.ID_SERVEUR = SERVEURS.ID_SERVEUR
AND ETAT_SERVEUR.ID_SERVEUR = $id_serveur
AND ETAT_SERVEUR.DATE_ETAT = $date_journee;";
$req_etat_serveur = mysql_query($sql_etat_serveur) or die('Erreur SQL !'.$sql_etat_serveur.''.mysql_error());
if (mysql_num_rows($req_etat_serveur) == 0)
{
?><td align="center" colspan="2">N/A</td><?php
}
while ( $data = mysql_fetch_array( $req_etat_serveur ) )
{
$journal = $data['JOURNAL'];
$service = $data['SERVICES'];
if ( $service == "ok" )
{
$bgcolor="$vert";
$print="ok";
}
else
{
$bgcolor="$rouge";
$print="ko";
} ?>
<td align="center" width="50" bgcolor="<?php echo $bgcolor; ?>"><?php
if ( $print == "ok" )
{
echo "ok";
}
else
{
?><a href="#" title="<?php echo $service; ?>" style="text-decoration:none; link color=black"><?php echo $print; ?></a><?php
} ?>
</td><?php
if ( $journal == "ok" )
{
$bgcolor="$vert";
$print="ok";
}
else
{
$bgcolor="$rouge";
$print="ko";
} ?>
<td align="center" width="50" bgcolor="<?php echo $bgcolor; ?>"><?php
if ( $print == "ok" )
{
echo "ok";
}
else
{
?><a href="#" title="<?php echo $journal; ?>" style="text-decoration:none; link color=black"><?php echo $print; ?></a><?php
} ?>
</td><?php
}
}
?>
<table border="1">
<tr>
<td rowspan="2" align="center">
Serveur
</td>
<!-- Ligne qui correspond à l'affichage de la date. Il y a une colone par date qu'on récupère par SQL !-->
<!-- On appelle la fonction qui va appeler la date !-->
<?php
for ( $i = 0; $i < 5; $i++ )
{
//Partie qui permet de calculer la date du lendemain (du lundi au vendredi de la semaine choisie)
$date_journee = mktime(0,0,0,substr($date_lundi,5,2),substr($date_lundi,8,2)+$i,substr($date_lundi,0,4));
$date_requete_journee = $date_journee;
$date_journee = date("Y-m-d",$date_journee);
$date_journee = "'$date_journee'";
affiche_date($date_requete_journee);
} ?>
</tr>
<tr>
<?php
for ( $i = 0; $i < 5; $i++ )
{
//Partie qui permet de calculer la date du lendemain (du lundi au vendredi de la semaine choisie)
$date_journee = mktime(0,0,0,substr($date_lundi,5,2),substr($date_lundi,8,2)+$i,substr($date_lundi,0,4));
$date_requete_journee = $date_journee;
$date_journee = date("Y-m-d",$date_journee);
$date_journee = "'$date_journee'"; ?>
<?php
affiche_titre($date_requete_journee);
} ?>
</tr>
<?php
//Requète qui l'ID des serveurs
$sql_serveurs = "SELECT SERVEURS.ID_SERVEUR, NOM_SERVEUR FROM serveurs;";
$req_serveurs = mysql_query($sql_serveurs) or die('Erreur SQL !'.$sql_serveurs.''.mysql_error());
$c=0;
while ( $data = mysql_fetch_array( $req_serveurs ) )
{
?>
<tr><?php
$id_serveur = $data['ID_SERVEUR'];
$serveur = $data['NOM_SERVEUR'];
if ($c%2 != 0)
{
$bgcolor="#123abcd";
}
else
{
$bgcolor="#823abcd";
} ?>
<td bgcolor="<?php echo $bgcolor; ?>"><?php
echo $serveur; ?>
</td><?php
$max_day = date('N');
for ( $i = 0; $i < $max_day; $i++ )
{
//Partie qui permet de calculer la date du lendemain (du lundi au vendredi de la semaine choisie)
$date_journee = mktime(0,0,0,substr($date_lundi,5,2),substr($date_lundi,8,2)+$i,substr($date_lundi,0,4));
$date_requete_journee = $date_journee;
$date_journee = date("Y-m-d",$date_journee);
$date_journee = "'$date_journee'";
affiche_ligne($id_serveur, $date_journee);
}
?>
</tr><?php
$c++;
} ?>
</table>
[/code]
Si quelqu'un a une idée pour optimiser le tout, je suis preneur
Salut a tous,
j'ai un petit soucis avec mon code. J'essaie d'afficher sur plusieurs colonne (une colonne par date) l'historique de l'état de serveurs. L'affichage marche à peut prêt sauf que si au cours de la semaine le nombre de serveurs change, le tableau ne sera plus exact car il y aura un décalage entre le nom du serveur et son état.
En effet jour j le tableau devrait ressembler à ca
Serveur etat_j1
serveur1 ok
serveur3 ko
serveur4 ko
au jour j+1 on ajoute le serveur2 et on obtient
Serveur etat_j1 etat_j2
serveur1 ok ok
serveur2 ko ok
serveur3 ko ko
serveur4 ok
On constate que l'on perd l'information du serveur4 et que tout est décalé au niveau des lignes donc qu'aucune information n'est correcte...
Avez-vous une idée ?
[code php]
<div align="left">
<?php
function week2date ($numSemaine, $annee) {
//-- les paramètres ------------
$timeStampPremierJanvier = strtotime($annee . '-01-01');
$jourPremierJanvier = date('w', $timeStampPremierJanvier);
//-- recherche du N° de semaine du 1er janvier -------------------
$numSemainePremierJanvier = date('W', $timeStampPremierJanvier);
//-- nombre à ajouter en fonction du numéro précédent ------------
$decallage = ($numSemainePremierJanvier == 1) ? $numSemaine - 1 : $numSemaine;
//-- timestamp du jour dans la semaine recherchée ----------------
$timeStampDate = strtotime('+' . $decallage . ' weeks', $timeStampPremierJanvier);
//-- recherche du lundi de la semaine en fonction de la ligne précédente ---------
$jourDebutSemaine = ($jourPremierJanvier == 1) ? date('d-m-Y', $timeStampDate) : date('Y-m-d', strtotime('last monday', $timeStampDate));
return $jourDebutSemaine;
}
function affiche_journee ($date_journee) //Fonction permetant d'afficher l'état du serveur à la date $date_journee
{
$rouge = "#FF0000";
$vert = "#66FF00";
$date = date("'Y-m-d'");
$m=date('m');
$d=date('d');
$Y=date('Y');
$date_requete = mktime(0, 0, 0, $m, $d, $Y);
if ( isset($_GET['ORDER']) )
{
$ORDER = $_GET['ORDER'];
}
else
{
$ORDER = "ID_ETAT";
}
if ( isset($_GET['ORDRE']) )
{
$ORDRE = "DESC";
}
else
{
$ORDRE = "ASC";
}
$db = mysql_connect('', '', '');
mysql_select_db('windows',$db);
$sql_etat = "SELECT NOM_SERVEUR, DATE_ETAT, JOURNAL, SERVICES FROM serveurs , etat_serveur
WHERE ETAT_SERVEUR.ID_SERVEUR = SERVEURS.ID_SERVEUR
AND ETAT_SERVEUR.DATE_ETAT = $date_journee" //>= $date_requete_lundi
." ORDER BY $ORDER $ORDRE ;";
$sql_date = "SELECT DATE_ETAT FROM etat_serveur
WHERE UNIX_TIMESTAMP(DATE_ETAT) = $date_requete" //BETWEEN $date_requete_lundi AND $date_requete_vendredi
." GROUP BY DATE_ETAT;";
$req_etat = mysql_query($sql_etat) or die('Erreur SQL !'.$sql_etat.''.mysql_error());
while ( $data = mysql_fetch_array( $req_etat ) )
{
$journal = $data['JOURNAL'];
$service = $data['SERVICES'];
if ( $journal == "ok" )
{
$bgcolor="$vert";
$print="ok";
}
else
{
$bgcolor="$rouge";
$print="ko";
} ?>
<tr>
<td align="center" width="20%" bgcolor="<?php echo $bgcolor; ?>">
<a href="#" title="<?php echo $journal; ?>" style="text-decoration:none; link color=black"><?php echo $print; ?></a>
</td>
<?php
if ( $service == "ok" )
{
$bgcolor="$vert";
$print="ok";
}
else
{
$bgcolor="$rouge";
$print="ko";
} ?>
<td align="center" width="20%" bgcolor="<?php echo $bgcolor; ?>">
<a href="#" title="<?php echo $service; ?>" style="text-decoration:none; link color=black"><?php echo $print; ?></a>
</td>
</tr>
<?php
}
}
function affiche_serveurs () //fonction permettant d'afficher la liste des serveurs
{
if ( isset($_GET['ORDER']) )
{
$ORDER = $_GET['ORDER'];
}
else
{
$ORDER = "ID_ETAT";
}
if ( isset($_GET['ORDRE']) )
{
$ORDRE = "DESC";
}
else
{
$ORDRE = "ASC";
}
$db = mysql_connect('localhost', 'root', '');
mysql_select_db('windows',$db);
$sql_serveurs = "SELECT NOM_SERVEUR FROM serveurs , etat_serveur
WHERE ETAT_SERVEUR.ID_SERVEUR = SERVEURS.ID_SERVEUR
GROUP BY NOM_SERVEUR
ORDER BY $ORDER $ORDRE ;";
$req_serveurs = mysql_query($sql_serveurs) or die('Erreur SQL !'.$sql_etat.''.mysql_error());
$i=0;
while ( $data = mysql_fetch_array( $req_serveurs ) )
{
$serveur = $data['NOM_SERVEUR'];
if ($i%2 != 0)
{
$bgcolor="#123abcd";
}
else
{
$bgcolor="#823abcd";
}
?>
<tr bgcolor="<?php echo $bgcolor; ?>">
<td align="center">
<?php echo "$serveur"; ?>
</td>
</tr><?php
$i++;
}
}
if ( !isset($_GET['date_requete_lundi'] ))
{
$date_lundi = week2date(date('W'),date('Y'));
$tab = explode("-",$date_lundi);
$annee = $tab[0];
$mois = $tab[1];
$jour = $tab[2];
$date_requete_lundi = mktime(0, 0, 0, $mois, $jour, $annee);
}
?>
<table border="1">
<tr>
<td>
<table border="1" width="80"> <!-- Tableau qui contient le nom de tous les serveurs !-->
<tr>
<td>
.
</td>
</tr>
<tr>
<td>
Serveurs
</td>
</tr>
<?php affiche_serveurs(); ?>
</table>
</td>
<td valign="top"><?php
for ( $i = 0; $i < 5; $i++ )
{ ?>
<td valign="top">
<table border="1" valign="top"> <!-- Tableau qui contient les infos pour chaque journee !-->
<tr>
<td colspan="2">
<?php echo 'toto' ?> <!--affiche_date($date_journee); ?> !-->
</td>
</tr>
<tr>
<td>
Services
</td>
<td>
Journal
</td>
</tr>
<?php
//Partie qui permet de calculer la date du lendemain (du lundi au vendredi de la semaine choisie)
$date_journee = mktime(0,0,0,substr($date_lundi,5,2),substr($date_lundi,8,2)+$i,substr($date_lundi,0,4));
$date_requete_journee = $date_journee;
$date_journee = date("Y-m-d",$date_journee);
$date_journee = "'$date_journee'"; ?>
<?php affiche_journee($date_journee); ?>
</table>
</td><?php
}
?>
</td>
</tr>
</table>
<?php
mysql_close();
?>
</div>
[/code]
D'avance merci de votre aide
Pages : 1