prob en php

prob en php - PHP - Programmation

Marsh Posté le 23-01-2006 à 20:56:56    

Bonjour,
 
Voila j'ai un gros problème en php :  
 
j'ai sur une page :  
 
$num est le nombre de "input type=file" à afficher
 

Code :
  1. <form enctype='multipart/form-data' method='post' action='ajoutPhoto1_.php'>
  2. <?
  3. for ($j=1; $j <= $num; $j++)
  4. {
  5. echo '<input name='."userfile$j".' type=file size=120><br>';
  6. }
  7. ?>
  8. <input type="hidden" name="num" value="<? echo"$num"; ?>">
  9. <input type='Submit' value='  Ajouter !   '  onclick='return testNomFichier(this.form)'>
  10. </form>


 
Jusque là, ca va
 
Passon ensuite à la suite
 
Sur la page ajoutPhoto1_.php :  
 

Code :
  1. <?
  2. for ($p=1; $p <= $num; $p++)
  3. {
  4. echo "$userfile_name"."$p"; //normalement, le script est bcq plus grand mais j'ai réussi à voir ou ca coinçait
  5.                                      // en faite, je n'arrive pas a faire le truc ou c'est pax ex : dans la premiere boucle : $userfile_name1, puis dans la 2eme : $userfile_name2
  6. }
  7. ?>


 
le résultat affiché est : 12
 
alors si quelqu'un pourait m'aider, ce serai sympas ;)
 
Merci d'avance
 
 

Reply

Marsh Posté le 23-01-2006 à 20:56:56   

Reply

Marsh Posté le 23-01-2006 à 21:04:13    

et voici le script qui marche sans le system de boucles ...
 

Code :
  1. $fichier = "$userfile_name";
  2. $tab = split('[/\]',$fichier);
  3. $nb = count($tab) - 1;
  4. $fichier = $tab[$nb];
  5. require('conf.php');
  6. mysql_connect($server, $log, $pass);
  7. mysql_select_db($db);
  8. $requete = mysql_query('SELECT COUNT(*) AS nbPhoto FROM photos_maman WHERE nom = \''.$fichier.'\'');
  9. $list = mysql_fetch_array($requete);
  10. //Up seulement du JPG
  11. if(!preg_match('!\.php!', $fichier))
  12. {
  13.   if($list['nbPhoto'] == 0)
  14.    {
  15.     if(strlen($userfile_name) && file_exists($userfile) && stristr($userfile_name, ".php" ) == "" )
  16.     {
  17.     if(!copy($userfile, $userfile_name))
  18.     echo "<script language='javascript'>alert('une erreur s'est produite pendant le téléchargement.');</script>";
  19.      // un peu de nettoyage peut faire du bien, "des coups que..."
  20.    if(file_exists($userfile))
  21.    unlink($userfile);
  22.          }
  23. mysql_query('INSERT INTO photos_maman VALUES(\'\', \''.$fichier.'\', \''.$_POST['commentaire'].'\',\'2\')');
  24. //On creer la miniature
  25.    $source = imagecreatefromjpeg($fichier);
  26.    $largeur_source = imagesx($source);
  27.    $hauteur_source = imagesy($source);
  28.    $newLargeur = ceil($largeur_source*(600/$hauteur_source));
  29.    $destination = imagecreatetruecolor($newLargeur, 600);
  30. imagecopyresampled($destination, $source, 0, 0, 0, 0, $newLargeur, 600, $largeur_source, $hauteur_source);
  31.                imagejpeg($destination, 'moy_'.$fichier);
  32.    $mini = imagecreatetruecolor(140, 120); // On crée la miniature vide
  33.    $largeur_mini = imagesx($mini);
  34.    $hauteur_mini = imagesy($mini);
  35. imagecopyresampled($mini, $source, 0, 0, 0, 0, $largeur_mini, $hauteur_mini, $largeur_source, $hauteur_source);
  36.    imagejpeg($mini, 'mini_'.$fichier);
  37.   ?>
  38.   <script language="JavaScript">
  39.     alert("L'image a correctement été rajoutée." );
  40.    document.location.href="./ajoutPhoto2.php"
  41.     </script>
  42.   <?
  43.  }
  44.  else
  45.  {
  46.    ?>
  47.  <script language="JavaScript">
  48.  alert("Cette image existe déjà ou a le même nom qu'une autre image." );
  49.  document.location.href="./ajoutPhoto2.php"
  50.  </script>
  51.   <?
  52.  }
  53. }
  54. exit();
  55. mysql_close();


Message édité par osi le 23-01-2006 à 21:05:34
Reply

Marsh Posté le 23-01-2006 à 21:10:26    

Probleme incomprehensible :o

Reply

Marsh Posté le 23-01-2006 à 21:15:31    

