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

  FORUM HardWare.fr
  Programmation
  PHP

  Problème avec une condition contenue dans une variable

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec une condition contenue dans une variable

n°441351
Kmikaz
Posté le 27-06-2003 à 10:25:19  profilanswer
 

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

mood
Publicité
Posté le 27-06-2003 à 10:25:19  profilanswer
 

n°441359
nemohp
Adepte du provisoire permanent
Posté le 27-06-2003 à 10:27:25  profilanswer
 

j'aurai plutop fais ca moi :
 
 

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


 
a tester

n°441441
Kmikaz
Posté le 27-06-2003 à 11:00:33  profilanswer
 

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

n°441449
Taz
bisounours-codeur
Posté le 27-06-2003 à 11:04:33  profilanswer
 

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

n°441465
nemohp
Adepte du provisoire permanent
Posté le 27-06-2003 à 11:12:53  profilanswer
 

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.   ?>

n°441473
Taz
bisounours-codeur
Posté le 27-06-2003 à 11:16:04  profilanswer
 

non, je pense pas, ça sera toujours vrai

n°441491
Kmikaz
Posté le 27-06-2003 à 11:24:01  profilanswer
 

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...

n°441503
Taz
bisounours-codeur
Posté le 27-06-2003 à 11:28:21  profilanswer
 

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

n°441554
Kmikaz
Posté le 27-06-2003 à 11:38:19  profilanswer
 

++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 ??

n°441747
FlorentP
Posté le 27-06-2003 à 13:48:28  profilanswer
 
mood
Publicité
Posté le 27-06-2003 à 13:48:28  profilanswer
 

n°441893
Kmikaz
Posté le 27-06-2003 à 15:26:51  profilanswer
 

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
n°441900
Taz
bisounours-codeur
Posté le 27-06-2003 à 15:33:17  profilanswer
 

ché pas, mais mauvais emploi de feof

n°441914
Kmikaz
Posté le 27-06-2003 à 15:40:27  profilanswer
 

++Taz a écrit :

ché pas, mais mauvais emploi de feof


non, y a aucun probleme avec la 1ere partie

n°441966
Taz
bisounours-codeur
Posté le 27-06-2003 à 16:41:06  profilanswer
 

:pfff:

n°442035
Kmikaz
Posté le 27-06-2003 à 17:42:49  profilanswer
 


 
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]

n°442038
Taz
bisounours-codeur
Posté le 27-06-2003 à 17:44:57  profilanswer
 

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...

n°442470
Deaddy
Posté le 28-06-2003 à 12:00:41  profilanswer
 

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


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

  Problème avec une condition contenue dans une variable

 

Sujets relatifs
Expression Reguliere ... Où est le problème ?Problème de pipe (grrrr)
probleme de mise en pageProbleme d utilisation d une DLL externe
[VC++] Problème étrange ![FLASH] J'ai un petit problème de séquence ?
[HTML/JS] Problème de Refresh formulaire variable php utilisable en js?
Problème avec JCreator ProProbleme avec if ( )
Plus de sujets relatifs à : Problème avec une condition contenue dans une variable


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