IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

eval()


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut eval()
    Bonjour,

    j'ai une fonction show qui me permet(tra) d'afficher un "master" , le resultat d'un select. (plusieurs lignes en retour) chacune de ces lignes comporte un lien vers une page détail.php qui donne plus de precisions.

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
     
    function show(){
    		$rtn = "<TABLE class=grid cellSpacing=1 width='100%' border=0><TBODY>";
    		$rtn .= $this->header();
    		if ($this->result){
    			for($i = 0 ; $i< $this->nr ; $i++){
    				$row = mysql_fetch_array($this->result);
    				echo $this->link."<br>";
    				eval($this->link);
    				echo $lien;
    				$rtn .= "<a href=".$lien.">";
    				$data = $i%2+1;
    				$rtn .="<tr class=data".$data.">";
    				for($j=0; $j < $this->nf; $j++){
    					$fn = mysql_field_name ($this->result, $j);
    					$rtn .= "<td noWrap align=middle>".$row[$fn]."</td>";
    				}
    				$rtn .="</tr></a>";			
    			}
    		}else{
    			//return "pas de resultats";
    		}
    		$rtn .= "</TBODY></TABLE>";
    		return $rtn;
    }// end show
    $this->link vaut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     \$lien = "detail.php?id=$row['ID']";
    mon message d'erreur est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Warning: Unexpected character in input: '\' (ASCII=92) state=1 in h:\easyphp1-8\www\tfe\OO\master.inc(36) : eval()'d code on line 1
     
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in h:\easyphp1-8\www\tfe\OO\master.inc(36) : eval()'d code on line 1
     
    Notice: Undefined variable: lien in h:\easyphp1-8\www\tfe\OO\master.inc on line 37
     
    Notice: Undefined variable: lien in h:\easyphp1-8\www\tfe\OO\master.inc on line 38
    j'ai retrituré ce code pour que le lien fonctionne sans succes.

    QQn a une idée?(Kirkis? Mr N. ? ;-) )
    Merci d'avance

  2. #2
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    link() est une fonction. Elle attends donc deux paramètres qui n'y sont pas.

    Citation Envoyé par XtofRoland
    QQn a une idée?(Kirkis? Mr N. ? ;-) )
    Sympa pour les autres.

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    Citation Envoyé par XtofRoland
    QQn a une idée?(Kirkis? Mr N. ? Wink )
    Évite ce genre de remarques car, même si ça fait secrètement plaiz' aux concernés, ça laisse trop les autres en marge et ce n'est pas cool, d'autant qu'ils ne sont pas incapables de répondre.

    Concernant ton souci, essaie avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    \$lien = "detail.php?id=$row[ID]";
    macbook : son link est une propriété de sa classe (absence de parenthèses donc pas une méthode).

  4. #4
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    Citation Envoyé par macbook
    link() est une fonction. Elle attends donc deux paramètres qui n'y sont pas.

    Citation Envoyé par XtofRoland
    QQn a une idée?(Kirkis? Mr N. ? ;-) )
    Sympa pour les autres.
    Je ne disait pas ca pour vexer qqn, mais j'ai deja posé qq questions ici, et c'est une façon de remercier ces deux personnes qui m'ont deja aidé précedemment.

    ma variable vaut \$lien = "detail.php?id=$row[ID]";
    et le eval ne va pas
    par contre
    eval("\$lien = \"detail.php?id=$row[ID]\";");
    ca, ca fonctionne...
    donc je fais en sorte que ma variable vaut:
    \$lien = \"detail.php?id=$row[ID]\";
    mais ca ca ne va pas non plus...

    j'ai pourtant l'habitude de proteger du sql avec ' " ou \' mais la il y a qqc que je ne saisi pas!

    pour plus d'info je donne le modele de mon lien a ma classe ainsi:
    $grid->link("detail.php?id=[ID]");

    ma classe le recupere et en fait ceci:
    function link($modele){
    $modele = ereg_replace('\[','$row[',$modele);
    $this->link = '\$lien = \"'.$modele.'\";';
    }

  5. #5
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Je vais faire des tests mais il me semble que même si l'on peut donner aux méthodes d'une class le nom d'un function PHP native, je me demande dans quelle mesure eval() arrive à faire la différence.

  6. #6
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    macbook:
    laquelle de mes methodes est un homonyme d'une fonction native?
    EDIT : autand pour moi, link...
    link ne pose pas de problème, elle retourne les bonnes valeurs.

    il ne me semble pas faire appel a une fonction a l'interieur du eval...

  7. #7
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Tu est obligé d'utiliser eval ???
    Parce qu'en terme de maintenabilité c'est difficile de faire pire

  8. #8
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    je suis libre...

    j'eesaye de créer une classe master qui selon un certain nombre de parametres (nombre de ligne a afficher, modele de lien, titres ...) m'affiche sous forme de tableau le resultat d'un select.

    d'une page a l'autre le lien vers le detail changera, c'est pourquoi je transmet un modele de lien via la fonction link.

    ma class mester peut gerer cela comme elle veut. Je ne vois pas d'autre solution que le eval... mais je suis ouvert a tte propositions.

  9. #9
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Citation Envoyé par XtofRoland
    je suis libre...

    j'eesaye de créer une classe master qui selon un certain nombre de parametres (nombre de ligne a afficher, modele de lien, titres ...) m'affiche sous forme de tableau le resultat d'un select.

    d'une page a l'autre le lien vers le detail changera, c'est pourquoi je transmet un modele de lien via la fonction link.

    ma class mester peut gerer cela comme elle veut. Je ne vois pas d'autre solution que le eval... mais je suis ouvert a tte propositions.
    Par experience je te conseille vraiment de n'utiliser eval que comme solution de dernier recours.
    Malheureusement il me manque des données sur tes besoins pour te proposer une solution plus viable à mes yeux.

Discussions similaires

  1. 'undefined' non interceptable sur 'eval' ?
    Par Johnny Ryall dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/06/2005, 11h28
  2. Existe-t-il une fonction Eval() sous Delphi ?
    Par Hell dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2004, 17h45
  3. pb eval pour le code php dans une feuille xslt
    Par nipepsi dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 10/09/2004, 11h23
  4. [String] équivalent de la fonction eval() en javascript
    Par jeyce dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 01/09/2004, 08h42
  5. [langage] eval
    Par Quaker dans le forum Langage
    Réponses: 5
    Dernier message: 21/07/2004, 17h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo