8768 sujets

Développement web côté serveur, CMS

Bonjour,
Je viens de faire ce code de 3 kilomètre de long.
J'aimerai savoir s'il est possible de passer par un boucle while afin de remplir les champs qui changent à chaque fois, suivant les données.

Voici le code, n'ayez pas peur Smiley biggrin
[code=php]
<!-- //------------ R22 -->

<?PHP
function RedondanceCopierBalisesR22()
{
// Le formulaire condition ELSEIF
?>
<table align="center">
<tr align="center">
<td>
<form id="form-copier">
<!-- //champ de saisie de texte -->
<textarea class="js-text1" id="texte1" cols="80" rows="5" disabled="disabled"><?php
echo $_SESSION["BalisesGR21"];
?></textarea>
<!-- //Bouton copier -->
<input type="button" class="js-copytextbtn1" value="Copier la chaine" onclick="this.disabled = 'disabled';this.type='checkbox';this.checked='checked'">

<textarea class="js-text2" id="texte2" cols="80" rows="5" disabled="disabled"><?php
echo $_SESSION["BalisesGR22"];
?></textarea>
<!-- //Bouton copier -->
<input type="button" class="js-copytextbtn2" value="Copier la chaine" onclick="this.disabled = 'disabled';this.type='checkbox';this.checked='checked'">

</div>
</form>
</td>

</tr>
</table>
<!-- Script bouton 1 -->
<script>
(() => {
const button = document.querySelector('.js-copytextbtn1');

button.addEventListener("click", () => {
const elemText = document.getElementById("texte1");
// supprimer l'attribut disabled si existe
const disabled = elemText.getAttribute("disabled");
elemText.removeAttribute("disabled");
// selectionne le contenu
elemText.focus();
elemText.select();
// copy
document.execCommand("copy");
// réactive l'attribut disabled si existe
disabled && elemText.setAttribute("disabled", disabled);
// remise focus sur Btn
button.focus();
try {
if (document.execCommand('copy')) {
var alerte = "Champs Work Notes* "
alert('La chaine des Balises a été copié ! \n\r Il suffit de la coller dans le ' + alerte + 'de ServiceNow.');

}
} catch (err) {
alert('Pas possible de copier.');
}

window.getSelection().removeAllRanges();
});

})();
</script>
<!-- Script bouton 2 -->
<script>
(() => {
const button = document.querySelector('.js-copytextbtn2');

button.addEventListener("click", () => {
const elemText = document.getElementById("texte2");
// supprimer l'attribut disabled si existe
const disabled = elemText.getAttribute("disabled");
elemText.removeAttribute("disabled");
// selectionne le contenu
elemText.focus();
elemText.select();
// copy
document.execCommand("copy");
// réactive l'attribut disabled si existe
disabled && elemText.setAttribute("disabled", disabled);
// remise focus sur Btn
button.focus();
try {
if (document.execCommand('copy')) {
var alerte = "Champs Work Notes* "
alert('La chaine des Balises a été copié ! \n\r Il suffit de la coller dans le ' + alerte + 'de ServiceNow.');

}
} catch (err) {
alert('Pas possible de copier.');
}

window.getSelection().removeAllRanges();
});

})();
</script>
<?PHP
}
?>

<!-- //------------ R23 -->

