Problème avec une condition contenue dans une variable

Problème avec une condition contenue dans une variable - PHP - Programmation

Marsh Posté le 27-06-2003 à 10:25:19    

Je souhaite mettre une condition dans une variable pour ensuite utiliser cette condition en appelant la variable.
On m'a conseillé de faire ce qui suit mais ca marche pas:
<?
$cond = "1 == 2";
$block = ($cond);
if("$block" )
{
echo" ca marche ";
}
?>
Ca affiche  "ca marche alors que ca ne devrait pas s'afficher.
 Ou est le problème ?? Merci de votre aide

Reply

Marsh Posté le 27-06-2003 à 10:25:19   

Reply

Marsh Posté le 27-06-2003 à 10:27:25    

j'aurai plutop fais ca moi :
 
 

Code :
  1. <?
  2. $cond = "1 == 2";
  3. if("$cond" )
  4. {
  5. echo" ca marche ";
  6. }
  7. ?>


 
a tester

Reply

Marsh Posté le 27-06-2003 à 11:00:33    

Ca marche toujours pas.  
Si vous avez une solution, donnez la moi

Reply

Marsh Posté le 27-06-2003 à 11:04:33    

doit y avoir plus simple mais bon
 
http://fr3.php.net/manual/en/function.eval.php

Reply

Marsh Posté le 27-06-2003 à 11:12:53    

et comme ca (g virer les gillemets dans le if) ???
 

Code :
  1. <?
  2.   $cond = "1 == 2";
  3.   if($cond)
  4.   {
  5.     echo" ca marche ";
  6.   }
  7.   ?>

Reply

Marsh Posté le 27-06-2003 à 11:16:04    

non, je pense pas, ça sera toujours vrai

Reply

Marsh Posté le 27-06-2003 à 11:24:01    

Voici ce que j'ai fait mais ca marche toujours pas:  
<?
$cond = '1 == 2';
 
if("eval($cond)" )
{
echo"ca marche";
}
?>
Ca affiche "ca marche" alors que ca ne devrait rien afficher
Si vous avez d'autres solutions, n'hésitez pas...

Reply

Marsh Posté le 27-06-2003 à 11:28:21    

putain, t'as rien compris aux chaines de caratères toi. vire moi c'est "" autour de eval et lis la doc

Reply

Marsh Posté le 27-06-2003 à 11:38:19    

++Taz a écrit :

putain, t'as rien compris aux chaines de caratères toi. vire moi c'est "" autour de eval et lis la doc


Ok :
<?
$cond = '1 == 2';
 
if(eval($cond))
{
echo" <br>ca marche ";
}
?>
J'ai viré les guillemets mais maintenant ca provoque une erreur. C quoi le problème ??

Reply

Marsh Posté le 27-06-2003 à 13:48:28    

Reply

Marsh Posté le 27-06-2003 à 13:48:28   

Reply

Marsh Posté le 27-06-2003 à 15:26:51    

