BUG quand mon php est intégré dans un div en CSS

BUG quand mon php est intégré dans un div en CSS - PHP - Programmation

Marsh Posté le 09-12-2005 à 15:00:59    

Quand je met ma page PHP qui affiche par exemple mes 3 dernieres actus, la bd foire, alors que toute seule, la page marche trés bien.
 
mon code PHP:
 
<?php  
$base = mysql_connect ('localhost', 'root', '');  
mysql_select_db ('cisteme', $base);
 
$sql = 'SELECT idActualite, titreActualite, auteurActualite,dateActualite, contenuActualite, estValideeActualite FROM actualites  ORDER BY dateActualite DESC';
$req = mysql_query($sql);
$nb_actualite = mysql_num_rows($req);
 
 if ($nb_actualite == 0)
  {
    echo 'Aucune actualite dans la base....';
  }
 else
 {
       $req2 = mysql_query($sql);
       $i=3;
      while ($conteur=mysql_fetch_array($req)and(($i!=0)))
      {
       ?><center><?php
                 
            $data =mysql_fetch_array($req2);
 
            if (($data['estValideeActualite']) == 1)
            {
              ?>
              <a href="./voir_actu.php?id=<?php echo $data['idActualite'] ?>">
<div id="actu"><b><center>
              <?php
               echo $data['titreActualite'];
        $i=$i-1;
     ?>
     </div><a/></b></center></div>
     <?php
     
            }
       
      }
    }
  // on libère l'espace mémoire alloué pour cette requête
        //mysql_free_result($req);
  // on ferme la connection à la base de données.  
  mysql_close ();
      ?>
 
 
MERCI de votre aide.

Reply

Marsh Posté le 09-12-2005 à 15:00:59   

Reply

Marsh Posté le 09-12-2005 à 15:05:31    

Code :
  1. <?php 
  2. $base = mysql_connect ('localhost', 'root', ''); 
  3. mysql_select_db ('cisteme', $base);
  4. $sql = 'SELECT idActualite, titreActualite, auteurActualite,dateActualite, contenuActualite, estValideeActualite FROM actualites  ORDER BY dateActualite DESC';
  5. $req = mysql_query($sql);
  6. $nb_actualite = mysql_num_rows($req);
  7. if ($nb_actualite == 0)
  8.   {
  9.     echo 'Aucune actualite dans la base....';
  10.   }
  11. else
  12. {
  13.        $req2 = mysql_query($sql);
  14.        $i=3;
  15.       while ($conteur=mysql_fetch_array($req)and(($i!=0)))
  16.       {
  17.        ?><center><?php
  18.                
  19.             $data =mysql_fetch_array($req2);
  20.             if (($data['estValideeActualite']) == 1)
  21.             {
  22.               ?>
  23.               <a href="./voir_actu.php?id=<?php echo $data['idActualite'] ?>">
  24. <div id="actu"><b><center>
  25.               <?php
  26.                echo $data['titreActualite'];
  27.         $i=$i-1;
  28.      ?>
  29.      </div><a/></b></center></div>
  30.      <?php
  31.    
  32.             }
  33.      
  34.       }
  35.     }
  36.   // on libère l'espace mémoire alloué pour cette requête
  37.         //mysql_free_result($req);
  38.   // on ferme la connection à la base de données.   
  39.   mysql_close ();
  40.       ?>

Reply

Marsh Posté le 09-12-2005 à 15:08:54    

mais c'est quoi cette manie de faire du html dans le php et mettre des <? partout, c'est illisible :)
 
Donc mets ton code html dans une chaine que tu vides à la fin ;) Ca sera plus lisible, et tu gagneras en temps d'exécution :)
 
Sinon c'est exactement le même code qui marche si t'enlève simplement le div??

Reply

Marsh Posté le 09-12-2005 à 15:12:11    

Merci art_dupond, y'a un de ces shmilblik dans le html  :ouch:

Reply

