8768 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai écrit une requête qui me renvoie bien le résultat escompté.
J'aimerai maintenant que chaque ligne du résultat soit concaténé
dans une variable $chaine_contrat et que le résultat final soit :
|designation1;quantités1;prix1|designation2;quantités2;prix2|designation3;quantités3;prix3...
Le problème c'est que je n'ai aucune idée des commandes à utiliser pour
arriver à ce résultat...
Je vous remercie d'avance pour votre aide !

Voici où j'en suis :
// On récupère aussi la composition du contrat à afficher :
        $requete2 = $bdd->prepare('
            SELECT prestations.designation,compositions.quantites, compositions.prix 
            FROM compositions
            INNER JOIN prestations
            ON prestations.id_prestation=compositions.id_prestation
            WHERE compositions.id_contrat= :id_contrat');
        $requete2->execute(array(
            'id_contrat' => $_GET['id_contrat']
        ));        
        $composition_contrat = $requete2->fetchAll(); 
        echo '<pre>';
        print_r ($composition_contrat);
        echo '</pre>';

Modifié par etienne69 (08 Dec 2021 - 20:55)
Modérateur
Bonjour,

On peut parcourir le tableau de résultat avec un foreach().

Par exemple :
$s="|";
foreach($composition_contrat as $a)
{
	$s.=$a["designation"].";";
	$s.=$a["quantites"].";";
	$s.=$a["prix"]."|";
}
echo $s;

Amicalement,
Modifié par parsimonhi (08 Dec 2021 - 16:07)
Meilleure solution
C'est super, merci parsimonhi, c'est exactement ce que je cherchais !
J'ai juste modifié la séquence pour ne pas avoir la variable qui se termine
par |
$chaine_contrat='';
        foreach($composition_contrat as $a)
        {
            $chaine_contrat.="|";
            $chaine_contrat.=$a["designation"].";";
            $chaine_contrat.=$a["quantites"].";";
            $chaine_contrat.=$a["prix"];
        }


Je dois maintenant passer cette variable dans un script pour la partie dynamique
de la page...
Est-ce correct d'écrire ça :
var chaine_contrat="<?php echo $chaine_contrat?>"; 

ou existe t-il une forme plus "correcte" ?
Modifié par etienne69 (08 Dec 2021 - 21:00)
Modérateur
Bonjour,

C'est possible de faire comme tu fais.

On peut aussi employer <?= ... ?> et ça donne ça :
var chaine_contrat="<?= $chaine_contrat?>";


Certains puristes disent qu'il faut éviter de saupoudrer du code js avec du code php. Je ne suis pas aussi catégorique. Parfois, c'est tellement plus simple que ça a du sens.

Amicalement,
Modifié par parsimonhi (08 Dec 2021 - 21:29)
Merci pour ton aide une nouvelle fois...
J'ai lu aussi que ce n'était pas conseillé, mais je ne voyais pas comment passer des données en provenance d'une table dans mon script...
Modifié par etienne69 (08 Dec 2021 - 21:58)