Recherche php incrementation

Fermé
BiscuBu1254 - 14 oct. 2020 à 11:52
yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 - 16 oct. 2020 à 13:19
Bonjour,

je voudrais savoir si il est possible de faire quelque chose comme ça:

aller chercher dans un <row>, une donnée dans <col> entre toutes les col présentes
avec une boucle for qui incrémente et qui affiche la donnée qu'on affiche

merci d'avance
A voir également:

6 réponses

yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473
14 oct. 2020 à 12:17
bonjour,
chercher quoi, dans quoi?
de quel genre d'objet s'agit-il?
comment déterminer lequel doit s'afficher?
dans quel contexte fais-tu cela?
0
Bonjour,
je voudrais savoir si c'est possible de récupérer une certaine donnée à chaque fois qu'elle boucle dans une <row>.
j'utilise du xml dans du php et je fais un appel xml dans le fichier php

avec le code ce sera plus simple :

le code xml :
<RESULTSET FOUND="3">
<ROW>
<COL>
<DATA>AAA</DATA>
</COL>
<COL>
<DATA>07/10/2020</DATA>
</COL>
<COL>
<DATA>ADCND</DATA>
</COL>
</ROW>
<ROW>
<COL>
<DATA>ADB</DATA>
</COL>
<COL>
<DATA>09/10/2020</DATA>
</COL>
<COL>
<DATA>ABC</DATA>
</COL>
</ROW>
<ROW>
<COL>
<DATA>BBC</DATA>
</COL>
<COL>
<DATA>12/10/2020</DATA>
</COL>
<COL>
<DATA>BCD</DATA>
</COL>
</ROW>
</RESULTSET>

le code php :
<?php
$xml = simplexml_load_file("extractions.xml");
foreach($xml->RESULTSET as $RESULSET) {
foreach($RESULSET->ROW[2]->COL[5] as $ROW)
echo $ROW;
}