Marsh Posté le 09-12-2005 à 16:11:06    

leflos5 a écrit :

mais c'est quoi cette manie de faire du html dans le php et mettre des <? partout, c'est illisible :)
 
Donc mets ton code html dans une chaine que tu vides à la fin ;) Ca sera plus lisible, et tu gagneras en temps d'exécution :)
 
Sinon c'est exactement le même code qui marche si t'enlève simplement le div??


 
tu peux expliquer un peu plus ca m'interesse cette histoire de chaine et vider a la fin  ;)

Reply

Marsh Posté le 09-12-2005 à 16:19:16    

Code :
  1. $chaine = '<span>';
  2. $chaine.= 'pouet';
  3. $chaine.= '</span>';
  4. echo $chaine;

Reply

Marsh Posté le 09-12-2005 à 16:21:49    

bah en fin de compte question lisibilité et reprise du code je suis pas sure que ca soit mieux, même si c'est peut etre plus rapide question traitement  ;)

Reply

Marsh Posté le 10-12-2005 à 03:08:24    

saxgard a écrit :

bah en fin de compte question lisibilité et reprise du code je suis pas sure que ca soit mieux, même si c'est peut etre plus rapide question traitement  ;)


 
Si t'écris bien le html en indentant, c'est plus clair pour moi :) MAis t'as aussi le droit de faire  

Code :
  1. $chaine="<span>$toto</span>";
  2. $chaine="<span>".$toto."</span>";


 
Plus rapide et pas qu'un peu si t'utilises pas de tampon, parce que sinon le serveur envoit à chaque fois, attendant le traitement, renvoit, un bout, réattend... et au final sur une page qui en local prend 0.05s de traitement, avec du 512 en réception pour le client et du 128 en envoit pour le serveur (test fait) t'as 10s sur le client mais du coup autant de temps où le serveur bosse sur le serveur :) Avec un tampon, qu'il soit artificiel (mon truc) ou non (gandzler, zlib...) tu tombes à moins d'0.5s :)
 
Cet exemple vallait pour un script avec pas mal d'accès à la BD car pas mal de petites requêtes mais sur un BD très petite pourtant et un serveur en idle ;)
 
Donc le php dans l'html c'est bof, c'est illisible pour moi et au delà de ça c'est une erreur de conception assez irrationnelle...

Reply

Marsh Posté le 10-12-2005 à 04:02:02    

leflos5 a écrit :

mais c'est quoi cette manie de faire du html dans le php et mettre des <? partout, c'est illisible :)


C'est sûr.
 

leflos5 a écrit :

Donc mets ton code html dans une chaine que tu vides à la fin ;) Ca sera plus lisible, et tu gagneras en temps d'exécution :)


En théorie, non, faut pas dire n'importe quoi non plus parce que ça nous plais pas.
 
 

Reply

Marsh Posté le 10-12-2005 à 05:24:45    

The-Shadow a écrit :

C'est sûr.
 
 
En théorie, non, faut pas dire n'importe quoi non plus parce que ça nous plais pas.


La théorie c'est pour le temps d'éxécution :??: Parce que vérifie mais pas avec un temps réseau de 0.0001s ;)
En gros en local ça change rien, mais tu peux pas faire un plan sur la comète de la connexion du client, et même si dans un cas précis tu la connais et que ça nécessite pas de prendre soin de ça, c'est pas une raison pour faire le cochon ;)
 
De toutes manière le traitement étant indépendant de l'affichage, le soucis se pose pas  :o  
 
Et juste un détail que j'ai reprécisé après, en utilisant un tampon, ok ça change rien, mais c'est toujours autant caca, illisible et un fichier php "fait" du php pas du html :) Donc faire un fichier php pour avoir 3 instructions php et que du html...
 
C'est pas question d'aimer ou pas, c'est que si on a besoin de faire  

Code :
  1. <a href="<?php echo $lien ?>"><?php echo $libelle ?></a>


