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

Langage PHP Discussion :

le caractère > coupe mes chaînes


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut le caractère > coupe mes chaînes
    Bonjour,

    j'édite du code HTML en PHP mais quand je met un > dans une chaine en paramètre d'un écho ma chaine se stoppe...

    Démonstration :
    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
    <td>
              <!-- connexion à la base de données (script PHP) -->
              <?php
    								
                        // Paramètres persos
                        $host = "localhost"; // voir hébergeur
                        $login = "root"; // vide ou "root" en local
                        $pwd = ""; // vide en local
                        $bdd = "stage"; // nom de la BD
    								
                        // on se connecte à MySQL
                        $db = mysql_connect($host,$login,$pwd) or die("Impossible de se connecter"); 
    								
                        // on seléctionne la base
                        mysql_select_db($bdd,$db) or die("Impossible de se connecter"); 
    								
                        // on crée la requête SQL
                        $sql = "SELECT * FROM MOTS_CLES ORDER BY MOT_CLE";
    								
                        // on envoie la requête
                        $req = mysql_query($sql) or die("Erreur SQL !<br>".$sql."<br>".mysql_error());
    								
                        echo "<ul>";
                        // on fait une boucle qui va faire un tour pour chaque enregistrement
                        while($data = mysql_fetch_assoc($req)){
                        // on affiche les informations de l'enregistrement en cours
                        echo "<li><input type=CHECKBOX NAME=lien VALUE=\"$data['ID_MOT']\">$data['MOT_CLE']</input></li>";
    								}
                        echo "<\ul>";
    								
                        // on ferme la connexion à mysql
                        mysql_close();
              ?>
    </td>
    A partir du texte orange déjà il y a un problème, j'ai comme affichage :
    ".mysql_error()); echo "
    C'est à dire, comme ci le texte commençait après le >.

    Sur l'éditeur que je viens d'installer (FreshHTML) le " qui suis le <br/> n'est pas reconnu (d'après le code couleur) alors que si je le avant le > (ex: <br/">) là il est reconnu...

    Même chose pour chaque " précédés de > dans mon code...

    Si quelqu'un comprend, j'ai bien besoin qu'on m'explique mon erreur.
    Merci d'avance.

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Je te conseils d'utiliser les simples quotes pour tout contenu Php, comme le echo ou autre.
    C'est bien plus simple de plus ça te permet d'utiliser les doubles quotes pour les attributs HTML sans devoir les échapper.

    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
    <td>
    <!-- connexion à la base de données (script PHP) -->
    <?php
     
    // Paramètres persos
    $host = 'localhost'; // voir hébergeur
    $login = 'root'; // vide ou "root" en local
    $pwd = ''; // vide en local
    $bdd = 'stage'; // nom de la BD
     
    // on se connecte à MySQL
    $db = mysql_connect($host,$login,$pwd) or die('Impossible de se connecter'); 
     
    // on seléctionne la base
    mysql_select_db($bdd,$db) or die('Impossible de se connecter'); 
     
    // on crée la requête SQL
    $sql = 'SELECT * FROM MOTS_CLES ORDER BY MOT_CLE';
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
     
    echo '<ul>';
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req)) {
        // on affiche les informations de l'enregistrement en cours
        echo '<li><input type="checkbox" name="lien" value="'.$data['ID_MOT'].'" /></li>';
    }
    echo '</ul>';
     
    // on ferme la connexion à mysql
    mysql_close();
    ?>
    </td>
    Je n'ai pas remarqué d'erreur sur la ligne orange.
    Par contre, le UL à la fin doit être : </ul> et non <\ul>

    De même que le INPUT n'est pas coorecte car tu y mets un attribut VALUE mais aussi une valeur entre les balises, ce qui faire 2 valeurs finalement.
    Utilise le input comme dans le code ci-dessus, c'est plus simple.

    Puis faut mettre des double quote à TOUS les attributs HTML, sans exception.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Merci pour ces corrections.

    Par contre, en ce qui concerne le input, à ce que j'ai compris, l'attribut VALUE sert à préciser le texte qui sera envoyer au moment du SUBMIT et la valeur entre les balises indique le texte à afficher pour l'utilisateur.

    Et, pour en revenir à mon problème d'origine :

    FreshHTML colore pour la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // on se connecte à MySQL
                $db = mysql_connect($host,$login,$pwd) or die('Impossible de se connecter');
    Ce qu'il fait apriori pour les texte.

    Il le fait aussi ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     // on envoie la requête
                $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    Si il voit du texte ou il n'y en a pas, c'est logique qu'il voit des fins de texte où il n'y en a pas non plus ...

    Je me demande donc si il n'y a pas un problème avec ces fonctions, ou les 'or die()' peut être ...

    Autre chose pas très logique :

    J'ai d'abord testé ce code à mon boulot, SANS BASE DE DONNEES et il ne m'a pas affiché l'erreur. Si je n'ai accès à aucune base de données il ne devrait pas se connecter et donc aller dans le 'or die()', non ??

    Merci en tout cas à RunCodePhp pour sa réponse preste et à d'avance à tout autre qui voudrait m'aider.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    Oo

    Je viens d'avoir un flash !
    Il considère mon script comme une balise géante !
    Et donc, bien sûr, si je ferme la balise heu bah elle se ferme est le reste est traité comme du texte inter balise ou quelque chose de ce type...

    Donc le problème viendrait de la balise PHP qui n'est pas reconnue comme telle ?!

    Une idée ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 16
    Par défaut
    J'ai eu un second flash ...

    Je pense que mon script est tout simplement pas interprété. J'espère avoir les moyens de tester ça au boulot mais c'est ce qui me semble le plus cohérent.

  6. #6
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Je ne connais pas FreshHTML, mais comme ça j'ai tendance à dire qu'il n'est pas fait pour faire du code Php mais essentiellement du HTML.

    Faudrait approfondir la question, mais je te conseillerais d'utiliser un éditeur de texte plus évolué si tu veux coder en HTML, CSS et surtout Php et SQL.
    Un éditeur comme notepad+, PSPAD, etc ..., ou NetBeans que j'utilise depuis peu.

    Sinon, l'éditeur de texte et son interprétation du code et de sa coloration syntaxique c'est une chose, mais que ce passe t-il vraiment quand tu pointe sur ta page dans ton environnement de développement, quand tu visualise ta page dans ton navigateur ? (-http://.../tapage.php)
    Dans quel environnement fais tu tes essai ? (en local, ? distant ? quel type)
    Est ce qu'un simple echo 'Hello Wold !'; retourne Hello Wold ! à l'écran ?

    Essai de provoquer une erreur volontaire, genre echo fonctionExistePas();
    Si tu n'as pas de message d'erreur d'afficher, alors faut modifier la directive display_errors du php.ini et la mettre à On (et redémarrer Apache).
    Après ça doit afficher l'erreur.


    Pour la syntaxe du SUBMIT, je ne peux pas te le confirmer.
    Disons que j'ai jamais procédé ainsi car je ne trouve pas ça logique d'avoir 2 valeurs.
    Mais tu n'as peut être pas tord.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ZF 1.11] Zend_Db_Select convertit mes chaînes de caractères
    Par gwinyam dans le forum Zend_Db
    Réponses: 7
    Dernier message: 04/10/2011, 20h14
  2. Réponses: 5
    Dernier message: 06/11/2010, 20h46
  3. Réponses: 28
    Dernier message: 11/10/2006, 23h36
  4. Réponses: 2
    Dernier message: 16/10/2005, 00h29
  5. Réponses: 3
    Dernier message: 09/05/2002, 02h39

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