[RESOLU] variable variable en PHP et objet

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] variable variable en PHP et objet

par lenouvdu44 » 27 févr. 2008, 02:17

Moral de l'histoire : PHPFrance est mieux que DTPC ;-).

PS : pense à partager ta solution sur DTPC aussi, le savoir doit se partager sinon il ne sert à rien :).
Tu ouvres limite un débat :ah:
DTPC est un site d'entraide en général, d'actualité aussi. Le seul spécialiste PHP qu'il y ai, est son webmaster (vin-moi en l'occurence). Je l'ai eu sur MSN, il m'a répondu vite fait, donc bon, à voir ^^
Après, PHPFrance est le site php qu'il faut consulter, niveau forum, je trouve. J'espérais bien qu'il soit "mieux" que DTPC ^^

Tkt, la solution sera partagée, je l'ai bien faite avec celle de vin-moi, pourquoi pas avec la tienne (que j'ai choisie en plus :ah:).

Moral de l'histoire : un médecin généraliste sera très bon pour tous (ou pas ^^) les problèmes, mais un spécialiste de votre problème précis sera meilleur (je l'espère pour vous :D)

RE-PPS : merci bien, j'ai commencé le php y'a pas si longtemps :ah: mais je m'amuse bien, surtout au vue des projets en cours et du prochain xD

par Hywan » 27 févr. 2008, 02:10

Moral de l'histoire : PHPFrance est mieux que DTPC ;-).

PS : pense à partager ta solution sur DTPC aussi, le savoir doit se partager sinon il ne sert à rien :).

PPS : et bienvenue sur PHPFrance au fait :).

par lenouvdu44 » 27 févr. 2008, 02:05

Salut,
Ta solution fonctionne aussi, et je la préfère ^^

Pour le tableau, j'y ai pensé, mais j'utilise cette méthode qu'une seul fois pour chaque entrée de formulaire. Je n'ai aucune manipulation à faire dessus par la suite.

Enplus, j'utilise la valeur this->Atitre par exemple, sans chiffre après, dans d'autres parties.
Tableau dit boucle, avec le nombre d'entré de formulaire je ne pense pas être énormément gagnant, et je serais certainement plus lourd au niveau syntaxique, à mon gout.

En plus, d'autres entrées de formulaire sont uniques, donc pas besoin de chiffre. Je ne vais pas faire de tableau pour eux avec une seule entrée ... Et si pour eux je ne fais pas de tableau, cela fait mélanger tableau et variable simple dans un code pour un seul et même formulaire (class formulaire)

Bah, je ne trouve pas cela hyper pratique dans ce cas, et limite je verrais plus un associatif avec tout dedans, le nombre de titre, de contenu, ... mais je trouve cela lourd pour ce que j'ai à faire.

Je me trompe peut être sur certains points, j'en exagère d'autres, je sais, mais bon :ah:

@HyWaN : merci pour ta solution.

par Hywan » 27 févr. 2008, 01:36

eval est crade et lent. Oublie cette solution.

Tu devrais plutôt essayer :
$value = $this->{'Atitre' . $i};
ça ira mieux :).
Mais un tableau serait plus propre, plus facile à manipuler, plus clair, plus rapide, et plus léger àmha.

par lenouvdu44 » 26 févr. 2008, 22:55

Merci pour les réponses.
@Cyrano :
Ta solution ne fonctionne pas ... elle m'affiche "1" dans mon champ.

Je viens d'avoir une réponse sur un autre forum (dtpc.net) qui me propose l'utilisation de eval(), ce qui donnerait :
$value="' . eval('$this->Atitre' . $i) . '"
Je vous tiens au courant.

EDIT : cela ne fonctionne pas non plus :ah:

EDIT : si si, cela fonctionne, juste bien faire la fonction eval(), voici ce que cela donne :
		for ($i=1 ; $i<=$nb ; $i++)
		{			
			eval("\$value = \$this->Atitre" . $i . ";");
			echo "(*)Titre ".$i." : <br />";
			echo '<input type="text" name="titre'.$i.'" value="'.$value.'" /><br />';
		}
Merci pour ceux qui ont cherché, et merci à "Vin-moi" d'avoir trouvé la solution (de dtpc.net).

par h0_noMan » 26 févr. 2008, 22:54

@h0_noMan : ce n'est pas un tableau, il cherche à concaténer une propriété de classe et un suffixe comportant une incrémentation ;)
Moi, dans ce genre de cas j'utilise un tableau plutôt que définir x variables, j'utilise un tableau. :)

par Cyrano » 26 févr. 2008, 22:45

Simplifie en définissant tes valeurs avant l'insertion dans ta chaine HTML :
<?php
//...
      for ($i=1 ; $i<=$nb ; $i++)
      {
          $titre = 'titre'.$i;
          $valeur = $this->Atitre . $i;
          echo '<input type="text" name="'. $titre .'" value="'. $valeur .'" /><br />';
      }
//...
?>
@h0_noMan : ce n'est pas un tableau, il cherche à concaténer une propriété de classe et un suffixe comportant une incrémentation ;)

par h0_noMan » 26 févr. 2008, 22:42

Fait de Atitre un tableau à index numérique.

Tu y accéderas comme ceci :
this->Atitre[$i]

[RESOLU] variable variable en PHP et objet

par lenouvdu44 » 26 févr. 2008, 22:35

Bonsoir,
Donc, j'ai un tit pb avec mes variables variables, un tit exemple en dira plus :
for ($i=1 ; $i<=$nb ; $i++)
		{
			echo "(*)Titre ".$i." : <br />";
			echo '<input type="text" name="titre'.$i.'" value="'.$this->Atitre1.'"/><br />';
		}
Comme vous pouvez le constater, la valeur par défaut est "$this->Atitre1", or ce "1" est spécifique à la première entrée Titre. Donc au Titre 2, la value sera la même, et je voudrais donc que ma variable passe en "$this->Atitre2".
Je me suis dit, variable variable en fonction de mon $i.
J'ai fait des test :
for ($i=1 ; $i<=$nb ; $i++)
		{
			$titre1 = "blabldkjsldkfjsldkfjslfdkjsdlfkjsdlfkjsdf";
			$val1 = "titre";
			
			echo "(*)Titre ".$i." : <br />";
			echo '<input type="text" name="titre'.$i.'" value="'.${$val1.$i}.'"/><br />';
		}
Cela donne bien "blabldkjsldkfjsldkfjslfdkjsdlfkjsdlfkjsdf".

Donc l'idée est bonne, mais dès que je mets :
for ($i=1 ; $i<=$nb ; $i++)
		{
			$val1 = "this->Atitre";
			
			echo "(*)Titre ".$i." : <br />";
			echo '<input type="text" name="titre'.$i.'" value="'.${$val1.$i}.'"/><br />';
		}
Cela ne fonctionne plus : rien ne s'affiche ... hors, $this->Atitre1 existe bien et n'est pas une constante.

Si quelqu'un a une idée ...
merci.