c'est top en lisibilité et raisonnement... C'est aussi logique que si j'essayais d'enlever ma roue après avoir dévissé 1 boulon boulon sur les 4  :o  
 
Faut pas mélanger torchon et chiffon  :whistle: Si on fait du php c'est que y'a besoin de traitement, si y'en a pas besoin... c'est du html pur :)
Maintenant le php permet de générer du html après traitement donc faut bien intégrer ça d'une manière ou d'une autre, sauf que le php permet de faire du html dynamique, pas l'inverse... Juste question de logique vu que ça change rien en terme de perf (sauf que le serveur http danse la java avec du php intégré au html et pas l'inverse  :whistle: ).
 
Donc pour moi dans la logique de fonctionnement de tout ça, je traite et je ponds, pas je ponds, je traite, je ponds, je traite...
 
Parce qu'autant tu peux gérer le tampon de sortie de php, autant gérer le tampon de sortie d'un serveur web :??: Donc faire:

Code :
  1. <?php
  2. echo "crotte";
  3. gros_traitement_php();
  4. echo "prout";
  5. gros traitement_php2();
  6. ?>


Ou

Code :
  1. crotte
  2. <?php gros_traitement_php() ?>
  3. prout
  4. <?php gros_traitement_php2() ?>


même combat, le débit du serveur ou client est limité ça foire... Et considérer que la BP sera toujours suffisante est une erreur ;) Que ça soit dans un sens ou l'autre ;) Et les proxies jouent bien leur role tant que y'a de la BP, donc me sors pas que t'as testé avec ton >2Mb :)
 
En les perf je m'en tamponne un peu dans ce débat, juste qu'on perd du temps inutilement en faisant un code pourri ;) Et que ça va quand on a les ressources mais beaucoup d'entre vous devraient tester sur un bon serveur (pour négliger le temps de traitement) mais avec une pauvre connexion de pd2povre des 2 côtés ;) C'est instructif et ça rend humble (pour qui a une conscience autre que la longueur d'un bit :whistle: ) ;)

Reply

Marsh Posté le 10-12-2005 à 05:24:45   

Reply

Marsh Posté le 10-12-2005 à 05:32:53    

C'est bien beau ton grand discours, mais tu as tort, c'est tout.
Oui, le code est dégueulasse, ça c'est vrai et c'est un argument qui se suffit à lui même, pas besoin de sortir des anneries comme "c'est plus rapide". Non seulement c'est moins rapide, mais en plus, ça bouffe de la mémoire inutilement.

Reply

Marsh Posté le 11-12-2005 à 01:36:57    

The-Shadow a écrit :

C'est bien beau ton grand discours, mais tu as tort, c'est tout.
Oui, le code est dégueulasse, ça c'est vrai et c'est un argument qui se suffit à lui même, pas besoin de sortir des anneries comme "c'est plus rapide". Non seulement c'est moins rapide, mais en plus, ça bouffe de la mémoire inutilement.


Je te dis que c'est plus rapide, tampon ou chaine, si y'a des gros traitements qui prennent du temps (style bd le meilleur exemple) :)
 
J'ai pas dit qu'en soit c'est plus rapide, ça l'est si le script envoit par morceaux et doit attendre entre 2 ;)
 
Maintenant pour la mémoire, certes, mais à la limite bouffer 1% de plus et gagner 10% de temps, au final le taux d'occupation est inférieur :) Mais bon je fais juste partager ce que  j'ai déjà testé malgrès moi ;) Si tu veux pas te remettre en question et au moins vérifier ça me regarde pas ;)

Reply

Marsh Posté le 11-12-2005 à 10:44:14    

Listing 1 : Ta solution plus rapide, sauvegarde du texte html dans une variable.

