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 :

Fonction php stockée dans ma DB qui ne s'exécute pas [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut Fonction php stockée dans ma DB qui ne s'exécute pas
    Bonjour,

    Je me permet de poster ici car je ne sais pas trop où poster donc désolé si je me suis trompé de partie.

    Alors ma situation est simple et compliquer a la fois : je suis en train de faire une refonte complète d'une base de donnée de nos clients pour note utilisation technique. Mais voila dans cette refonte j'ai pensé a stocké une grande partie des pages sur la base de donnée dans une table "corps" qui contient la syntaxe HTML,PHP,... pour que cette page s'affiche.

    Hors la/les fonction(s) stocké dans la table ne s'exécute pas du tout.

    Voici le code utilisé :

    Pages Index.php (qui appel mon affichage)

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <!-- Appel de la gestion d'affichage du menu déroulant -->
    <script type="text/javascript" src="menu.js"></script>
    <!-- Ou copier le code ci-dessus dans les balises : -->
    <script type="text/javascript">
    </script>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Document sans titre</title>
    <link href="style.css" rel="stylesheet" type="text/css" />
    </head>
    
    <?php
    include "Fonction.php";
    
    ?>
    <body>
    <?php
    include "head.php";
    ?>
    <table width="770" border="0" cellspacing="0" cellpadding="0" align="center" >
      <tr>
        <td align="center">
    	<div id="page">
    	<div id="top">
    	<?php include "menu.xhtml"; ?>
    	</div>
    	</div>
    	</td>
      </tr>
      <tr>
        <td align="center">
    	<div id="page">
    	<div id="wrapper">
    	<div id="main">
    	<p1>Test</p>
    	<p>Test2</p>
    	<p><?php 
    	if (isset($_GET['page'])){
    	$page = $_GET['page'];
    	$categ = $_GET['categ'];}
    	appel($page,$categ); ?></p>  <-- Fonction qui fonctionne pour afficher les infos stocker.
    	<br />
    	<br />
    	</div>
    	</div>
    	</div>
    	</td>
      </tr>
      <tr>
        <td align="center"><div id="page">
    		<div id="footer"><!--Pied de page -->
    			<p id="footer"><?php include "include/Pied.inc" ?> </p>
    		</div>
    		</div>
    	</td>
      </tr>
    </table>
    </div>
    </div>
    </body>
    </html>
    Page Fonction.php (où toutes les fonctions sur stocker)

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    // on se connecte à MySQL 
    $db = mysql_connect($HOST, $USER, $PSW);  
    
    // on seléctionne la base 
    mysql_select_db($DB,$db); 
    
    //-------------------------------------------      PARTIE APPEL DES PAGES  -------------------------------------------//
    //Appel de la pages demander
    
    //Affichage du résultat 
    function appel($page,$categ)
    {
    	 $sql = "SELECT * FROM corps where `page`='$page' && `categorie`='$categ'";
    	 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    	 $data = mysql_fetch_array($req);
    	 echo '<p>'.$data['compo'].'</p>';
    }
    //-------------------------------------------      PARTIE GARAGE  -------------------------------------------//
    //recherche de la version Qui ne s'exécute pas quand elle est appelé de la DB mais qui s'exécute quand elle est appelé d'une page php
    function RechercheS($ver)
    {	 //Affichage du résultat par Version
    	 $sql = "SELECT `id`, `NOM`,`TYPE`,`CLE_CPTA`, `SERIAL_CPTA`, `NUMEROS`,`VERSION`,`LIGNE` FROM `garage` WHERE NOM like '$ver%' order by `NOM`";
    	 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
    	 $tbl = "garage";
    	 $stat = $_SESSION['statut'] > "1";
    	 // on fait une boucle qui va faire un tour pour chaque enregistrement
    	 while($data = mysql_fetch_array($req))
    	 if ($_SESSION['statut'] > "1")  
        { echo '<tr>
        <td width="10" align="center"><div align="CENTER" class="result2">&nbsp;</div></td>
    	<td width="20" align="center"><div align="CENTER" class="result2"><a href="delete.php?id='.$data['id'].'&tbl='.$tbl.'"><img src="im/supp.png" border="0"></a></div></td>
    	<td width="20" align="center"><div align="CENTER" class="result2"><a href="EnregGGE.php?id='.$data['id'].'& tbl='.$tbl.'"><img src="im/edit.png" border="0"></a></div></td> 
        <td width="140" align="center"><div align="CENTER" class="result2"><b> '.$data['NOM'].'</b></div></td>
    	<td width="90" align="center"><div align="center" class="result2"> '.$data['TYPE'].'</div></td>
    	<td width="260" align="center"><div align="center" class="result2"> '.$data['CLE_CPTA'].'</div></td>
    	<td width="190" align="center"><div align="center" class="result2"> '.$data['SERIAL_CPTA'].'</div></td>
    	<td width="80" align="center"><div align="center" class="result2"> '.$data['NUMEROS'].'</div></td>
    	<td width="70" align="center"><div align="center" class="result2"><a href="DL/L'.$data['LIGNE'].'V'.$data['VERSION'].'.exe">'.$data['VERSION'].'</a></div></td>
    	</tr>';}
    	else 
    	{ echo '
    	<td width="10" align="center"><div align="CENTER" class="result2">&nbsp;</div></td>
    	<td width="140" align="center"><div align="CENTER" class="result2"><b> '.$data['NOM'].'</b></div></td>
    	<td width="90" align="center"><div align="center" class="result2"> '.$data['TYPE'].'</div></td>
    	<td width="260" align="center"><div align="center" class="result2"> '.$data['CLE_CPTA'].'</div></td>
    	<td width="190" align="center"><div align="center" class="result2"> '.$data['SERIAL_CPTA'].'</div></td>
    	<td width="80" align="center"><div align="center" class="result2"> '.$data['NUMEROS'].'</div></td>
    	<td width="70" align="center"><div align="center" class="result2"><a href="DL/L'.$data['LIGNE'].'V'.$data['VERSION'].'.exe">'.$data['VERSION'].'</a></div></td>
    	</tr>';}
    }
    Les info dans la DB :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
      	
    id             1
    page         garage       
    categorie 	nom 	       
    compo      <form method="post">
    <table width="300px" align="center" style="left: 150px;" border="0">
       <tr>
    	  <td><div align="center">Recherche par Nom : </div>
    	    <div align="center"><input class='inTxt' type="text" name='version' size=30 value=""></div></td>
       </tr>
          <td align="center"><input type="submit" id="bnt" name="bntRech" value="Rechercher"></td>
       </tr>		        
    </table>
    </form>
    <br>
    <table id="include" height="20" border="0" cellpadding="0" cellspacing="0" background="im/corps2.gif">	
        <tr>
    	<td width="10" align="center"><div align="CENTER">&nbsp;</div></td>
    	<td width="20" align="center"><div align="CENTER">&nbsp;</div></td>
    	<td width="20" align="center"><div align="CENTER">&nbsp;</div></td>
    	<td width="140" align="center"><div align="center">Nom : </div></td>
        <td width="90" align="center"><div align="center">Type : </div></td>
        <td width="270" align="center"><div align="center">Cl&eacute; Compta : </div></td>
        <td width="190" align="center"><div align="center">Cl&eacute; S&eacute;rial : </div></td>
        <td width="80" align="center"><div align="center">Num&eacute;ros : </div></td>
    	<td width="70" align="center"><div align="center">Version : </div></td>
    </table>	
    	<table id="include" height="20" border="0" align="center" cellpadding="0" cellspacing="0" background="im/corps2.gif">		
    <?php 
    if(isset($_POST['bntRech']))
         {$ver = $_POST['version'];  
     	  RechercheS($ver);};  <-- cette fonction ne se déclenche pas
    ?>
    </table>
    j'espère être assez clair mais j'ai des doute donc n'hésitai pas a poser des question ou demander des précision je me ferai un plaisir d'y répondre.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faut utiliser eval() pour que PHP interprete une chaine de caractere comme du code.
    Je ne sais pas si ca peut marcher comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<p>' .eval($data['compo']).'</p>';
    ou comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    echo '<p>';
    eval($data['compo']);
    echo '</p>';
    ou si tu es obligé d'avoir un echo dans ton champ dans la base pour encadrer la partie html
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    Je viens de tester et j'ai ce message là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error in c:\program files\easyphp 2.0b1\test\Fonction.php(20) : eval()'d code on line 1
    j'ai modifier dans la page fonction.php la ligne 20 comme tu l'a indiqué ce qui donne ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<p>'.eval($data['compo']).'</p>';
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<p>'.$data['compo'].'</p>';
    pour ta seconde solution même message

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et la troisieme solution ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Bonsoir,

    Je crois qu'il manque les guillements :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<p>' . eval("$data['compo']") . '</p>';
    Gillou.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    @ Legilou :

    cela ne fonctionne toujours pas j'ai le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in c:\program files\easyphp 2.0b1\test\Fonction.php on line 20
    @sabotage :

    Désolé je comprend pas trop ce que tu veux dire par :
    ou si tu es obligé d'avoir un echo dans ton champ dans la base pour encadrer la partie html

  7. #7
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    eval( "\$str = \$data['compo'];" );
    echo $str;
    Je viens de tester. Ca marche.

    Gillou.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    oui tout à fait quand je le met dans une page php seul sa fonctionne correctement mais dès que je met le même code dans ma base de donnée plus rien ne se passe rien.

    s'est la fonction RechercheS($ver) qui ne fonctionne pas et non la fonction appel qui elle marche super.

    J'ai l'impression que l'on pare pas de la même fonction

    J'en suis désolé si je vous ai fait perdre votre temps car je me suis certainement mal exprimer sur mon premier post

  9. #9
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    C'est interressant comme problème.

    Dans la base, si tu remplaces ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php 
    if(isset($_POST['bntRech']))
         {$ver = $_POST['version'];  
     	  RechercheS($ver);};  
    ?>
    par un truc plus simple, pour voir si le code PHP s'éxécute.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo "Hello developpez.net !";
    ?>
    Est-ce que ca fonctionne ?

    Puis ça, pour voir si les fonctions simples s'éxécutent.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo "Nous sommes le " . date("d/m/Y");
    ?>


    Gillou.

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    voila les fonction php s'exécute mais pas complétement.

    J'ai remplacer dans la base de donnée mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php 
    if(isset($_POST['bntRech']))
         {$ver = $_POST['version'];  
     	  RechercheS($ver);};  
    ?>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo '<br> Hello developpez.net !</br>';
    ?>
    voila ce qu'il affiche :
    Hello developpez.net !'; ?>

  11. #11
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Le truc, c'est que eval interprete du code PHP directement. Pas du code PHP avec les balises <?php ?> intégré dans du code HTML

    Ca ne marche pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $data1 = "<p><?php echo 'developpez.net';?></p>";
    eval( $data1 );
    ?>
    Ca marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    $data2 = "echo 'hello developpez.net';";
    eval( $data2 );
    ?>
    Je continue de fouiller....

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    par rapport à ce qui est afficher pour moi s'est la balise de fin qui casse les pied ?> car compte tenu qu'elle n'est pas tout à fait comme les autre car en ne commence pas par : "<" il ne la considère pas comme une balise non ?

    J'ai modifier comme ceci dans la base de donné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo <br>Hello developpez.net !</br></>
    et l'affichage donne : donc j'en déduit que s'est les guillemets qui mettent le bazar

  13. #13
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Il faut que ca marche avec les guillemets.
    La on fait les tests avec une commande simple. PHP tolère un peu de "souplesse", mais faut pas pousser.
    Ca ne marchera pas avec une fonction complexe, comme rechercheS().

    Gillou.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    Je viens de tester la seconde fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo "Nous sommes le " . date("d/m/Y"); ?>
    mais la rien ne s'affiche

    au fait mon champ compo est de type longtext sa peut jouer ??

  15. #15
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    Je viens de trouver ça :
    http://php.balluche.fr/?function.eval

    En particlulier
    Pour mélanger des sorties HTML et du code PHP, vous pouvez utiliser une balise de fermeture de PHP pour quitter le mode PHP.
    Je ne comprend pas bien ce qu'il veut dire, mais ca va peut-etre t'aider...

    Gillou

  16. #16
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Je pense que ca veut dire que si il veut générer une page du style :

    <html>
    <body>
    <?php echo 'truc'; ?>
    </body>
    </html>

    il doit enregister ce qui suit car eval pense que son le premier flux que tu lui passes en paramètres est du PHP, il faut donc préfixer ton code par ?> afin de sortir de ce processus et générer du texte au début.

    ?>
    <html>
    <body>
    <?php echo 'truc'; ?>
    </body>
    </html>

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    j'ai du mal a suivre ton raisonnement et surtout que s'est les fonction php tirer de la base de donnée qui ne fonctionne pas donc même si je met une balise de fermeture ?> dans mon code de la base rien ne va changer hors mis l'affichage du ?>

  18. #18
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    ca marche !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $data1 = "<p>";
    $data1.= "<?=date('Y')?>";
    $data1.= "</p>";
     
    eval("?>$data1");
    Gillou

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 20
    Par défaut
    je met ton code dans la base de donnée ?

  20. #20
    Membre chevronné Avatar de LeGilou
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 488
    Par défaut
    ...roulements de tambour....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MySQL] Code PHP stocké dans une base MySQL
    Par yvon_huynh dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/10/2008, 02h28
  2. Fonction Javascript qui ne s'exécute pas
    Par bubuche007 dans le forum Général JavaScript
    Réponses: 15
    Dernier message: 25/01/2007, 11h17
  3. Réponses: 17
    Dernier message: 21/11/2006, 11h44
  4. Réponses: 18
    Dernier message: 27/10/2006, 14h15
  5. [D7-EXCEL2000] Formule dans cellule Excel qui ne se calcule pas
    Par Albertolino dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 09/09/2003, 14h18

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