[php] concaténation de variables

concaténation de variables [php] - Programmation

Marsh Posté le 18-01-2001 à 13:03:53    

Bonjour,
voila, je récupère plusieurs variables,depuis un formulaire, dont le nom est généré automatiquement : plage1, plage2, plage3 etc.. qui contiennent des titres de morceaux.
et je voudarais utiliser ces variables dans une boucle genre :ss
 
for($i=1,$i<=20;$i++)
{
 echo($"plage$i" ); //je veux afficher le titre du morceau
}
 
mais ça marche pas. J'ai essayé $plage.$i, $"plage".$i et toujours rien... Je ne réussi qu'à afficher plage1, plage2 ...
et j'ai pas envie de me taper du code pour chaque nom....
Si vous aviez une solution, ça serait pas mal
Merci

Reply

Marsh Posté le 18-01-2001 à 13:03:53   

Reply

Marsh Posté le 18-01-2001 à 13:13:14    

Moi aussi, ca me manque que l'on ne puisse pas evaluer du php en php. :D
 
Si quelqu'un a une idée ...

 

Reply

Marsh Posté le 18-01-2001 à 13:19:42    

Citation :


$generatedCode = "";
for ($i = 1; $i <= 20; $i++) {
    $generatedCode = $generatedCode."echo "plage$i";
";
}
$fic = fopen ("temp.php3", "w" );
fwrite ($fic, $generatedCode);
fclose ($fic);
 
include ("temp.php3" );

 



 
Ca marche ça ? Je suis au taf, j'ai pas mon serveur sous la main pour tester mon horreur :D
 
Et pour faire les choses bien, faudrait des semaphores, parceque si yen a deux qui appellent la fonction en meme tezmps, ca va pas être bo ;)
 
Ou alors une fonction qui genere un nom différent à chaque fois pour le fichier, et qui le supprime après le include.

 


--Message édité par kadreg--

Reply

Marsh Posté le 18-01-2001 à 13:28:53    

Le fou !!! ;)
Moi c pareil, j'suis au boulot, donc je peu pas testé ça.
Mais on verra, c une idée...

Reply

Marsh Posté le 18-01-2001 à 13:33:41    

essaie ca
 
for ($i=0;$i<=3 ;$i++ )
{
$name="plage" .$i;
echo $name;
echo "<br>";
}

 

Reply

Marsh Posté le 18-01-2001 à 13:35:42    

Ah il manque un truc
 
<HTML><BODY>
<?
$plage0="test0";
$plage1="test1";
$plage2="test2";
$plage3="test3";
 
for ($i=0;$i<=3 ;$i++ )
{
$name="plage" .$i;
echo $$name;
echo "<br>";
}
?>
</BODY></HTML>

 

Reply

Marsh Posté le 18-01-2001 à 13:38:52    

Toutes les variables sont la pour les tests

 

Reply

Marsh Posté le 18-01-2001 à 13:49:48    

Merci Lord II,
je testerais tout ça ce soir, je vous tiendrais au courant.
Si qqu'un à d'autres idées..

Reply

Marsh Posté le 18-01-2001 à 13:57:57    

Celle de LordII elle est mieux quand même. Je vais tacher de m'en souvenir du $$.

Reply

Marsh Posté le 18-01-2001 à 14:28:36    

remplace ta ligne echo par :
echo($plage[$i]);
 
Du coup plage devient un tableau (array).

 

Reply

Marsh Posté le 18-01-2001 à 14:28:36   

Reply

Marsh Posté le 18-01-2001 à 19:41:14    

J'ai corrigé mon code, il fonctionne maintenant :)
 

Citation :


<HTML>
<BODY>
<?
 
$plage1 = "test1";
$plage2 = "test2";
$plage3 = "test3";
$plage4 = "test4";
$plage5 = "test5";
 
$sem = sem_get (42);
 
$generatedCode = "<?";
for ($i = 1; $i <= 5; $i++) {
  $generatedCode = $generatedCode."echo"$plage$i<BR>";
";
}
$generatedCode = $generatedCode."?>";
sem_acquire ($sem);
$fic = fopen ("temp.php3", "w" );  
fwrite ($fic, $generatedCode);  
fclose ($fic);  
include ("temp.php3" );
sem_release ($sem);
?>
</BODY>
</HTML>

 



 
PS : c'est pas pour ça qu'il faut l'utiliser hein :D
 

 


--Message édité par kadreg--

Reply

Marsh Posté le 19-01-2001 à 10:33:35    

Bon, j'ai testé tout ça et le $$ ça marche :)
Mais j'ai encore un problème :
qd je lui demande de mettre le titre dans ma base, là ça marche plus : :cry:
je fais
 
for ($i=0;$i<=20;$i++)
{
 $titre="plage".$i;ss
 echo ($$name); //ça affiche bien le titre
 //connexion à MySQL et tout le truc...
 $req="INSERT INTO titre VALUES ('$num_cd','$i','$$name';)"
 //exécution de la requête
}
 
et là, ds la base, il inscrit plage1, plage 2... :gun:
 
Lord II à l'aide !!!

Reply

Marsh Posté le 19-01-2001 à 11:36:16    

ca ca marche verifie la syntaxe, il faut utiliser l'opérateur de concaténation car le double opérateur est une syntaxe complexe. Pour quelle soit correctement interprété dans une chaine il faut lui mettre des accolades ou des crochets je ne sais plus donc concaténation..
 
$req="INSERT INTO titre VALUES ('$num_cd','$i','" .$$name ."';)";
 
Dans cette requete il faut que tu spécifie tpus les champs des colones. Je pense qu'il est plus clair de spécifier à chaque fois de mettre les colones concernées.
 
Si il n'insère toujours pas correctement cela peut provenir de la cartéristique du champ dans la base, genre int pour varchar etc...

 

Reply

Marsh Posté le 19-01-2001 à 11:37:09    

A la place du smiley il y a parenthèse, guillemet et ppoint virgule !!!

 

Reply

Marsh Posté le 20-01-2001 à 12:10:02    

Merci Lord II, ça marche nickel !!!
:jap: :jap: :jap: :jap: :jap: :jap:

Reply

Sujets relatifs:

Leave a Replay

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