Code :
  1. <?php
  2. ob_start();
  3. function getmicrotime(){ 
  4.     list($usec, $sec) = explode(" ", microtime()); 
  5.     return ((float)$usec + (float)$sec);
  6. }
  7. $time1=getmicrotime();
  8. $variable=' = toto fait du ski';
  9. $texte='';
  10. for ($i=0;$i<200;$i++) {
  11.  $texte.='Je fais un test'.$variable.'<br />';
  12. for ($l=0;$l<500;$l++) {
  13.  if ($l%200) { $texte.=' 200 '; }
  14. }
  15. }
  16. echo $texte;
  17. echo '<hr />'.substr(getmicrotime()-$time1,0,8);
  18. ?>


 
Listing 2:Ma solution plus rapide, inclusion directe du HTML.

Code :
  1. <?php
  2. ob_start();
  3. function getmicrotime(){ 
  4.     list($usec, $sec) = explode(" ", microtime()); 
  5.     return ((float)$usec + (float)$sec);
  6. }
  7. $time1=getmicrotime();
  8. $variable=' = toto fait du ski';
  9. for ($i=0;$i<200;$i++) { ?>
  10.  Je fais un test <?php echo $variable; ?><br />
  11. <?php
  12. for ($l=0;$l<500;$l++) {
  13.  if ($l%200) { ?> 200 <?php }
  14. }
  15. }
  16. echo '<hr />'.substr(getmicrotime()-$time1,0,8);
  17. ?>


 
Bench 1, solution 1 : http://orolam.online.fr/hfr/test/bench.php
Bench 2, solution 2 : http://orolam.online.fr/hfr/test/bench2.php
 
Voilà, testé sur 3 serveurs différents, le résultat est sans appel, TA super solution est 2 fois plus lente que la mienne en temps de génération, pour quelqu'un qui a soit disant testé en situation, je me demande bien sur quoi.  
Tu vas me dire "Ouai gnignin, tu bufferises", bah oui, j'ai jamais dit le contraire, mais c'était pas ça le problème, c'était enregistrement d'une chaine plutot qu'inclusion d'HTML, là, c'est clair, t'as qu'à transférer les benchs sur tes propres serveurs tu verras.  [:airforceone]  

Reply

Marsh Posté le 12-12-2005 à 04:13:51    

The-Shadow a écrit :

Listing 1 : Ta solution plus rapide, sauvegarde du texte html dans une variable.

Code :
  1. <?php
  2. ob_start();
  3. function getmicrotime(){ 
  4.     list($usec, $sec) = explode(" ", microtime()); 
  5.     return ((float)$usec + (float)$sec);
  6. }
  7. $time1=getmicrotime();
  8. $variable=' = toto fait du ski';
  9. $texte='';
  10. for ($i=0;$i<200;$i++) {
  11.  $texte.='Je fais un test'.$variable.'<br />';
  12. for ($l=0;$l<500;$l++) {
  13.  if ($l%200) { $texte.=' 200 '; }
  14. }
  15. }
  16. echo $texte;
  17. echo '<hr />'.substr(getmicrotime()-$time1,0,8);
  18. ?>


 
Listing 2:Ma solution plus rapide, inclusion directe du HTML.

Code :
  1. <?php
  2. ob_start();
  3. function getmicrotime(){ 
  4.     list($usec, $sec) = explode(" ", microtime()); 
  5.     return ((float)$usec + (float)$sec);
  6. }
  7. $time1=getmicrotime();
  8. $variable=' = toto fait du ski';
  9. for ($i=0;$i<200;$i++) { ?>
  10.  Je fais un test <?php echo $variable; ?><br />
  11. <?php
  12. for ($l=0;$l<500;$l++) {
  13.  if ($l%200) { ?> 200 <?php }
  14. }
  15. }
  16. echo '<hr />'.substr(getmicrotime()-$time1,0,8);
  17. ?>


 
Bench 1, solution 1 : http://orolam.online.fr/hfr/test/bench.php
Bench 2, solution 2 : http://orolam.online.fr/hfr/test/bench2.php
 