ouais je sais ... :s mais à mon avis, c'est tout aussi dure de l'expliquer que de le comprendre lol :s

Reply

Marsh Posté le 23-01-2006 à 22:17:45    

Code :
  1. echo "$userfile_name"."$p";


=

Code :
  1. echo $userfile_name;
  2. echo $p;

Voilà l'erreur.
 
solution 1 : la plus proche du probléme

Code :
  1. echo ${$userfile_name.$i}

(register_global=on)
solution 2 : la meilleure

Code :
  1. echo $_POST[$userfile_name.$i]


ou

Code :
  1. echo $_GET[$userfile_name.$i]

en fonction de l'origine.
 
Dans la solution 1, les {} permettent de dire que le nom de la variable sera le résultat de l'expression qu'est à l'intérieur. Le solution2 dit simplement où on cherche la valeur. Je te laisse lire la documentation de php pour en savoir plus.


Message édité par omega2 le 23-01-2006 à 22:22:59
Reply

Marsh Posté le 23-01-2006 à 22:28:51    

ca ne marche pas  
 
<?
for ($p=1; $p <= $num; $p++)
{
echo ${$userfile_name.$p} ;
}
?>

Reply

Marsh Posté le 23-01-2006 à 22:33:24    

mais si je mets  
 
echo $userfile1_name ;
ou
echo $userfile2_name ;
etc... ca marche

Reply

Marsh Posté le 23-01-2006 à 22:33:57    

il faut mettre $p jsute apres le userfile et avant le _name jcrois ...

Reply

Marsh Posté le 23-01-2006 à 22:35:02    

Si ca ne marche pas, alors c'est que "$userfile_name" ne contient pas la bonne valeur.
Je suis parti de ton code en me disant que tes variables contenaient les bonnes valeurs, donc à toi d'adapter s'il y a besoin.

Reply

Marsh Posté le 24-01-2006 à 10:20:53    

Ben si par exemple je descide d'afficher 2 "input type file", je les rempmlis et sur la 2eme page (la page verif), j'ai ca : echo "$userfile1_name".'<br>';
echo "$userfile2_name";
 
car la premier "input type file" a le nom userfile1
et la 2eme userfile2
 
le problème est de mettre ce chiffre a l'intérieur d'une variable
 
par ex : echo "$userfile$i_name"
sauf que la syntexe est movaise
 
Je sais que normalement le petit $i se met à la fin des variables mais dans mon cas, $i dois se mettre au milieu d'une variable...
 
Me suis-je fais bien comprendre ?
 
A bientot

Reply

Marsh Posté le 24-01-2006 à 10:20:53   

Reply

Marsh Posté le 24-01-2006 à 11:02:01    

Arrête de mettre des " autour des noms de variables, ca ne sert à rien à part rajouter des bugs partout. Et si je t'ai montré deux syntaxes dont une qui permet d'indiquer dynamiquement des noms de variables, c'est pour que ca serve. Si tu relis mes explications et que tu sais ce que fait un "." en php, tu devrais être capable d'y arriver sans mal. Si tu ne comprends pas mes explications, demande et je réexpliquerais et si tu ne sais pas ce que fait un point en php, commence par (re)lire des tutoriels sur php.
 
Si je ne te donne pas directement la réponse c'est pour que t'aprenne à t'en sortir, ca te sera vraiment bénéfique si tu veux continuer à développer en php.

Reply

Marsh Posté le 24-01-2006 à 17:09:02    

Mais avant tout, il y quelque chose qui coince :  
 
Si je met :  
 

Code :
  1. <?
  2. $p = "5";
  3. $test = "voici";
  4. echo "$test"."$p".'<br>'; // ceci affichera : voici5
  5. $i = '1';
  6. echo "$userfile1".'<br>'; // ceci affichera : (par ex : /tmp/phpzNtBNN)
  7. echo "$userfile"."$i".'<br>'; // ceci devrait logiquement afficher la même chose que la ligne d'au dessu et ca affiche : 1
  8. ?>


 
Là, il y a quelque chose qui m'échape ...

Reply

Marsh Posté le 24-01-2006 à 17:30:10    

le premier c'est $userfile1 et sur la deuxième ligne le nom de la variable est $userfile (sans le '1') donc ça risque pas de marcher (si j'ai bien compris le problème).
 
edit : je passais là par hasard j'ai pas trop lu l'histoire des posts précedents..


Message édité par Groomy le 24-01-2006 à 17:32:33

---------------
Le matin, j'émerge de mes rêves, le plus heureux des anges. Je me couche le soir, un vrai salaud. Qu'ai-je donc fait entre-temps ? J'ai fréquenté les hommes et fouillé dans leur merde.
Reply

Sujets relatifs:

Leave a Replay

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