Est-ce possible de remplacer le deuxieme foreach par du if ou for, si le résultat est inférieur au résultat trouvé donc il passe dans la boucle et affiche la valeur demandé
0
je cherche a faire une conversion du foreach en for ou en if, je ne sais pas ce qui serait pratique pour ce que je souhaite avoir
0
yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473
14 oct. 2020 à 17:48
tu n'expliques pas ce que tu souhaites réaliser.
"si le résultat est inférieur au résultat trouvé" est particulièrement difficile à comprendre.
inutile d'expliquer comment tu penses modifier ton code qui ne fonctionne pas, explique plutôt le résultat attendu, peut-être avec un exemple?
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
peut-être veux-tu faire ceci:
foreach($xml->RESULTSET as $RESULSET) {
      foreach($RESULSET->ROW[2]->COL[5] as $ROW) {
           if $ROW = "cequejecherche" {
                 echo $ROW;
           {
      }
}
0
Ah désolée, alors je rééxplique. J'ai des données dans un fichier xml, il me retourne des résultats (le RESULTSET found=3) . Cela contient différentes lignes (c'est les row).

J'aimerais faire une requête en PHP pour chercher une seule donnée (dans une col) et d'une certaine ligne (les row) en fonction des résultats trouvés . Donc remplacer le 2eme foreach par un IF ou un FOR

Par exemple, je souhaite avoir la data de la COL 1 qui est dans la ROW 1 (quand le resultset est found = 3 par exemple).

Mon code php je l'avais modifié ici car le fichier xml que j'utilise est beaucoup plus lourd :

Le code php
<?php
$xml = simplexml_load_file("extractions.xml");
foreach($xml->RESULTSET as $RESULSET) {
foreach($RESULSET->ROW[1]->COL[2] as $ROW)
echo $ROW;
}
?>


le code xml (modifié) :
<RESULTSET FOUND="3">
<ROW>
<COL>
<DATA>AAA</DATA>
</COL>
<COL>
<DATA>07/10/2020</DATA>
</COL>
<COL>
<DATA>ADCND</DATA>
</COL>
</ROW>
<ROW>
<COL>
<DATA>ADB</DATA>
</COL>
<COL>
<DATA>09/10/2020</DATA>
</COL>
<COL>
<DATA>ABC</DATA>
</COL>
</ROW>
<ROW>
<COL>
<DATA>BBC</DATA>
</COL>
<COL>
<DATA>12/10/2020</DATA>
</COL>
<COL>
<DATA>BCD</DATA>
</COL>
</ROW>
</RESULTSET>


Il me retourne ce résultat:
07/10/2020
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BiscuBu1254
15 oct. 2020 à 12:03
Et par exemple, je veux récuperer la DATA 3 dans la row 2
donc ça doit me donner BCD
0
yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473
15 oct. 2020 à 12:34
alors peut-être ainsi:
foreach($xml->RESULTSET as $RESULSET) {
      $ROW = $RESULSET->ROW[3]->COL[3] 
      echo $ROW;
}    
0
BiscuBu1254 > yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024
Modifié le 15 oct. 2020 à 15:56
D'accord merci ça a résolu mon une partie de mon problème.

Autre question si je veux faire une boucle, pour isoler les <row> et avoir a l'intérieur de la boucle la sélection des élements <col > et dans chaque <col> j'aimerais avoir chaque data
Il faut faire un foreach ou un for ?
0
yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473 > BiscuBu1254
15 oct. 2020 à 16:46
alors peut-être ainsi:
foreach($xml->RESULTSET as $RESULSET) {
      foreach($RESULSET->ROW as $ROW) {
            foreach($ROW->COL as $COL) {
                 echo $COL;
           {
      }
}
0
BiscuBu1254 > yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024
Modifié le 16 oct. 2020 à 11:13
Merci pour l'aide ! Petite question est-ce qu'il ya un moyen plus simple que de faire un echo de chaque COL ?
Si par exemple j'ai 5 COL j'aimerais les afficher chaque fois que ça boucle sur le ROW

Ma solution est:
foreach ($xml->RESULTSET as $RESULSET) {
 foreach ($RESULSET->ROW as $ROW) {
  foreach ($ROW->COL[0] as $COL) {
   echo "<br>".$COL . "<br>";
   // A l'intérieur de la boucle on récupère chaque donnée des row
   echo $ROW->COL[1]->DATA;
  echo $ROW->COL[2]->DATA;
  echo $ROW->COL[3]->DATA;
  }
 }
}


Cela me retourne ce résultat:

AAA
07/10/2020
ADCND

ADB
09/10/2020
ABC

BBC
12/10/2020
BCD
0
yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473 > BiscuBu1254
16 oct. 2020 à 12:05
une solution plus simple pour obtenir quoi?
as-tu testé la suggestion en #9?
0
BiscuBu1254
16 oct. 2020 à 12:17
Oui j'ai essayé ta solution, c'était plus simple que la solution que j'ai mis en place de mon côté qui ne marchait pas
Le code fonctionne je récupère bien les COL de chaque ROW.


Je souhaite récupérer toutes les DATA de chaque COL (voir mon fichier XML)
C'est mon dernier soucis, après j'aurais résolu le problème ...
Car mon fichier (je l'ai pas mis ici car assez lourd), il contient 42 COL ...

J'affiche bien les data avec le :
 echo $ROW->COL[1]->DATA."<br>";


Sauf que pour afficher toutes les data je fais par exemple :
foreach ($ROW->COL[0] as $COL) {
echo $ROW->COL[1]->DATA."<br>";
echo $ROW->COL[2]->DATA."<br>";
echo $ROW->COL[3]->DATA."<br>";
}
C'est possible de simplifier les echo avec une fonction for ?
J'ai pensé a faire une incrémentation, mais il faut que je définisse un nombre c'est bien ça ?
0
yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473
16 oct. 2020 à 12:47
peut-être devrais-tu nous montrer le résultat de la suggestion en #9, et ce que tu voudrais avoir à la place.
tu montres chaque fois un code qui ne fonctionne pas, sans expliquer le résultat que tu attends.
0
yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024 1 473 > yg_be Messages postés 22857 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 6 juin 2024
16 oct. 2020 à 13:19
dans quel contexte fais-tu cela?
0