Sujet fermé
Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

[Résolu]Agrèger le résultat d'une requète dans un seul champ ?
#1

Bonjour,

J'ai une requête sur une table "mabase" intégrée à la base cms qui extrait la valeur de 8 champs de type varchar.
Je souhaite afficher en résultat les Valeurs dans un seul champs, et ne trouve pas la bonne syntaxe pour concaténer l'ensemble !
Ma requête :
Code :
$query = 'SELECT `cms_mabase`.`qualite`, `cms_mabase`.`civilite`, `cms_mabase`.`nom`, `cms_mabase`.`prenom`, `cms_mabase`.`A01`, `cms_mabase`.`A02`, `cms_mabase`.`A03`,`cms_mabase`.`A04`,`cms_mabase`.`A05`,`cms_mabase`.`A06`,`cms_mabase`.`A07`,`cms_mabase`.`A08`'
        . ' FROM cms_mabase'
        . ' WHERE ((`cms_mabase`.`A01`=\'Homéopathie\')OR (`cms_mabase`.`A02`=\'Acupuncture\')OR (`cms_mabase`.`A03`=\'Ostéopathie\')OR (`cms_mabase`.`A04`=\'Dentisterie énergétique\')OR (`cms_mabase`.`A05`=\'Nutrition\')OR (`cms_mabase`.`A06`=\'Psychiatrie humaine\')OR (`cms_mabase`.`A07`=\'Médecine globale\')OR (`cms_mabase`.`A08`=\'Vétérinaire\'))'
        . ' ';
Et le code d'affichage du résultat :
Code :
$resultChamps1 = $dbresult->fields['qualite'];
$resultChamps2 = $dbresult->fields['civilite'];
$resultChamps3 = $dbresult->fields['nom'];
$resultChamps4 = $dbresult->fields['prenom'];
$resultChamps5 = $dbresult->fields['A01'.'A02'];
qui est accepté par Smarty, mais n'affiche plus rien dans le champs5 (alors que fields['A01']; affiche au moins le premier terme du résultat !)

J'ai essayé pas mal de syntaxe, mais ne trouve pas la bonne.
Merci de votre aide !

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS : 1.6.7
#~ Version du MLE si existante :
#~ Informations Système :
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~

Philippe
CmsMs V1.6.11 Fr (merci jce) et V1.11.x Fr
Hébergeur Free.fr, Gandi.net (GandiAI et SimpleHosting)
#2

re,

Si tu fais une concaténation
echo '$resultChamps1.' '.$resultChamps2'.' '.$resultChamps3'.' '.$resultChamps4'.' '.$resultChamps5';
ça donne quoi ?

J-C Etiemble v 2.2.xx
#3

Bonjour jce,

jce76350 a écrit :re,

Si tu fais une concaténation
echo '$resultChamps1.' '.$resultChamps2'.' '.$resultChamps3'.' '.$resultChamps4'.' '.$resultChamps5';
ça donne quoi ?
Heuuu ... merci jce, mais j'ai dû mal expliquer mon objectif : je souhaite concaténer seulement le résultat des champs A01,A02,A03 .., A08 dans le champs6
Je redonne mon code complet, que j'ai un peu réduit sur la clause WHERE :
Code :
echo '<table>
echo '<thead><tr>';
echo "<th>Qualité</th>";
echo "<th>|Ville</th>";
echo "<th>|Civilité</th>";
echo "<th>|Nom</th>";
echo "<th>|Prénom</th>";
echo "<th>|Spécialités médicales</th>";
echo "<th>|Spécialités cycle long</th>";
echo "<th>|Spécialités cycle court</th>";
echo "</tr></thead>";
global $gCms; //pour pouvoir travailler avec les objets, classes et méthodes du cms
$db = &$gCms->GetDb(); //connection à la bd cms
$query = 'SELECT `cms_mabase`.`qualite`,`cms_mabase`.`ville`, `cms_mabase`.`civilite`, `cms_mabase`.`nom`, `cms_mabase`.`prenom`, `cms_mabase`.`A01`, `cms_mabase`.`A02`, `cms_mabase`.`A03`,`cms_mabase`.`A04`,`cms_mabase`.`A05`,`cms_mabase`.`A06`,`cms_mabase`.`A07`,`cms_mabase`.`A08`'
        . ' FROM cms_mabase'
        . ' WHERE ((`cms_mabase`.`A01`)OR (`cms_mabase`.`A02`)OR (`cms_mabase`.`A03`)OR (`cms_mabase`.`A04`)OR (`cms_mabase`.`A05`)OR (`cms_mabase`.`A06`)OR (`cms_mabase`.`A07`)OR (`cms_mabase`.`A08`)IS NOT NULL)'
        . ' ORDER BY `cms_mabase`.`ville`'
        . ' ';