Voilà, testé sur 3 serveurs différents, le résultat est sans appel, TA super solution est 2 fois plus lente que la mienne en temps de génération, pour quelqu'un qui a soit disant testé en situation, je me demande bien sur quoi.  
Tu vas me dire "Ouai gnignin, tu bufferises", bah oui, j'ai jamais dit le contraire, mais c'était pas ça le problème, c'était enregistrement d'une chaine plutot qu'inclusion d'HTML, là, c'est clair, t'as qu'à transférer les benchs sur tes propres serveurs tu verras.  [:airforceone]


Mais c'est grave là, faut apprendre à lire ;)
Je te parle pas que de chaine seule, j'ai dit qu'avec un tampon ça marche mieux...
Maintenant faut aussi prendre en compte la machine comme la connexion ;)
 
Si t'as une brêle avec de la RAM à plus en pouvoir pour le truc, le facteur limitant est pas la RAM.
Si t'as une bête course mais pas de RAM bah vaut mieux calculer que stocker.
Si t'as 128Kb en emmision mieux vaut cacher.
 
Bref si tu te tires les mamellons sur des machines n'ayant aucune de ces contraintes (cpu, Ram, émission) oui continues à te caresser sans te remettre en cause :) Apprends juste à lire et rajoutes moi un traitement entre les chaines (pas un autre echo hein ;) )
 
Mais si tu testes sur un serveur pas limité en perf mais avec un upload plus que le donwload du client c'est la cata...
 
M'enfin l'adolescence n'a pas de limite d'âge que celle où on arrête de se tirer sur la queue pour l'allonger ;)
Murphy et la confiture aident parfois aussi à comprendre ;) J'ai donné un ca particulier, expliqué si tu sais pas lire parce que Môsieu est un grand de la cat php, j'abdique ;) Amen, Alleluia :jap:  
 
MAis si au passage Môsieur n'a pas une formation sientifique éprouvée, je lui déconseille de faire des stats vu qu'apparement il sait pas isoler les paramètres :whistle:
 
Mais je parlais d'envois sans tampon (parle français moi, je bufferise pas je tamponne :D ) donc si tu me fais ton teste qu'avec des tampons... La rigueur SVP, la rigueur...
 
Edit: au cas où, je parle pas de gagner 0.2s mais en perdre 10 (de secondes ;) ) Et puisque Môsieur bosse qu'avec des connexion de fou, dès que je peux (physiquement parlant) je te montre ce que ça donne parce qu'Apache c'est caca prout pour moi je sais pas comment limiter la BP (si c'est possible) et je veux même pas savoir ;) )


Message édité par leflos5 le 12-12-2005 à 04:20:50
Reply

Marsh Posté le 12-12-2005 à 11:49:41    

Tu es ridicule.
 

Citation :

Donc mets ton code html dans une chaine que tu vides à la fin ;) Ca sera plus lisible, et tu gagneras en temps d'exécution :)


Voilà, c'est ce que tu as dis et c'est ce que je refute et c'est vrai, que ça te touche dans ton orgueil d'ado ou pas, c'est comme ça.
 
Après, pour le reste, les longs discours pour échapper au ridicule, passons...


Message édité par The-Shadow le 12-12-2005 à 11:50:12
Reply

Marsh Posté le 12-12-2005 à 15:12:53    

...

Reply

Marsh Posté le 13-12-2005 à 12:30:29    

numa1985 a écrit :

Quand je met ma page PHP qui affiche par exemple mes 3 dernieres actus, la bd foire, alors que toute seule, la page marche trés bien.


Bon, on va laiser tomber la méga discution autement phylosophique pour poser les question terre à terre de base :
C'est quoi qui décone?
T'as un message d'erreur?
T'as un affichage qui affiche rien?
T'as regardé dans le source de la page si tout été écrit?
C'est quoi le code de la page qui merde et le code de la page qui marche?
...
 
PS : On véra plus tard pour les autres questions.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed