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

  FORUM HardWare.fr
  Programmation
  PHP

  undefined offset

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

undefined offset

n°1061018
JustOne72
Posté le 26-04-2005 à 11:40:24  profilanswer
 

Voila j'obtiens des erreurs que j'ai du mal a comprendre alors j'espere que vous pouvez m'aider a les résoudre!
 
J'obtiens des undefined offset sur les lignes suivantes :
$line_dir[$level].= "
$line_file[$level].= "
$line = $the_line_dir[0] . $the_line_file[0];
$added_line = $the_line_dir[$j] . $the_line_file[$j];
 
Savez pkoi? Moi j'ai du mal a saisir ce que signifie l'erreur undefined offset!
 
Merci a tous

mood
Publicité
Posté le 26-04-2005 à 11:40:24  profilanswer
 

n°1061028
nORKy
Grmmph...
Posté le 26-04-2005 à 11:50:46  profilanswer
 

tu as tester la valeur de $level ??
de $j ??

n°1061042
JustOne72
Posté le 26-04-2005 à 11:59:40  profilanswer
 

en fait je pense que ca ne fonctionne pas car $line_file et $line_dir ne sont pas initialisées!!!
 
mais le truc c'est que je ne sais pas a quoi les initialiser!! j'ai effectué plusieurs tentatives mais rien de concluant...
 
HELP!!!

n°1061047
nORKy
Grmmph...
Posté le 26-04-2005 à 12:06:55  profilanswer
 

beh, c'est a toi de savoir, on peut pas savoir à ta place ce que tu veut mettre.
déjà, $line_file = array(); $line_dir = array(); m'a l'air approprié à ton cas

n°1061050
JustOne72
Posté le 26-04-2005 à 12:09:37  profilanswer
 

Je comprens pas!!
 
Quoi que je mette pour $line_file et $line_dir j'ai toujours les memes erreurs!!
 
Notice: Undefined variable: line_file  
Notice: Undefined variable: line_dir
 
!!!

n°1061063
nORKy
Grmmph...
Posté le 26-04-2005 à 12:16:05  profilanswer
 

tu utilises line_file et line_dir dans ton code comme si c'était des tableaux.
Dans ce cas, initialise des tableaux :
$line_file = array();
$line_dir = array();
 
sinon, post un peu + de ton code, car la, c'est pas facile de tout savoir

n°1061076
JustOne72
Posté le 26-04-2005 à 12:26:04  profilanswer
 

nORKy a écrit :

tu utilises line_file et line_dir dans ton code comme si c'était des tableaux.
Dans ce cas, initialise des tableaux :
$line_file = array();
$line_dir = array();
 
sinon, post un peu + de ton code, car la, c'est pas facile de tout savoir


 
mon code est assez long alors jvé essayer d'envoyer juste ce qu'il faut
 
pour ce qui est "initialise tes tableaux" c'est ce que j'ai fais et ca ne fonctionne tjs pas (tjs la meme erreur)!!!
 
erreur ligne 36!!!

Code :
  1. function p_get_file($directory,$level){
  2. // $directory = str_replace (" ", "%20", $directory);
  3. $nb_file = get_nb_file($directory);
  4. $i = 0;
  5. $handle=opendir($directory);
  6. while ($file = readdir($handle)) {
  7.  if ($file != "." && $file != ".." ) {   // Que des fichiers
  8.   if (p_is_file($file)){
  9.    $i++;
  10.    $file_name = $file;
  11.    $file_path = $directory . $file;
  12.    $file_size = filesize($file_path);
  13.    $file_size = $file_size / 1000;
  14.    $file_size = $file_size . " Ko";
  15.    if (p_is_last($i,$nb_file))
  16.     $image_l="_icon/b_vert_last_file.gif";
  17.    else
  18.     $image_l="_icon/b_vert_file.gif";
  19.    $image = get_type($file_name);
  20.    $b_vert = "";
  21.    $b_vert = p_level($b_vert, $level);
  22.    $line_file[$level].= "
  23.       <tr align=\"left\" valign=\"middle\">
  24.         <td valign=\"middle\" colspan=\"2\">$b_vert<font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><img src=\"$image_l\" width=\"15\" height=\"20\" align=\"absmiddle\" border=\"0\"><a href=\"$file_path\" target=\"_blank\">$image</a>&nbsp;<a href=\"$file_path\" target=\"_blank\">$file_name</a></font></td>
  25.         <td width=\"100\" align=\"left\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\">$file_size</font></td>
  26.       </tr>
  27.    ";
  28.   }
  29.  }
  30. }
  31. closedir($handle);
  32. return($line_file);
  33. }


 
 
ici erreur ligne 25!!!

Code :
  1. function p_get_dir($directory,$level,$dir_no){
  2. // $directory = str_replace (" ", "%20", $directory);
  3. $arr_dir = explode ("/",$directory);
  4. $nb_dir = get_nb_all($directory);
  5. $i = 0;
  6. $handle=opendir($directory);
  7. while ($file = readdir($handle)) {
  8.  if ($file != "." && $file != ".." ){
  9.   if (!p_is_file($file)){
  10.    $i++;
  11.    $file_name = $file;
  12.    $new_dir = $directory . $file_name . "/";
  13.    if (p_is_last($i,$nb_dir))
  14.     if ($file_name == $dir_no)
  15.      $image="<img src=\"_icon/b_last_dir_open.gif\" width=\"15\" height=\"20\" align=\"absmiddle\" border=\"0\">";
  16.     else
  17.      $image="<img src=\"_icon/b_last_dir_closed.gif\" width=\"15\" height=\"20\" align=\"absmiddle\" border=\"0\">";
  18.    else
  19.     if ($file_name == $dir_no)
  20.      $image="<img src=\"_icon/b_dir_open.gif\" width=\"15\" height=\"20\" align=\"absmiddle\" border=\"0\">";
  21.     else
  22.      $image="<img src=\"_icon/b_dir_closed.gif\" width=\"15\" height=\"20\" align=\"absmiddle\" border=\"0\">";
  23.    $image = p_level($image,$level);
  24.    $line_dir[$level].= "
  25.       <tr align=\"left\" valign=\"middle\">
  26.         <td valign=\"middle\" colspan=\"3\"><a href=\"index.php?directory=$new_dir\">$image</a><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=\"2\"><a href=\"index.php?directory=$new_dir\"><img src=\"_icon/i_dir.gif\" width=\"15\" height=\"13\" align=\"absmiddle\" border=\"0\"></a>&nbsp;<a href=\"index.php?directory=$new_dir\">$file_name</a></font></td>
  27.       </tr>
  28.    ";
  29.   }
  30.  }
  31.  if ($file == $dir_no){
  32.    $line_dir[$level].= "x?x?x" . $level . "x?x?x";
  33.  }
  34. }
  35. closedir($handle);
  36. return($line_dir);
  37. }


 
Di moi si ce n'est pas assez clair...
 
Merci pour ton aide :jap:

n°1061154
JustOne72
Posté le 26-04-2005 à 13:33:22  profilanswer
 

HELP!!
 
Je ne sais plus quoi faire pour trouver le problème...

n°1061174
nORKy
Grmmph...
Posté le 26-04-2005 à 13:40:34  profilanswer
 

il faut que tu checks tout ce que contiennent tes variables qui aurait un rapport de pres ou de loin à ces erreurs.
Car je viens de faire des tests chez moi, je n'ai aucune erreur. Tout ce que tu as écris est valid.
En initialisant rien du tout, j'ai le droit de faire un $line_file[53] .= "toto";
car print_r($line_file); me renvoi :
Array ( [53] => toto )
 
il faut verifier ce que contienne toutes tes variables à mon avis

n°1061221
JustOne72
Posté le 26-04-2005 à 14:07:18  profilanswer
 

nORKy a écrit :

il faut que tu checks tout ce que contiennent tes variables qui aurait un rapport de pres ou de loin à ces erreurs.
Car je viens de faire des tests chez moi, je n'ai aucune erreur. Tout ce que tu as écris est valid.
En initialisant rien du tout, j'ai le droit de faire un $line_file[53] .= "toto";
car print_r($line_file); me renvoi :
Array ( [53] => toto )
 
il faut verifier ce que contienne toutes tes variables à mon avis


 
j'utilise ces variables dans les fonctions précedemment citées et aussi ici :

Code :
  1. // traitement directory
  2. // $arr_dir[0] = folders
  3. $arr_dir = explode ("/",$directory);
  4. $level = sizeof($arr_dir)-2;
  5. $cpt = 1;
  6. $j=0;
  7. while ($j <= $level){
  8. $dir_cur = $dir_cur . $arr_dir[$j] . "/";
  9. $dir_no = $arr_dir[$j+1];
  10. $line_dir = p_get_dir($dir_cur, $j, $dir_no,$cpt);
  11. $line_file = p_get_file($dir_cur,$j,$cpt);
  12. if ($line_dir[$j] != "" )
  13.  $the_line_dir[$j] = $line_dir[$j];
  14. if ($line_file[$j] != "" )
  15.  $the_line_file[$j] = $line_file[$j];
  16. $j++;
  17. }
  18. $j=1;
  19. $line = $the_line_dir[0] . $the_line_file[0];
  20. while ($j <= $level){
  21. // echo "$the_line_dir[$j]";
  22. // echo "$the_line_file[$j]";
  23. $rep = $j - 1;
  24. $replace_str = "x?x?x" . $rep . "x?x?x";
  25. $added_line = $the_line_dir[$j] . $the_line_file[$j];
  26. $line = str_replace ($replace_str, $added_line, $line);
  27. $j++;
  28. }
  29. echo "$line";