$dbresult = &$db->Execute($query);//exécution de la requête
    while ($dbresult && !$dbresult->EOF)
    {
$resultChamps1 = $dbresult->fields['qualite'];
$resultChamps2 = $dbresult->fields['ville'];
$resultChamps3 = $dbresult->fields['civilite'];
$resultChamps4 = $dbresult->fields['nom'];
$resultChamps5 = $dbresult->fields['prenom'];
$resultChamps6 = $dbresult->fields['A01'];
echo <<<REQUETE
<tr>
<td>{$resultChamps1}</td>
<td>|{$resultChamps2}</td>
<td>|{$resultChamps3}</td>
<td>|{$resultChamps4}</td>
<td>|{$resultChamps5}</td>
<td>|{$resultChamps6}</td>
</tr>
REQUETE;
    $dbresult->MoveNext();//enregistrement suivant
}//tous les enregistrements sont dans des tableaux
if ($dbresult) $dbresult->Close();//on ferme la connection
echo "</table>";
Une autre idée ?
Je suis en train de lire un tuto sur la concaténation mysql ... mais pour l'instant pas trouvé !

Philippe
CmsMs V1.6.11 Fr (merci jce) et V1.11.x Fr
Hébergeur Free.fr, Gandi.net (GandiAI et SimpleHosting)
#4

Jce semble t'avoir donné la bonne solution.
Code :
$resultChamps1 = $dbresult->fields['qualite'];
$resultChamps2 = $dbresult->fields['ville'];
$resultChamps3 = $dbresult->fields['civilite'];
$resultChamps4 = $dbresult->fields['nom'];
$resultChamps5 = $dbresult->fields['prenom'];
$resultChamps6 = $dbresult->fields['A01'];
$resultChamps7 = $dbresult->fields['A02'];
$resultChamps8 = $dbresult->fields['A03'];
$resultChamps9 = $dbresult->fields['A04'];
$resultChamps10 = $dbresult->fields['A05'];
etc...
$concatenationChamps = $resultChamps6." | ".$resultChamps6." | etc...
...
<td>|{$concatenationChamps }</td>
#5

Bonjour Jean,

Mes excuses jce : je n'avais pas bien pris le temps de suivre la piste ... !

Jean le Chauve a écrit :Jce semble t'avoir donné la bonne solution.
Code :
$resultChamps1 = $dbresult->fields['qualite'];
$resultChamps2 = $dbresult->fields['ville'];
$resultChamps3 = $dbresult->fields['civilite'];
$resultChamps4 = $dbresult->fields['nom'];
$resultChamps5 = $dbresult->fields['prenom'];
$resultChamps6 = $dbresult->fields['A01'];
$resultChamps7 = $dbresult->fields['A02'];
$resultChamps8 = $dbresult->fields['A03'];
$resultChamps9 = $dbresult->fields['A04'];
$resultChamps10 = $dbresult->fields['A05'];
etc...
$concatenationChamps = $resultChamps6." | ".$resultChamps6." | etc...
...
<td>|{$concatenationChamps }</td>
Détaillé ainsi, cela deviens une évidence !
Merci à vous deux !
Je test ... et reviens ...

Philippe
CmsMs V1.6.11 Fr (merci jce) et V1.11.x Fr
Hébergeur Free.fr, Gandi.net (GandiAI et SimpleHosting)
#6

Re,

Donc, voici le code qui réponds à mon objectif :
Code :
{
$resultChamps1 = $dbresult->fields['qualite'];
$resultChamps2 = $dbresult->fields['ville'];
...
$resultChamps6 = $dbresult->fields['A01'];
$resultChamps7 = $dbresult->fields['A02'];
...
$resultChamps13 = $dbresult->fields['A08'];
$SpeMed = $resultChamps6."<br />"."|".$resultChamps7."|".$resultChamps8."|".$resultChamps9."|".$resultChamps9."|".$resultChamps10."|".$resultChamps11."|".$resultChamps12."|".$resultChamps13;
echo <<<REQUETE
<tr>
<td>{$resultChamps1}</td>
<td>|{$resultChamps2}</td>
<td>|{$resultChamps3}</td>
<td>|{$resultChamps4}</td>
<td>|{$resultChamps5}</td>
<td>|{$SpeMed}</td>
</tr>
Maintenant, me reste à construire le test qui affichera seulement les valeurs cherchées ! mais ça, c'est un peu d'attention et de précision dans le code !
Et je reviendrai mettre le lien vers la page quand ce sera propre !
Merci !

Philippe
CmsMs V1.6.11 Fr (merci jce) et V1.11.x Fr
Hébergeur Free.fr, Gandi.net (GandiAI et SimpleHosting)
Sujet fermé


Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)