[php] blem de je sais pas trop koi :( de longueur il me semble ...

blem de je sais pas trop koi :( de longueur il me semble ... [php] - Programmation

Marsh Posté le 19-09-2001 à 15:04:49    

c un peu compliqué :D
 
 
j'ai une page d'index (d'administration d'un site ;)) qui se charge de charger différentes pages (contenue dans différents fichiers) grace à des variables dans l'adresse.
 :pt1cable: bon un expl ça va mieux :D :
 

  • index.php ---> affiche la page index.pcs.php (le .pcs c pour identifier le site, enfin c tout un bordel :d)
  • index.php?page=liens ---> affiche la page liens.pcs.php
  • index.php?page=divers ---> affiche la page divers.pcs.php
  • index.php?page=news ---> affiche la page news.pcs.php

...
 
en gros je fais un include($page.'.pcs.php');
 
 
Mais ça c pour le corp principal des page "généré", pour ceux qui y a autours j'utilise le même principe. Voila en gros ce que donne ma séquence de chargement des différents trucs :
$exta="pcs";
echo "<HTML>\n<HEAD>\n<TITLE>$title</TITLE>\n";
include('head.'.$exta.'.php');
echo "\n</HEAD>\n";
include('body.'.$exta.'.php');
echo "\n";
include('ht.'.$exta.'.php');
echo "\n\n\n\n\n\n\n";
 
if ($page =='') {
  $page = 'index';
}
 
switch ($page) {
 case 'index':
 include($page.'.'.$exta.'.php');
 break;
 case 'options':
 include($page.'.'.$exta.'.php');
 break;
 case 'liens':
 include($page.'.'.$exta.'.php');
 break;
 case 'merci':
 include($page.'.'.$exta.'.php');
 break;
 case 'info':
 include($page.'.'.$exta.'.php');
 break;
}
 
echo "\n\n\n\n\n\n\n";
include('bs.'.$exta.'.php');
echo "\n</BODY>\n</HTML>";

 
 
Voila pour le dévellopement de ma situation :) passont à mon blem :D
 
Pour pouvoir changer des liens (pour l'instant c la seul page de faite) par la base MySQL, je fait donc une page qui le propose, je commence les différentes parti de la prog (modifier, supprimmer, rendre visible, ajouter un liens).
C action ce passe toujours sur la même page mais je la charge avec une variable d'adresse en plus, par expl :

  • index.php?page=liens&type=edit ---> pour éditer un liens
  • index.php?page=liens&type=suppr ---> pour supprimer un liens
  • index.php?page=liens&type=suba ---> pour ajouter un liens

...
 
donc dans mon fichier liens.pcs.php au début j'ai (outre plusieurs syteme d'identification et de sécurité, c une page d'admin, faut pas oublier :D) j'ai donc un switch sur la variable $type :
switch ($type) {
 case 'suba':
 .
 .
 .
 break;
 case 'edit':
 .
 .
 .
 break;
 case 'suppr':
 .
 .
 .
 break;
 case 'visu':
 .
 .
 .
 break;
}

 
(les ... c pour couper le code :D je le mettrais si vous pensez que ça peut venir de la ;))
 
Seulement, une fois programmer tous ces fonctions, la page ne charge qu'un bout :??: et arrête de ce charger au bout d'à peu près 3800-4000 caractères alors que sans ce switch y'a pas de blem :) mais pas de fonctions non plus :(
De pleus, quand le chargement de la page s'arrête, c toujours exactement au même endroits (suivant la version de la page en javascript ou non) et en plus elle ne s'arrête même avant le chargement de liens.pcs.php
 
 
Alors je comprend po trop, a priori y'a pas d'erreur dans le switch et dans les autres bout de pages chargé avant y'a aucune erreur, sur ;)
 
 
 
Vous avez pas une idée ? j'avais pensez à la longueur du script php et je sais plus quelle est la fonction qui permet d'agrandire c grandeur limite (ou un truc dans le genre :D).
 
 
 :??:  :??:  :??:

Reply

Marsh Posté le 19-09-2001 à 15:04:49   

Reply

Marsh Posté le 19-09-2001 à 15:19:56    

Je pige pas tout ton problème, et faudrait filer une URL histoire de tester.. et peut être tout le code ça m'a l'air sacrément tordu ton histoire..
Pour la longueur, il fait combien de Ko ton script ?
 
par contre histoire d'éviter les commandes inutiles je change ça :
switch ($page) {  
case 'index':  
include($page.'.'.$exta.'.php');  
break;  
case 'options':  
include($page.'.'.$exta.'.php');  
break;  
case 'liens':  
include($page.'.'.$exta.'.php');  
break;  
case 'merci':  
include($page.'.'.$exta.'.php');  
break;  
case 'info':  
include($page.'.'.$exta.'.php');  
break;  
}

 
par  
if (isset($page)) include ("$page.$exta.php" );
else include ("index.$exta.php" );


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 19-09-2001 à 15:39:00    

je peux pas l'u/l (je bosse sur un serveur interne) la, trop de blem pour changer les droits d'acces, la base à creer et tous ça :D
 
