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 :

Mettre du code php dans une chaîne de caractère envoyé par AJAX


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Points : 39
    Points
    39
    Par défaut Mettre du code php dans une chaîne de caractère envoyé par AJAX
    Bonjour,

    J'ai une chaîne de caractère que je forme à partir de concaténation, après je vais l'envoyer à ajax.
    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
    27
    28
    29
    30
    31
    32
     
    $htm0='<fieldset>
        <legend>Modifier ici les infos du bons</legend>
     
            <div class="form-group-inner">
           <div class="row">
            <div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
             <label class="login2 pull-right pull-right-pro">Participants</label>
             </div>
              <div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
               <div class="chosen-select-single">
                <select data-placeholder="Sélectionner les participants"
                 class="chosen-select" multiple="" tabindex="-1" id="Intervenants">'.<?php
     
    	$reponse_listtech = $bdd_mission_msas->query('SELECT technicien_id,nom_techicien FROM techniciens');
     
     
    while ($donnees_listtech  = $reponse_listtech->fetch())
    {
     
    echo '<option value="'.$donnees_listtech['technicien_id'].'">'.$donnees_listtech['nom_techicien'].'</option>';
     
    }
    $reponse_listtech->closeCursor();
    ?>
    .'</select>
         </div>
           </div>
            </div>
             </div>
      </fieldset>';
      echo $htm0 ;
    Mais ça me signale l'erreur
    ( ! ) Parse error: syntax error, unexpected '<' in C:\wamp\www\maintenance.CHNMFT\moidifier_un bon_de_travail.php on line 33

    Quelqu'un peut-il m'aider ?

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Tu mélanges 2 choses : afficher du HTML à la volée via PHP, ou bien faire entrer tout ton HTML dans une variable PHP ($htm0) par concaténation (.=) .
    Or, ici, tu ne dois faire que le 2. Ce qui donne ce 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
    $htm0='<fieldset>
        <legend>Modifier ici les infos du bons</legend>
     
            <div class="form-group-inner">
           <div class="row">
            <div class="col-lg-3 col-md-3 col-sm-3 col-xs-12">
             <label class="login2 pull-right pull-right-pro">Participants</label>
             </div>
              <div class="col-lg-9 col-md-9 col-sm-9 col-xs-12">
               <div class="chosen-select-single">
                <select data-placeholder="Sélectionner les participants"
                 class="chosen-select" multiple="" tabindex="-1" id="Intervenants">';
     
    $reponse_listtech = $bdd_mission_msas->query('SELECT technicien_id,nom_techicien FROM techniciens');
    while ($donnees_listtech  = $reponse_listtech->fetch()){
      $htm0.= '<option value="'.$donnees_listtech['technicien_id'].'">'.$donnees_listtech['nom_techicien'].'</option>';
    }
    $reponse_listtech->closeCursor();
    $htm0.='</select>
         </div>
           </div>
            </div>
             </div>
      </fieldset>';
    echo $htm0 ;

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Merci pour le coup de main,

    Effectivement ça semble allez mieux. Mais mon problème est que le fonctionnement du mullti-select ne marche pas quand je l'envoi comme ça en ajax.
    Or quand je le met dans une page html simple, ça fonctionne sans aucun problème.

    Quel est le problème à ce niveau ?

  4. #4
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Compare les différences entre ta page HTML en dur qui lance bien l'Ajax, et le code source de ta page version HTML généré par le PHP, qui ne lance pas ton code Ajax.
    Compare les 2 pages entières.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Je comprends pas la notion des deux pages mais le problème viens de la chaîne renvoyé par le serveur, c'est qui compromet le fonctionnement normal du multi select.
    Or quand je me mets html normal le champ avec les options et tout, pas de soucis.

  6. #6
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Moi non plus, je ne comprends pas ce que tu dis.
    C'est gros ta page HTML, celle qui fonctionne ?
    Si c'est pas trop gros, mets le code source ici.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Points : 39
    Points
    39
    Par défaut
    Bonjour,
    quand je mets dans ma page html ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <label>Multi Select</label><select data-placeholder="Choose a Country..." id ="mltselect" class="chosen-select" multiple=""  tabindex="-1">
    <?php                    
    	$reponse_listtech = $bdd_MCHNMFT->query('SELECT technicien_id,nom_techicien FROM techniciens');
    while ($donnees_listtech  = $reponse_listtech->fetch()){
      echo '<option value="'.$donnees_listtech['technicien_id'].'">'.$donnees_listtech['nom_techicien'].'</option>';
    }
    $reponse_listtech->closeCursor();
    ?>
    </select>

    J'ai le multiple select qui fonctionne bien avec la possibilité de sectionner plusieurs valeurs qui s'affichent cote à cote dans la balise select.
    mais quand je mets ça coté client c'est dire dans ma page html

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
     
    <!DOCTYPE html>
    <?php
    include('functions.php');
         $bdd_MCHNMFT=connect();
    //session_start();
     
    	?>
     
     
    <html>
        <head>
     
     
     
            <meta charset="utf-8" />
    		<link rel="stylesheet" href="maintenance_css.css" />
    		<title>ORDRE DE MISSION MSAS</title>
     
     
     
     
        </head>
        <body>
    	 <div class="form-group-inner">
               <div class="login-btn-inner">
               <div class="row">
               <div class="col-lg-3"></div>
               <div class="col-lg-9">
               <div class="login-horizental cancel-wp pull-left">
               <button class="btn btn-sm btn-primary login-submit-cs"
                  id="modif_infos_bon">Modifier
                  </button>
                     </div>
                   </div>
                      </div>
                          </div>
                             </div>
     
    			<center><div  id="ligne_affiche_details_bon"></div></center>
     
                                            </form>
     
     
     
     
     
     
    		<script>
                  "use strict";
     
     
           $(function(){ // forme abrégée de $(document).ready(function(){
     
     
     
    			$('#modif_infos_bon').click(function( event ) {
    				event.preventDefault();
     
      // Stop form from submitting normally
          $.post(
                'moidifier_un bon_de_travail.php', // Un script PHP que l'on va créer juste après
                {
                    id_bon_travaux : $("#id_bon_travaux option:selected").val()
     
                },
     
                function(data){
     
                  document.getElementById('ligne_affiche_details_bon').innerHTML = data;
     
                },
     
                'text'
             );
     
        }
     
     
     
     
    		);
     
     
     
     
     
     
     
     
    		});
     
     
     
    		</script>
     
     
    </html>
    Là le problème survient , j'ai l'impression l'ajax corrompt le fonctionnement normal du multi select alors que je n'ai que reproduire le code coté serveur.

    voici le contenu du fichier moidifier_un bon_de_travail.php
    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
     
    <?php
    session_start();
    	include('functions.php');
         $bdd_MCHNMFT=connect();
     
        $reponse_listtech = $bdd_MCHNMFT->query('SELECT technicien_id,nom_techicien FROM techniciens');
     
     
        $htm0 = '<label>Multi Select</label>'.PHP_EOL;
        $htm0 .= '<select data-placeholder="Choose a Country..." class="chosen-select" multiple="" tabindex="-1">';
        while ($donnees_listtech  = $reponse_listtech->fetch()){
            $htm0.= '<option value="'.$donnees_listtech['technicien_id'].'">'.$donnees_listtech['nom_techicien'].'</option>';
        }
        $htm0.='</select>';
     
        echo $htm0 ;
     
    	}
     
    ?>

  8. #8
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Ben je vois déjà une grosse différence !
    Dans ta dernière version du select, tu as oublié ça : id ="mltselect"

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2019
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2019
    Messages : 138
    Points : 39
    Points
    39
    Par défaut
    Bonjour,

    Même quand je l'ajoute ça change rien. Et pourtant le innerHTML ne fait que replacer la chaîne renvoyée par le serveur donc ça devrait être la même quand on l’écrit par html normal dans la page.

  10. #10
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Est-ce que tu pourrais corriger le HTML suivant, car si tu indentais tu verrais tout de suite tes erreurs, un form fermé et pas ouvert, un body ouvert et pas fermé...

    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
    <!DOCTYPE html>
    <?php
    include('functions.php');
    $bdd_MCHNMFT=connect();
    //session_start();
    ?>
    <html>
      <head>
        <meta charset="utf-8" />
    		<link rel="stylesheet" href="maintenance_css.css" />
    		<title>ORDRE DE MISSION MSAS</title>
      </head>
      <body>
        <div class="form-group-inner">
          <div class="login-btn-inner">
            <div class="row">
              <div class="col-lg-3"></div>
              <div class="col-lg-9">
                <div class="login-horizental cancel-wp pull-left">
                  <button class="btn btn-sm btn-primary login-submit-cs" id="modif_infos_bon">Modifier</button>
                </div>
              </div>
            </div>
          </div>
        </div>
        <center><div  id="ligne_affiche_details_bon"></div></center>
      </form>
      <script>
        "use strict";
        $(function(){ // forme abrégée de $(document).ready(function(){
          $('#modif_infos_bon').click(function( event ) {
            event.preventDefault();
            //Stop form from submitting normally
            $.post(
              'moidifier_un bon_de_travail.php', // Un script PHP que l'on va créer juste après
              {
                id_bon_travaux : $("#id_bon_travaux option:selected").val()
     
              },
              function(data){
                document.getElementById('ligne_affiche_details_bon').innerHTML = data;
              },
              'text'
            );
          });
        });
        </script>
    </html>
    Quant à l'ajax, ce serait bien de rester en JQuery :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
              function(data){
                $('#ligne_affiche_details_bon').html(data);
              },

Discussions similaires

  1. Réponses: 5
    Dernier message: 20/12/2016, 14h30
  2. [PHP 5.3] [PHP-CLI] Interprêter code PHP dans une chaîne
    Par houpli dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2012, 00h41
  3. Comment mettre du code php dans une condition javascript ?
    Par Alexandrebox dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/04/2010, 12h55
  4. Mettre du code php dans une variable
    Par JohnBrown011 dans le forum Langage
    Réponses: 2
    Dernier message: 19/05/2008, 13h33
  5. Mettre un code php dans une variable...
    Par kedare dans le forum Langage
    Réponses: 6
    Dernier message: 19/09/2005, 12h55

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