Je ne vois pa ou est l'erreur
 
Si qqn a une idée merci de me le dire parce que la je suis a bout de nerf!! lol

mood
Publicité
Posté le 26-04-2005 à 14:07:18  profilanswer
 

n°1061250
nORKy
Grmmph...
Posté le 26-04-2005 à 14:23:17  profilanswer
 

déjà, utilise plutot count au lieu de sizeof :
$level = count($arr_dir)-2;
 
p_get_* renvoit-ils bient des tableaux ?
 
je suis un peu perdu la... y'a des $*_line_* un peu partout ;-)
au pire, si tu m'envoi tout donc code, je trouverais le prob, mais la, je m'emmelle !

n°1061289
cerel
Posté le 26-04-2005 à 14:42:55  profilanswer
 

Au fait, juste en passant, les "Notice" ne sont pas des erreurs, hein http://forum-images.hardware.fr/images/perso/itm.gif
 
Si neanmoins tu etais deja au courant, et que tu veux un code propre de chez propre, je ne peux que te feliciter et t'encourager dans cette voie qui consiste a eradiquer les notices.


Message édité par cerel le 26-04-2005 à 14:46:06
n°1061293
JustOne72
Posté le 26-04-2005 à 14:44:56  profilanswer
 

Oui je sais pour les notices mais le probleme c'est que c'est ligne s'affiche ce qui ne fait pas terrible pour les utilisateurs!
 
PS : nORKy je t'ai envoyé un MP

n°1062229
nORKy
Grmmph...
Posté le 27-04-2005 à 09:25:03  profilanswer
 

j'ai testé ton code. Je suis usr php 4.1.2 et je n'ai aucune erreur. Ceci est pt etre dût a nos configuration de php différentes.
 
Par contre, je crois que j'ai trouvé d'ou vient le prob.
Tu as une des fonctions qui renvoi des tableaux avec des entrées qui ne commenses pas par 0.
Je m'explique :
A ta fonction p_get_file (par exemple, le cas est present aussi sur  p_get_dir et pt etre d'autres), tu lui passes une variable $level. Cette veriable n'est pas forcément à 0 (chez moi, elle est a 1) ; et avec cette variable tu remplis un tableau avec
$line_file[$level]. Comme $level ne varie jamais, tu renvois un tableau avec :
array([1] => "bidule" )
et non pas array([0] => "", [1] => "bidule" );
Hors, un tableau commence toujours à l'offset 0 !
donc, en thérorie, si après tu tapes sur $line[1], tu vas  
taper sur l'offset 1 et non pas à l'entré "1";
hors, dans ton cas, l'offset 1 n'existe pas; puisque le tableau n'a qu'une seule entrée et comme a 0.
 
Donc, plusieurs solution, soit tu tapes sur $line_file["$level"]
soit, tu changes tes fonctions pour renvoyé juste une chaine de caratères sans tableau, car je ne vois pas l'interet de renvoyé un tableau avec toujours une seule ligne de remplis (surtout quand on sait laquelle)

n°1062233
nORKy
Grmmph...
Posté le 27-04-2005 à 09:26:38  profilanswer
 

En gros, tu devrais revoir commence marche les tableaux en php.
Tu ne fais pas la différence entre les tableaux, et les tableaux associatifs.

n°1062302
JustOne72
Posté le 27-04-2005 à 10:12:41  profilanswer
 

Et pour toi ca vient de la si j'ai
line_file et line_dir : undefined variable
alors qu'au début j'ai écris $line_file = array(); et line_dir = array();
???

n°1062449
nORKy
Grmmph...
Posté le 27-04-2005 à 11:13:05  profilanswer
 

oui


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

  undefined offset

 

Sujets relatifs
message "Undefined offset"Notice : Undefined Offset ??? [Resolu]
[C] Formule pour trouver un offseterreur "undefined index" lors controle checkbox
Call to undefined function: mb_strtoupper()??cache à cocher vide renvoi Undefined index: Loisirs7
Undefined reference Undefined offset: 0 panier.php on line 86
probleme erreur Undefined offset variables de session[Erreur php] Undefined offset
Plus de sujets relatifs à : undefined offset


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