Voir tout mon code ? pt1, ça va être chaud ça :D
 
voila le code de liens.pcs.php (attention, c un gros bordel :D), pour precisions, en faite ma page c pas index.php mais index2.php ;) :

<?php
switch ($ok) {
 case 1:
 if($okpass=='XXX') {
   $ok=1;
 }else{
   echo "Cette page ne peut être afficher seul !";
   exit;
 }
 break;
 default:
  echo "Cette page ne peut être afficher seul !";
  exit;
}
 
switch ($type) {
 case 'suba':
  $destination="/XXX/image";
  if ($userfile=="none" ) {
    echo "<h2><font face=arial>Vous n'avez pas sélectionné de fichier.</font></h2>";
  }
  if ($userfile!="none" && $userfile_size!=0) {
    $userfile=stripslashes($userfile);
    if (!copy($userfile, "$destination/liens_$userfile_name" )) {
      echo "<br>Probleme de transfert !<br>";
    }
  }
  $sql="INSERT INTO liens VALUES ( '', '$url', '$userfile_name', '$comment', '0', '2')";
  if(!$r=mysql_query($sql, $db)) {
    die("Erreur de connection à la table !" );
  }
 break;
 case 'edit':
  $sql="SELECT * FROM liens WHERE lid=$lid";
  if(!$r=mysql_query($sql, $db)) {
    die("Erreur de connection à la table !" );
  }else{
    if (($total=mysql_num_rows($r))=="0" ) {
      echo "Liens inexistant.";
    }else{
      $liens=mysql_fetch_array($r)
?>
<CENTER>
<H3><b><u>Editer un lien :</u></b></H3><BR>
<form ENCTYPE="multipart/form-data" method="post" action="index2.php?page=liens&type=subb&lid=<?php echo $liens[lid] ?>&adminpass=marge&id=<?php echo$id ?>&psd=<?php echo $psd ?><?php if ($psd=='Deadog') { echo "&passe=$passe"; } ?>&js=<?php echo $js ?>#deb">
<table border=0>
<tr><td align=right><b>URL : </b></td><td align=left><input type="text" name="url" value="<?php echo $liens[url] ?>"> <a href="<?php echo $liens[url] ?>"><?php echo $liens[url] ?></a></td></tr>
<tr><td align=right><b>Commentaire : </b></td><td align=left><input type="text" name="comment" value="<?php echo $liens[texte] ?>"> <?php echo $liens[texte] ?></td></tr>
<tr><td align=right><b>Image : </b></td><td align=left><table border=0 cellspacing="0" cellpadding="0"><tr><td valign=center align=left><INPUT NAME="userfile" TYPE="file" size="20">
<input type="hidden" name="action" value="add">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000"> </td><td><img src="../image/liens_<?php echo $liens[image] ?>" align=center></td></tr></table></td></tr>
<tr><td> </td><td align=center>(Si vous ne mettez rien, l'image sera conservé)</td></tr>
</table><BR>
<input type="submit" name="Submit" value="Valider" class="input">
</center>
<?php
    }
  }
  echo "\n\n\n\n\n\n\n";
  include('bs.'.$exta.'.php');
  echo "\n</BODY>\n</HTML>";
  unset($ok);
  unset($okpass);
  mysql_close();
  exit;
 break;
 case 'suppr':
  $sql="SELECT * FROM liens WHERE lid=$lid";
  if(!r=mysql_query($sql, $db)) {
    die("Erreur de connection à la table !" );
  }else{
    if (($total=mysql_num_rows($r))=="0" ) {
      echo "Liens inexistant.";
    }else{
      $image=mysql_fetch_array($r);
      unlink("../image/liens_$image[image]" );
      $sql="DELETE FROM liens WHERE lid=$lid";
      if(!$r=mysql_query($sql, $db)) {
 die("Erreur de connection à la table !" );
      }
    }
  }
 break;
 case 'visu':
  $sql="SELECT * FROM liens WHERE lid=$lid";
  if(!$r=mysql_query($sql, $db)) {
    die("Erreur de connection à la table !" );
  }else{
    if (($total=mysql_num_rows($r))=="0" ) {
      echo "Liens inexistant.";
    }else{
      $liens=mysql_fetch_array($r);
      switch ($liens[visible]) {
       case 2:
       $rper='1';
       break;
       default:
        $rper='2';
      }
      $sql="UPDATE liens SET visible = '$rper'";
      if ((!$r=mysql_query($sql, $db)) {
        die("Erreur de connection à la table !" ); }
    }
  }
 break;
}
 
?>
 
<a name="deb"></a>
<CENTER>
<H3><b><u>Liens actuel :</u></b></H3><BR>
<table border=0 align=center>
 
<?php
 
$sql="SELECT * FROM liens WHERE visible>=1 ORDER BY lid";
if(!$r=mysql_query($sql, $db)) {
  die("Erreur de connection à la table !" );
}else{
  if (($total=mysql_num_rows($r))=="0" ) {
    echo "Pas de liens d'enregistré.";
  }else{
    while ($liens=mysql_fetch_array($r)) {
  switch ($liens[visible]) {
   case 2:
   $visi="<a href=\"index2.php?page=liens&type=visu&lid=$liens[lid]&adminpass=marge&id=$id&psd=$psd";
  if ($psd=='Deadog') {
    echo "&passe=$passe";
  }
  echo "&js=$js#deb\">Rendre visible au public</a>   <BR><BR>   <a href=\"../index.php?page=liens&testouille=1&testpass=bart\" target=\"_blank\">Voir en test</a>";
   break;
   default:
    $visi="<a href=\"index2.php?page=liens&type=visu&lid=$liens[lid]&adminpass=marge&id=$id&psd=$psd";
  if ($psd=='Deadog') {
    echo "&passe=$passe";
  }
  echo "&js=$js#deb\">Rendre invisible au public</a>";
  }
  echo "<TR><TD> </TD><TD> </TD><TD> </TD><TD> </TD></TR>";
         echo "<TR><TD align=center><a href=\"$liens[url]\" target=\"_blank\"><img src=\"../image/liens_$liens[image]\" border=0><br>$liens[url]</a></td><td align=right><div align=center valign=center> $liens[texte]</div>\n</td><td width=50> </td><TD><table border=1 bgcolor=#CCCCCC bordercolor=#000000 cellspacing=\"0\" cellpadding=\"1\" align=center valign=center width=100%><tr><td align=center valign=center><BR>   <a href=\"index2.php?page=liens&type=edit&lid=$liens[lid]&adminpass=marge&id=$id&psd=$psd";
  if ($psd=='Deadog') {
    echo "&passe=$passe";
  }
  echo "&js=$js#deb\">Editer</a>   <br><br>   <a href=\"index2.php?page=liens&type=suppr&lid=$liens[lid]&adminpass=marge&id=$id&psd=$psd";
  if ($psd=='Deadog') {
    echo "&passe=$passe";
  }
  echo "&js=$js#deb\">Supprimer</a>   <BR><BR></td><td align=center valign=center><BR>   <b><u>Visibilité :</u></b>   <br><br>  &nb
sp;$visi   <BR><BR></td></tr></tabl
e></td></tr>";
    }
  }
}
?>
</TABLE>
<BR><BR><BR><BR><BR>
<H3><b><u>Ajouter un nouveau lien :</u></b></H3><BR>
<form ENCTYPE="multipart/form-data" method="post" action="index2.php?page=liens&type=suba&adminpass=marge&id=<?php echo$id ?>&psd=<?php echo $psd ?><?php if ($psd=='Deadog') { echo "&passe=$passe"; } ?>&js=<?php echo $js ?>#deb">
<table border=0>
<tr><td align=right><b>URL : </b></td><td align=left><input type="text" name="url"></td></tr>
<tr><td align=right><b>Commentaire : </b></td><td align=left><input type="text" name="comment"></td></tr>
<tr><td align=right><b>Image : </b></td><td align=left><INPUT NAME="userfile" TYPE="file" size="20">
<input type="hidden" name="action" value="add">
<INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="10000000"></td></tr>
<tr><td> </td><td align=center>(le fichier sera renommer "liens_$file"<br>dans le repertoire "/image" )</td></tr>
</table><BR>
<input type="submit" name="Submit" value="Valider" class="input">
</center>

 
(les XXX c les truc sensible ;))
 
 
 
J'ai calculé la taille des différents fichiers (sous un system windows, sachant qu'en vraie le serveur est sur linux et donc il y a un décalage de qll octet par fichiers sur linux, mais c faible ;)) :

  • index2.php : 1.856 octets
  • config.inc : 660 octets
  • head.pcs.php : 5.203 octets
  • body.pcs.php : 330 octets
  • ht.pcs.php : 5.834 octets
  • liens.pcs.php : 6.955 octets avec le switch
  • liens.pcs.php : 3.538 octets sans le switch
  • bs.pcs.php : 1.693 octets


 
 
Pour ton code, je préfère garder le miens :D en faite il était comme tu me porpose avant, mais je l'ai changer pour pouvoir contrôler quel pages doivent êtres afficher ;)

Reply

Marsh Posté le 19-09-2001 à 15:42:05    

ah oui :D au total :
 

  • 22531 avec le switch
  • 19114 sans le switch


 :jap:

Reply

Marsh Posté le 19-09-2001 à 19:17:36    

bon, si tu veux continuer à coder comme un cochon c'est ton droit, par contre les if avec un die après, faut pas s'étonner que ton script s'arrête (donc à mon avis une erreur de query).
 
if(!$r=mysql_query($sql, $db)) {
   die("Erreur de connection à la table !" );
 }

 
perso (et ça n'engage que moi) je trouve ton script hyper mal codé, si tu es un fan des switch, plutot que d'alourdir ta page, utilise des tableaux, fais des include, mais pour ce truc plutôt simple tu te complique vachement le travail
 
Bon courage :hello:


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Sujets relatifs:

Leave a Replay

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