Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
703 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation de sql en php + problème php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utilisation de sql en php + problème php

n°951951
sibbboon
Posté le 12-01-2005 à 20:31:07  profilanswer
 

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:
 

Citation :

<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 '&nbsp;'."\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 = '&gt;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
mood
Publicité
Posté le 12-01-2005 à 20:31:07  profilanswer
 

n°952087
sibbboon
Posté le 12-01-2005 à 23:49:58  profilanswer
 

up

n°952139
AlphaZone
Posté le 13-01-2005 à 07:27:50  profilanswer
 

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.

n°952228
sibbboon
Posté le 13-01-2005 à 11:27:18  profilanswer
 

ok merci par contre pour la 3 c'est ce qu'il se passe en fait

n°952303
AlphaZone
Posté le 13-01-2005 à 13:03:59  profilanswer
 

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.


Message édité par AlphaZone le 13-01-2005 à 13:08:06
n°952814
cerel
Posté le 14-01-2005 à 01:02:32  profilanswer
 

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

n°952864
sibbboon
Posté le 14-01-2005 à 07:23:07  profilanswer
 

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

n°953363
sibbboon
Posté le 14-01-2005 à 21:36:21  profilanswer
 

Je fais des recherches sur la solution de cerel et je vois pas trop comment mettre ça en oeuvre quelqu'un voit?

n°953379
cerel
Posté le 14-01-2005 à 21:52:44  profilanswer
 

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.

n°953484
sibbboon
Posté le 15-01-2005 à 01:43:00  profilanswer
 

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>
<body>
<?php
header("Content-type: image/gif" );
 $ip=$_REQUEST["ip"];  
 $port=$_REQUEST["port"];
 if ( @fsockopen( $ip, $port, $errno, $errstr, 0.2) )
            {$image = "online.gif";}
            else
            {$image ="offline.gif";}
 readfile($image);
?>
</body>
</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;
$server[$i]['addr'] = '***.***.***.***';
$server[$i]['login'] = '...'; etc...


 
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 !!!

mood
Publicité
Posté le 15-01-2005 à 01:43:00  profilanswer
 

n°953492
cerel
Posté le 15-01-2005 à 02:59:40  profilanswer
 

sibbboon a écrit :

[...]
et voila image.php  

Citation :

<html>
<body>
<?php
header("Content-type: image/gif" );
 $ip=$_REQUEST["ip"];  
 $port=$_REQUEST["port"];
 if ( @fsockopen( $ip, $port, $errno, $errstr, 0.2) )
            {$image = "online.gif";}
            else
            {$image ="offline.gif";}
 readfile($image);
?>
</body>
</html>




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:
 

Citation :

$server[$i]['port'] = 21;
$server[$i]['addr'] = '***.***.***.***';
$server[$i]['login'] = '...'; etc...


 
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 !!!


 
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) {
  echo "
<img src=\"image.php?ip=$srv[addr]&port=$srv[port]\">";
}



 
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.


Message édité par cerel le 15-01-2005 à 03:00:29
n°953526
sibbboon
Posté le 15-01-2005 à 11:24:23  profilanswer
 

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

n°953543
cerel
Posté le 15-01-2005 à 12:46:22  profilanswer
 

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.

n°953545
KangOl
Profil : pointeur
Posté le 15-01-2005 à 12:59:09  profilanswer
 

Code :
  1. <meta http-equiv="Pragma" content="no-cache" />
  2. <meta http-equiv="Cache-Control" content="no-cache, must-revalidate" />


 
a mettre dans le <head> ;)


---------------
Nos estans firs di nosse pitite patreye...
n°953550
cerel
Posté le 15-01-2005 à 13:33:00  profilanswer
 

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 :
  1. // Date in the past
  2. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT" );
  3. // always modified
  4. header("Last-Modified: " . gmdate("D, d M Y H:i:s" ) . " GMT" );
  5. // HTTP/1.1
  6. header("Cache-Control: no-store, no-cache, must-revalidate" );
  7. header("Cache-Control: post-check=0, pre-check=0", false);
  8. // HTTP/1.0
  9. header("Pragma: no-cache" );

n°953551
sibbboon
Posté le 15-01-2005 à 13:41:46  profilanswer
 

Merci beaucoup, ça marche, tu gère mec il me reste plus qu'a vérifier les histoires de caches et c'est bon !!!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Utilisation de sql en php + problème php

 

Sujets relatifs
Libraire OpenSSL - Problème d'utilisationProblème d'utilisation des ressources avec l'editeur de VC++.NET :'(
Problème d'utilisation de PEAR::DBProbleme d'utilisation des variables je crois (PHP + SVG)
CVI probleme d'utilisation des API windowsUtilisation de la fonction QueryPerformanceFrequency probleme ....
Problème d'espace pile avec l'utilisation de RunSqlProblème : Utilisation sous Unix de fichiers écrits sous Windows
Probleme d utilisation d une DLL externeUtilisation d'une union : probleme
Plus de sujets relatifs à : Utilisation de sql en php + problème php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR