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 :

Boucle While + Incrémentation de variablerécupérée en JS


Sujet :

Langage PHP

  1. #1
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut Boucle While + Incrémentation de variablerécupérée en JS
    Salutations,

    Je n'arrive pas à récupérer le contenu d'une variable PHP dans une boucle While.

    Voici mon code actuel :

    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
    <?php
    	// On fait une boucle qui va faire un tour pour chaque enregistrement
    	$i = 0;
    	while ($data = $sql->fetch_assoc())
    		{
    		$plusi = "myInput" . ++$i;
    		echo $plusi; // Debugg
    		$Text1 = $data['Reponse'];
    		$Text2 = str_replace("'","\'",$Text1);
    		$Text2 = str_replace('<br>','\r\n',$Text1);
    		?>
     
            <input type="text" id="<? echo $plusi; ?>" value="<? echo utf8_encode($Text2); ?>">
            <button onclick="myFunction()">Copie</button>
     
    		<br />
     
    		<?php 
    		}
    ?>
     
    <script>
    	function myFunction() {
    		var copyText = document.getElementById("<? echo $plusi; ?>");
    		copyText.select();
    		document.execCommand("copy");
    		alert("Copied the text: " + copyText.value);
    	}
    </script>
    Cela me récupère à chaque fois la dernière de la boucle.

    Ou me suis-je planté ?

    Merci de votre aide...
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    bah c'est normal, la valeur de $plusi dans le script js est obligatoirement la dernière valeur de l'itération dans la mesure ou le bloc de script js est en dehors du corps de la boucle while et utilise <?= qui est équivalent à <?php echo

  3. #3
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    J'ai pourtant essayé de l'inclure dans la boucle aussi, mais sans résultat...
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • PHP est un langage "coté serveur".
      Il "fabrique" le code (HTML, JS,...) qui sera affiché par le navigateur.
    • Alors que JavaScript est un langage "coté client".



    Voici une solution possible :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    	// On fait une boucle qui va faire un tour pour chaque enregistrement
    	$i = 0;
    	while ($data = $sql->fetch_assoc())
    	{
    		$inputId = 'myInput' . ++$i;
    		$inputVal = htmlspecialchars( $data['Reponse'], ENT_QUOTES, 'UTF-8' );
    ?>
    		<input type="text" id="<? echo $inputId; ?>" value="<? echo $inputVal; ?>" />
    		<button onclick="myFunction('<? echo $inputId; ?>')">Copie</button>
    		<br />
    <?php 
    	}
    ?>
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script>
    	function myFunction( id ) {
    		var copyText = document.getElementById( id );
    		copyText.select();
    		document.execCommand("copy");
    		alert("Copied the text: " + copyText.value);
    	}
    </script>
    Dernière modification par Invité ; 26/05/2019 à 10h19.

  5. #5
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    Merci, le moteur fonctionne maintenant.

    Merci aussi d'avoir pris le temps de nettoyer ma laborieuse tentative de codage UTF-8.
    Néanmoins, htmlspecialchars pose visiblement un pb, la variable devient vide.
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Casio Voir le message
    ...la variable devient vide...
    Tout dépend comment :
    • est configurée la table SQL (ISO ? UTF-8 ?)
    • (mais SURTOUT) est configurée la connexion (encodage ?)

    Exemple :
    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
    	// ---------------------
    	// CONNEXION
    	$pdo_conn['hostname']	= '.............'; 		// voir hébergeur ou "localhost" en local
    	$pdo_conn['database']	= '.............'; 		// nom de la BdD
    	$pdo_conn['username']	= '.............';		// identifiant "root" en local
    	$pdo_conn['password']	= '.............';		// mot de passe (vide en local)
    	// ---------------------
    	// connexion à la Base de Données
    	// chaine de connexion (DSN)
    	$pdo_conn['strConn'] 	= 'mysql:host='.$pdo_conn['hostname'].';dbname='.$pdo_conn['database'].';charset=utf8';	// UTF-8
    	$pdo_conn['extraParam']	= array(
    							PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,		// rapport d'erreurs sous forme d'exceptions
    							PDO::ATTR_PERSISTENT => true, 						// Connexions persistantes
    							PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 	// fetch mode par defaut
    							PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"	// encodage UTF-8
    							);
    	// Instancie la connexion
    	$pdo = new PDO($pdo_conn['strConn'], $pdo_conn['username'], $pdo_conn['password'], $pdo_conn['extraParam']);
    	// ---------------------
    A NOTER :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    							PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"	// encodage UTF-8

  7. #7
    Membre du Club Avatar de Casio
    Homme Profil pro
    Historien numérique
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Historien numérique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Points : 59
    Points
    59
    Par défaut
    Bon, j'ai résolu le topo en faisant comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    		$inputId = 'myInput' . ++$i;
    		$Text = utf8_encode($data['Reponse']);
    		$inputVal = str_replace("'","\'",$Text);
    		$inputVal = str_replace("<br>", "\n", $Text);
    Et la, ça fonctionne correctement (saut à la ligne dans les <Textarea> et accents.).
    Digital self-made Man - OnLine since 1993.
    https://wda-fr.org - https://mathieu.charreyre.net

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

Discussions similaires

  1. [Python 3.X] boucle while, incrémentation du compteur
    Par BenkessiratAmina dans le forum Général Python
    Réponses: 4
    Dernier message: 03/02/2018, 11h37
  2. Incrémenter un Array par une boucle While
    Par Misoss dans le forum Langage
    Réponses: 3
    Dernier message: 09/08/2010, 21h38
  3. Boucle while sans incrémentation
    Par Jcpan dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2009, 16h35
  4. probléme d'incrémentation dans la boucle while
    Par cmoi_doudi dans le forum Langage
    Réponses: 3
    Dernier message: 28/05/2008, 10h19
  5. boucle while et post incrémentation
    Par tut dans le forum C++
    Réponses: 7
    Dernier message: 10/12/2004, 17h24

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