<?PHP
function RedondanceCopierBalisesR23()
{
// Le formulaire condition ELSEIF
?>
<table align="center">
<tr align="center">
<td>
<form id="form-copier">
<!-- //champ de saisie de texte -->
<textarea class="js-text1" id="texte1" cols="80" rows="5" disabled="disabled"><?php
echo $_SESSION["BalisesGR21"];
?></textarea>
<!-- //Bouton copier -->
<input type="button" class="js-copytextbtn1" value="Copier la chaine" onclick="this.disabled = 'disabled';this.type='checkbox';this.checked='checked'">

<textarea class="js-text2" id="texte2" cols="80" rows="5" disabled="disabled"><?php
echo $_SESSION["BalisesGR22"];
?></textarea>
<!-- //Bouton copier -->
<input type="button" class="js-copytextbtn2" value="Copier la chaine" onclick="this.disabled = 'disabled';this.type='checkbox';this.checked='checked'">

<textarea class="js-text3" id="texte3" cols="80" rows="5" disabled="disabled"><?php
echo $_SESSION["BalisesGR23"];
?></textarea>
<!-- //Bouton copier -->
<input type="button" class="js-copytextbtn3" value="Copier la chaine" onclick="this.disabled = 'disabled';this.type='checkbox';this.checked='checked'">
</form>
</td>

</tr>
</table>
<!-- Script bouton 1 -->
<script>
(() => {
const button = document.querySelector('.js-copytextbtn1');

button.addEventListener("click", () => {
const elemText = document.getElementById("texte1");
// supprimer l'attribut disabled si existe
const disabled = elemText.getAttribute("disabled");
elemText.removeAttribute("disabled");
// selectionne le contenu
elemText.focus();
elemText.select();
// copy
document.execCommand("copy");
// réactive l'attribut disabled si existe
disabled && elemText.setAttribute("disabled", disabled);
// remise focus sur Btn
button.focus();
try {
if (document.execCommand('copy')) {
var alerte = "Champs Work Notes* "
alert('La chaine des Balises a été copié ! \n\r Il suffit de la coller dans le ' + alerte + 'de ServiceNow.');

}
} catch (err) {
alert('Pas possible de copier.');
}

window.getSelection().removeAllRanges();
});

})();
</script>
<!-- Script bouton 2 -->
<script>
(() => {
const button = document.querySelector('.js-copytextbtn2');

button.addEventListener("click", () => {
const elemText = document.getElementById("texte2");
// supprimer l'attribut disabled si existe
const disabled = elemText.getAttribute("disabled");
elemText.removeAttribute("disabled");
// selectionne le contenu
elemText.focus();
elemText.select();
// copy
document.execCommand("copy");
// réactive l'attribut disabled si existe
disabled && elemText.setAttribute("disabled", disabled);
// remise focus sur Btn
button.focus();
try {
if (document.execCommand('copy')) {
var alerte = "Champs Work Notes* "
alert('La chaine des Balises a été copié ! \n\r Il suffit de la coller dans le ' + alerte + 'de ServiceNow.');

}
} catch (err) {
alert('Pas possible de copier.');
}

window.getSelection().removeAllRanges();
});

})();
</script>
<!-- Script bouton 3 -->
<script>
(() => {
const button = document.querySelector('.js-copytextbtn3');

button.addEventListener("click", () => {
const elemText = document.getElementById("texte3");
// supprimer l'attribut disabled si existe
const disabled = elemText.getAttribute("disabled");
elemText.removeAttribute("disabled");
// selectionne le contenu
elemText.focus();
elemText.select();
// copy
document.execCommand("copy");
// réactive l'attribut disabled si existe
disabled && elemText.setAttribute("disabled", disabled);
// remise focus sur Btn
button.focus();
try {
if (document.execCommand('copy')) {
var alerte = "Champs Work Notes* "
alert('La chaine des Balises a été copié ! \n\r Il suffit de la coller dans le ' + alerte + 'de ServiceNow.');

}
} catch (err) {
alert('Pas possible de copier.');
}

window.getSelection().removeAllRanges();
});

})();
</script>
<?PHP
}
?>

ainsi de suite jusqu'à la BaliseR10
[code]

Si oui par quoi commencer ?
Merci.
Il faut commencer par bien mettre les balises code pour que cela soit legerement plus lisible (bon je suis pas sur que cela changerait grand chose de toute façon...)

Si je comprends bien (mais je suis plus ou moins sur de ne pas avoir compris grand chose Smiley sweatdrop ), tu écris un code php qui "affiche" du html et du code javascript qui a plus ou moins toujours la tronche.

Donc plutôt que "d'afficher" toujours plus ou moins le code, il va bien falloir utilisé une boucle pour "générer" du code.
Je ne sais pas encore si ça sera du while, plutôt du for j'ai l'impression (c'est un nombre de cas connu à l'avance)

Pour pouvoir faire des boucles, la première chose à faire ça va être de bien différencier ce qui change à chaque passage de boucle, à mon avis le plus simple sera sans doute de rajouter une ligne à la fois, voir le code obtenu jusqu'à avoir obtenu ton code complet.

Je ne sais pas exactement, mais je pense que je séparerai aussi en plusieurs fonctions php pour distinguer ce que chaque fonction php va devoir générer : genre une fonction pour générer le code html, l'autre pour générer le code javascript

(Bon après pour ce qui est du javascript, je me demande à quel point il ne serait pas possible de faire une fonction javascript plus générique qui fonctionne dans un cas "théorique" et à laquelle on ne passerais pas juste un id en paramètre pour la faire fonctionner sur le bon élément)
Modifié par Mathieuu (26 Aug 2022 - 14:52)
Meilleure solution
Bonjour Mathieuu,
Comme toujours tu sais trouver les bonnes solutions.
Tu as bien compris le code.
Je vais essayer de faire des fonctions pour JS.
Merci pour toute l'aide.
Modifié par wisefun77 (29 Aug 2022 - 11:07)