Utilisation de sql en php + problème php - PHP - Programmation
Marsh Posté le 13-01-2005 à 07:27:50
Question 1: Je sais pas. Désolé
Question 2: Utilise les feuilles de style (CSS), ca aide et ca donne un code plus propre.
Question 3: Avant l'affichage, tu fais tes "calcul", une fois ke tu as fini, tu peux afficher ton code HTML et tes données.
Marsh Posté le 13-01-2005 à 11:27:18
ok merci par contre pour la 3 c'est ce qu'il se passe en fait
Marsh Posté le 13-01-2005 à 13:03:59
Excuse moi, j'avais mal interprêté ton code.
Oubli ma réponse à ta question 3.
En faite, le mieu serai de voir si tu ne pourrais pas enlevé une boucle for, si c'est possible bien entendu. Je pense que ca te ferai gagner du temps.
Sinon je ne vois pas comment faire si ce n'est que de mettre un petit message pour faire patientr tes visiteurs en utilisant du javascript.
Marsh Posté le 14-01-2005 à 01:02:32
Concernant ta question 3 j'ai eu un probleme similaire il y a quelques jours.
Ma solution fut de "tricher".
Si j'ai bien compris ton script dois afficher l'etat online/offline de certains serveurs ftps.
Le probleme est que si tu faits ces test dans ton script qui affiche le tableau, il suffit que quelques ftps soient offline et tu risque d'atteindre la limite d'execution de ton script php. Un autre probleme est le fait que ton script est tributaire de la vitesse de reponse des serveurs.
J'avais un probleme tres similaire, pour solutionner ca, j'ai triche. J'ai decoupe mon script en 2.
La premiere partie affiche le tableau, et a la place du texte "online/offline" j'ai mis un lien vers une image.
Cette image est en realite "generee" par la 2e moitie de mon script. De cette facon quand le navigateur va aller chercher l'image il va lancer mon script php. Ce dernier fait le test et retourne l'image en fonction de l'etat du serveur.
Cette methode a quelques avantages, notament le fait que pour chaque serveur, le navigateur fait une requete differente. Par consequent il va lancer le script pour chaque serveur. Ce qui veut dire que chaque serveur aura le temps d'execution du script php pour repondre (et pas comme avant ou ils devaient tous se "partager" ce temps).
De plus en fonction du navigateur, ce dernier peut faire 2-3 requetes en meme temps.
Si tu decide d'utiliser cette methode, je te recommande de faire attention au "cache" de ton navigateur. En effet ce dernier met en caches les images. Donc va falloir t'assurer que tes images ne sont pas dans le cache afin d'eviter de donner un "faux" statut pour le serveur.
Voila j'espere avoir pu t'aider
Marsh Posté le 14-01-2005 à 07:23:07
Merci beaucoup je vais chercher de ce coté là: ça m'a l'air d'être pas mal! Merci beaucoup. Si quelqu'un à d'autres choses a proposer, hésiter pas !!!! Merci encore
Marsh Posté le 14-01-2005 à 21:36:21
Je fais des recherches sur la solution de cerel et je vois pas trop comment mettre ça en oeuvre quelqu'un voit?
Marsh Posté le 14-01-2005 à 21:52:44
Ben en fait faut que "decoupes" ton script en 2.
La premiere partie va se charger de creer ton tableau, de lister les serveur et au lieu de faire le test de connexion et d'y afficher le status, tu mets une image.
Par exemple quelque chose comme ca:
<img src="test_conn.php?ip=127.0.0.1">
Ensuite dans ton fichier test_conn.php tu mets la partie de ton script qui s'occupe de verifier si le serveur est online ou offline.
La tu as 2 possibilitées. Soit tu utilises GD pour creer une image et la renvoyer, soit tu ne faits que renvoyer une image deja existente. Admetons que tu aies cree 2 images. Tu dois simplement jouer avec "header" (cf content-type) pour dire a ton browser que tu envoie une image, apres tu ouvre ton fichier avec fopen et tu balance le contenu du fichier au browser (evidement faut eviter les images trop lourdes).
La commande importante a retenir c'est "header", regarde dans le manuel de php, tu devrais avoir tout ce qui est necessaire pour y arriver.
Essaye en commencant par un truc vraiment simple. Du genre une page qui affiche une serie d'images, images que tu "cree" toi dans un script php. Une fois que tu arrive ca, le reste n'est que tu "recopiage" de code puisque ton script fonctionne.
Marsh Posté le 15-01-2005 à 01:43:00
Bona lors le truc couille toujours et j'arrive pas a comprendre pourquoi. Si tu pourvais me corriger s'il te plait.
Voila la partie de mon ficheir avec l'appel
Citation : echo '<img src="image.php?ip=***.***.***.***&port=21" >'; |
et voila image.php
Citation : <html> |
je vois pas trop ou je dois utiliser fopen: Si tu peux m'éclairer
Et sinon sachant que chaque serveur est déclaré comme ça:
Citation : $server[$i]['port'] = 21; |
comment dois je appeller image.php?
Comme ça?
Citation : <img src="image.php?ip=echo'$server[$i]['addr']')&port=$server[$i]['port']' |
Merci beaucoup de toute l'aide que tu m'as déja apporté, c'est vraiment sympa !!!
Marsh Posté le 15-01-2005 à 02:59:40
sibbboon a écrit : [...]
|
C'est normal que ca marche pas etant donne que tu as deja envoye les headers. Si tu inspecte attentivement ton code source, tu remarque qu'avant l'ouverture du tag php (?php), tu as as 2 lignes html, a cause de celles-la le serveur web a deja commence a envoyer les donees au browser. Mais il les envoi comme du html et non comme une image.
Il faut donc que tu vire tout l'html de ton fichier image.php. En effet ce dernier n'est utilise que pour afficher des images et non pour afficher de l'html.
sibbboon a écrit : je vois pas trop ou je dois utiliser fopen: Si tu peux m'éclairer |
Tu as utilise readfile, ca va tres bien aussi. Fopen c'est simplement pour ouvrir un fichier, readfile fait deja tout (ouvre le fichier puis l'envois). Moi j'avais pense a une ouvrir le fichier avec fopen puis l'envoyer, mais c'est mieux de le faire avec readfile, c'est plus facile. Desole de t'avoir induit en erreur.
sibbboon a écrit : Et sinon sachant que chaque serveur est déclaré comme ça:
|
Ben en fait ca depends comment tu ecris tes liens. Mais admetons que tu as une boucle for qui parcours ton tableau :
Citation : foreach($server as $srv) { |
Si tu veux creer un lien html ou tu ajoutes les valeurs via php tu dois faire comme ca :
Citation : <img src="image.php?ip=<?php echo $server[$i]['addr'];?>&port=<?php $server[$i]['port'];?>"> |
Remarque bien la differences entre les deux. La premiere methode pourrais se ressumer a "retourner du code html a l'interieur de php", alors que la 2e methode est "l'inverse", ou "comment retourner des valeurs php a l'interieur d'html" (en gros).
Je te conseille la premiere methode qui reste plus lisible.
PS : Comme j'avais rien a faire a 3h du mat, j'ai ajoute un peu de couleur pour mieux differencier la partie html de la partie php dans les 2 exemples cites plus haut.
Marsh Posté le 15-01-2005 à 11:24:23
Bon ben maintenant ça marche sauf que ça me met que des offlines (le fichier image.php marche nickel <<== testé manuellement).
Voice commment je transmet les valeurs (pas trop compris la première méthode). Cette ligne remplaçant ce que j'ai coloré en haut de la page
Citation : echo "<img src=\"image.php?ip=<?php echo $server[$i]['addr'] ?>&port=<?php $server[$i][port] ?>\">"; |
Je sens qu'on touche au but... merci beaucoup cerel pour ton aide
Marsh Posté le 15-01-2005 à 12:46:22
Essaye plutot ca :
echo '<img src="image.php?ip='.$server[$i]['addr'].'&port='.$server[$i]['port'].'">';
Mais faut que tu fasse gaffe au cache de ton navigateur. Va voir ds la doc de php concernant la fonction header, ils donnent les entetes a envoyer pour eviter que le navigateur ne mete l'image dans le cache.
Marsh Posté le 15-01-2005 à 12:59:09
Code :
|
a mettre dans le <head>
Marsh Posté le 15-01-2005 à 13:33:00
Ca c'est dans le cadre d'un fichier html, or ici il envoi lui meme les headers avec la fonction header.
Le manuel php nous donne ca :
Code :
|
Marsh Posté le 15-01-2005 à 13:41:46
Merci beaucoup, ça marche, tu gère mec il me reste plus qu'a vérifier les histoires de caches et c'est bon !!!
Marsh Posté le 12-01-2005 à 20:31:07
Salut j'ai des questions sur une page web que j'ai fait. Elle référence des serveurs ftp sur un réseau local. Vous pouvez en voir une version épurée sur simon333.free.fr/test.php. Voici le code:
<HTML>
<BODY LINK="RED" ALINK="RED" VLINK="RED" TOPMARGIN="50" BOTTOMMARGIN="50" LEFTMARGIN="40" RIGHTMARGIN="40" BACKGROUND="606.gif">
<table border="0" background="606.gif" align="center" cellpadding="5" cellspacing="1" bgcolor="black" >
<tr >
<td align="center" colspan="8" bgcolor="#FFFFFF">
<font face="Arial, Helvetica, sans-serif" size="+2"><b>Test des serveurs FTP</b></font>
</td>
</tr>
<tr>
<td align="center" bgcolor="#FFFFFF">
<b><font size="+1">Nom</b></font>
</td>
<td align="center" bgcolor="#FFFFFF">
<b><font size="+1">Serveur</b></font>
</td>
<td align="center" bgcolor="#FFFFFF">
<b><font size="+1">Port</b></font>
</td>
<td align="center" bgcolor="#FFFFFF">
<b><font size="+1">Statut.</font></b>
</td>
<td align="center" bgcolor="#FFFFFF">
<b><font size="+1">Login</font ></b>
</td> <td align="center" bgcolor="#FFFFFF">
<b><font size="+1">Mot de passe</font ></b>
</td><td align="center" bgcolor="#FFFFFF">
<b><font size="+1">Commentaire</font ></b>
</td>
</td><td align="center" bgcolor="#FFFFFF">
<b><font size="-1">Code d'erreur de la fonction fsockopen pour ceux qui maitrisent</font ></b>
</td>
</tr>
<?php
$server[1]['port'] = 21; <===============
$server[1]['addr'] = '***.***.***.***'; <===============
$server[1]['login'] = '****'; <===============
$server[1]['mdp'] = '*****'; <===============
$server[1]['comm']= '20 Go de films, des jeux, des mp3 '; <===============
$server[1]['nom']='Sibbboon'; <===============
for ($i = 1; $i <= count($server); $i++)
{
if (is_array($server[$i]['port']))
{
$port = array();
$port = $server[$i]['port'];
}
else
{
$port = array();
$port[0] = $server[$i]['port'];
}
for ($j = 0; $j < count($port); $j++)
{
echo '<tr><td align="center" bgcolor="#FFFFFF" >'."\n";
echo $server[$i]['nom'];
echo '</td>
<td align="center" bgcolor="#FFFFFF" height="20">'."\n";
if ($j == 0)
{
echo $server[$i]['addr']."\n";
}
else
{
echo ' '."\n";
}
echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
echo $port[$j]."\n";
echo '</td><td align="center" bgcolor="#FFFFFF">'."\n";
if ( @fsockopen( $server[$i]['addr'], $port[$j], $errno, $errstr, 0.5) )
{
echo '<font color="#00CC00" size="+1"><b>Online</b></font>'."\n";
}
else
{
echo '<font color="#CC0000"><b>Offline</b></font>'."\n";
$ping = '>1000';
} echo '</td>
<td align="center" bgcolor="#FFFFFF" >'."\n";
echo $server[$i]['login'];
echo '</td>
<td align="center" bgcolor="#FFFFFF" >'."\n";
echo $server[$i]['mdp'];
echo '</td>
<td align="center" bgcolor="#FFFFFF" >'."\n";
echo $server[$i]['comm'];
echo '</td>
<td align="center" bgcolor="#FFFFFF" >'."\n";
echo "<FONT size=-2>$errstr \Code erreur numéro:$errno</FONT>";
echo '</td>
</tr>'."\n";
}
}
?>
</BODY>
</HTML>
Première question: Comme vous pouvez les informations de chaque serveur sont assignées a des variables directement. Je voudrais savoir si il est possible (je suis sur que oui) et surtout comment lire ces informations dans une base de données ou dans un fichier texte? (j'ai des connaissances et j'utilise déja une base de données sous mysql pour les stats du site)
Deuxième question: J'arrive pas a mettre de couleur en fond de tableau. Comment faut t'il faire? quand je rajoute ce qui est souligné dans le code, la texture se charge mais pas dans le tableau, sur les bordures/traits du tableau. est ce normal?
Troisième question: Le tableau met du temps a se charger (le temps de faire les tests online/offline). Y'a pas moyen qu'il s'affiche tout de suite et que le online/offline s'affiche plus tard? Si c'est possible je pense que ça suppose une grosse modification du code, non?
Voila c'est tout pour l'instant. Je cherche pas forcément des réponses toutezs faites mais plutôt des pistes de travail. Merci d'avance
Message édité par sibbboon le 15-01-2005 à 11:25:06