Ce script va me permettre d'assigner un numero ALEATOIRE ET UNIQUE a chaque news contenu dans un fichier.  
J'appelle ensuite ces news par leur numéro dans l'ordre croissant pour les afficher.
L'utilité de ce script est que les news n'apparaitront jamais dans le meme ordre.
(Ca parait con mais ce script va me servir dans d'autres applications...)
 
 
 
Voici mon script :
 
Enregistrez d'abord ce qui suit dans un fichier txt :
http://serveur/pagex.php
Ceci est la news n°A
http://serveur/pagex.php
Ceci est la news n°B
http://serveur/pagex.php
Ceci est la news n°C
http://serveur/pagex.php
Ceci est la news n°D
 
Voici maintenant le script :
(mettez le ds un éditeur vous y verrez plus clair...)
 
<font face = verdana size=2>
<?php  
// PREMIERE PARTIE DU SCRIPT
// Elle assigne chaque news et chaque url a une variable et compte le nombre total de news
$ne = 0;
$fd = fopen ("news.txt", "r" );
while (!feof($fd)) {
 if ($ne % 2 == 0) {
  ${'url'.$ne} = fgets($fd);
  ${'rurl'.$ne} = rtrim(${'url'.$ne});
 } else {
  ${'news'.$ne} = fgets($fd);
  ${'rnews'.$ne} = rtrim(${'news'.$ne});
 }  
 $ne++;
}  
fclose ($fd);
$nblignes = $ne;
$nbnews = $nblignes / 2;
echo"<h3>il y a $nbnews news</h3><br><br>";
// FIN DE LA PREMIERE PARTIE
?>
 
 
 
 
 
<?php  
// DEUXIEME PARTIE DU SCRIPT
// elle donne un numéro aléatoire UNIQUE à chaque news
// Initialisation des variables
$bl = 0;
$ze = 1;
$np = 1;
$zee = 0;
$zi = 0;
// Boucle principale qui assigne un numéro aléatoire unique a chaque news
while ($ze <= $nbnews) {
 // numero de la news contenue dans la variable qui suit...
 ${'rdm'.$zee} = rand('0', "$nbnews" );
 
 echo"<li type=square><b>N° de la news : <font size=4 color=blue><b>${'rdm'.$zee}</b></font>";  
 // Génération de la condition -- La condition varie suivant le nombre de passage de la boucle principale
 // Initialisation des variables
 $inc = 0;
 $rg = 1;
 ${'cod'.$inc} = " \${'rdm'.\$zee} == \${'rdm'.(\$zee - $rg)} ";
 $inc++;
 $rg++;  
 // Début de la boucle qui génère la condition
 while ($inc <= $zee) {
  ${'cod'.$zee} = " ${'cod'.($zee - 1)} || \${'rdm'.\$zee} == \${'rdm'.(\$zee - $rg)} ";
  $rg++;
  $inc++;
 }  
 $condition = "${'cod'.($inc - 1)}";  
 // Fin de la génération de la condition
 
 echo"<br><b>Condition : $condition</b>";
 
 if ($zee == 0) {
  echo "<br>>> osp_scroll_message[<font color=blue>${'rdm'.$zi}</font>]='<a class=news href=${'rurl'.$bl}><b>${'rnews'.$np}</a>';<br><br>";
 
  $ze++;
  $np++;
  $np++;
  $bl++;
  $bl++;
  $zi++;
  $zee++;
  $rg++;
  $inc++;
   
// LE PROBLEME EST ICI -- Je veux juste que la condition soit celle générée ci dessus
// Ici je l'ai écrite manuellement mais elle ne varie pas en fonction du nombre de passage de la boucle principale
// Dans cet exemple la condition n'est valable que pour un nombre de passages de la boucle inférieur à 22
 } elseif (${'rdm'.$zee} == ${'rdm'.($zee - 1)} || ${'rdm'.$zee} == ${'rdm'.($zee - 2)} || ${'rdm'.$zee} == ${'rdm'.($zee - 3)} || ${'rdm'.$zee} == ${'rdm'.($zee - 4)} || ${'rdm'.$zee} == ${'rdm'.($zee - 5)} || ${'rdm'.$zee} == ${'rdm'.($zee - 6)} || ${'rdm'.$zee} == ${'rdm'.($zee - 7)} || ${'rdm'.$zee} == ${'rdm'.($zee - 8)} || ${'rdm'.$zee} == ${'rdm'.($zee - 9)} || ${'rdm'.$zee} == ${'rdm'.($zee - 10)} || ${'rdm'.$zee} == ${'rdm'.($zee - 11)} || ${'rdm'.$zee} == ${'rdm'.($zee - 12)} || ${'rdm'.$zee} == ${'rdm'.($zee - 13)} || ${'rdm'.$zee} == ${'rdm'.($zee - 14)} || ${'rdm'.$zee} == ${'rdm'.($zee - 15)} || ${'rdm'.$zee} == ${'rdm'.($zee - 16)} || ${'rdm'.$zee} == ${'rdm'.($zee - 17)} || ${'rdm'.$zee} == ${'rdm'.($zee - 18)} || ${'rdm'.$zee} == ${'rdm'.($zee - 19)} || ${'rdm'.$zee} == ${'rdm'.($zee - 20)} || ${'rdm'.$zee} == ${'rdm'.($zee - 21)}
  ) {
  echo"<font color=red><br>## ${'rdm'.$zee} est une valeur déja utilisée ! ##</font><br><br>";
  $zee++;
 
 
 } else {
  echo "<br>>> osp_scroll_message[<font color=orange>${'rdm'.$zi}</font>]='<a class=news href=${'rurl'.$bl}><b>${'rnews'.$np}</a>';<br><br>";
 
  $ze++;
  $np++;
  $np++;
  $bl++;
  $bl++;
  $zi++;
  $zee++;
  $rg++;
  $inc++;
 }  
}  
// FIN DE LA SECONDE PARTIE
?>
 
Exécutez maintenant ce scrip dans un navigateur, ca va vous éclairer sur le fonctionnement du script.
 
Tout fonctionne à merveille mais ma seule question est :
Quel est le moyen de mettre l'expression contenue dans la variable $condition dans elseif( ) ??  
(voir code ci dessus)
 
Merci de votre aide


Message édité par Kmikaz le 27-06-2003 à 15:36:18
Reply

Marsh Posté le 27-06-2003 à 15:33:17    

ché pas, mais mauvais emploi de feof

Reply

Marsh Posté le 27-06-2003 à 15:40:27    

++Taz a écrit :

ché pas, mais mauvais emploi de feof


non, y a aucun probleme avec la 1ere partie

Reply

Marsh Posté le 27-06-2003 à 16:41:06    

:pfff:

Reply

Marsh Posté le 27-06-2003 à 17:42:49    


 
Ok tu dis qu'il y a un mauvais emploi de feof c'est bien mais ca serait encore mieux si t'étais plus explicite  [:zer]

Reply

Marsh Posté le 27-06-2003 à 17:44:57    

ben tu vas voir sur PHP.net ou tu fais une recherche sur le forum (catégorie C, mais c'est valable en PHP) et tu vois pas toi meme. je passe mon temps à critiquer les enmplois de feof...

Reply

Marsh Posté le 28-06-2003 à 12:00:41    

Code :
  1. <?php
  2. $cond=(1==2);
  3. if ($cond) echo "egal"; else echo "non egal";
  4. ?>

Reply

Sujets relatifs:

Leave a Replay

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