Script [PHP -> XML] ne donne qu'un résultat
Résolu/Fermé
typiac
Messages postés
92
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2015
-
Modifié par typiac le 3/01/2013 à 17:02
typiac Messages postés 92 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 14 janvier 2015 - 3 janv. 2013 à 21:31
typiac Messages postés 92 Date d'inscription lundi 9 mai 2011 Statut Membre Dernière intervention 14 janvier 2015 - 3 janv. 2013 à 21:31
A voir également:
- Script [PHP -> XML] ne donne qu'un résultat
- Script vidéo youtube - Guide
- Xml download - Télécharger - Édition & Programmation
- Lexer resultat - Télécharger - Sport
- Resultat foot - Télécharger - Vie quotidienne
- Easy php - Télécharger - Divers Web & Internet
6 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 janv. 2013 à 17:30
3 janv. 2013 à 17:30
<?php
$rst = mysql_query("SELECT a,b,c,d,e DATE_FORMAT(date.date, '%d/%m/%Y') as date FROM a,b,c ORDER BY date_added DESC LIMIT 9");
//etrange ta requette
/*
tu mets SELECT champs a,b,c,d,e alors que dans ta boucle while tu utilises les noms de champs categorie, item_name etc..
tu fais un DATE_FORMAT sur le champ date apparemnt mais tu lui attribue l'alias date ? il faudrait un autre nom date_f par ex
tu mets FROM a,b,c comme nom de table ?
et ton ORDER BY sur le champ date_added
*/
$productCount = mysql_num_rows($rst);
if ($productCount > 0) {
while($row = mysql_fetch_array($rst)){
$id = $row["id"];
$category = $row["category"];
$product_name = $row["item_name"];
$date = $row["date"];
$price = $row["time"];
$nom = $row["nom"];
$photo = $row["photo"];
$date_added = strftime("%V,%G,%Y", strtotime($row["date_added"]));
$xml = '<?xml version="1.0" encoding="UTF-8"?>' ; //a mon avis cette ligne devrait être en dehors de ta boucle while
$xml .= '<portfolio>' ;
$xml .= '
<categories>
<category id="cat1">categoriew</category>
<category id="cat2">categoriex</category>
<category id="cat3">categoriey</category>
<category id="cat4">categoriez</category>
</categories>' ;
$xml .= '<items>' ;
//le poniteur a la fin de la première boucle while est en fin des lignes extraites
//si tu fais une autre boucle il faut remettre le pointeur au début
//mysql_data_seek($rst) ferait l'afaire, mais si tu es en php5.5 cette fct est dépréciée donc vas voir:
//https://www.php.net/manual/fr/mysqli-result.data-seek.php
while($row = mysql_fetch_array($rst)){
$xml .= '
<item>
<thumbnail>storeadmin/images/'.$photo.'</thumbnail>
<preview>images/preview.jpg</preview>
<category>'.$category.'</category>
<description>'.$item_name.'</description>
<description2>'.$time.'</description2>
</item>' ;
}
$xml .= '</items></portfolio>' ;
file_put_contents('data.xml', $xml) ;}}
$rst = mysql_query("SELECT a,b,c,d,e DATE_FORMAT(date.date, '%d/%m/%Y') as date FROM a,b,c ORDER BY date_added DESC LIMIT 9");
//etrange ta requette
/*
tu mets SELECT champs a,b,c,d,e alors que dans ta boucle while tu utilises les noms de champs categorie, item_name etc..
tu fais un DATE_FORMAT sur le champ date apparemnt mais tu lui attribue l'alias date ? il faudrait un autre nom date_f par ex
tu mets FROM a,b,c comme nom de table ?
et ton ORDER BY sur le champ date_added
*/
$productCount = mysql_num_rows($rst);
if ($productCount > 0) {
while($row = mysql_fetch_array($rst)){
$id = $row["id"];
$category = $row["category"];
$product_name = $row["item_name"];
$date = $row["date"];
$price = $row["time"];
$nom = $row["nom"];
$photo = $row["photo"];
$date_added = strftime("%V,%G,%Y", strtotime($row["date_added"]));
$xml = '<?xml version="1.0" encoding="UTF-8"?>' ; //a mon avis cette ligne devrait être en dehors de ta boucle while
$xml .= '<portfolio>' ;
$xml .= '
<categories>
<category id="cat1">categoriew</category>
<category id="cat2">categoriex</category>
<category id="cat3">categoriey</category>
<category id="cat4">categoriez</category>
</categories>' ;
$xml .= '<items>' ;
//le poniteur a la fin de la première boucle while est en fin des lignes extraites
//si tu fais une autre boucle il faut remettre le pointeur au début
//mysql_data_seek($rst) ferait l'afaire, mais si tu es en php5.5 cette fct est dépréciée donc vas voir:
//https://www.php.net/manual/fr/mysqli-result.data-seek.php
while($row = mysql_fetch_array($rst)){
$xml .= '
<item>
<thumbnail>storeadmin/images/'.$photo.'</thumbnail>
<preview>images/preview.jpg</preview>
<category>'.$category.'</category>
<description>'.$item_name.'</description>
<description2>'.$time.'</description2>
</item>' ;
}
$xml .= '</items></portfolio>' ;
file_put_contents('data.xml', $xml) ;}}
typiac
Messages postés
92
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2015
1
3 janv. 2013 à 17:34
3 janv. 2013 à 17:34
Oui, j'ai grandement simplifié les requêtes sql parce qu'il y en a en fait, beaucoup plus avec des croisements et je voulais simplifier le problème car je sais que mes requêtes fonctionnent.
J'étudie tout de suite te réponse et je reposte un résultat! ^^
J'étudie tout de suite te réponse et je reposte un résultat! ^^
typiac
Messages postés
92
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2015
1
3 janv. 2013 à 19:09
3 janv. 2013 à 19:09
Bon et bien c'est le point mort. j'ai tenté avec mysql_data_seek($rst) ainsi que mysql_fetch_array mais ça ne fonctionne pas plus.
Je vois bien que j'ai un problème avec ces 2 "while" mais je ne vois pas comment procéder autrement?
Suis-je parti dans la bonne direction?
Je vois bien que j'ai un problème avec ces 2 "while" mais je ne vois pas comment procéder autrement?
Suis-je parti dans la bonne direction?
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
3 janv. 2013 à 21:00
3 janv. 2013 à 21:00
il y a aussi une grosse erreur:
si tu mets dans la première boucle while:
à chaque fois que tu vas passer dans la boucle ça va écraser le contenu de la variable $xml
donc en fait tu n'as à la fin que la dernière valeur de la boucle
il faut absolument mettre cette ligne avant while
pour ce qui est des deux boucle il faut passer par mysqli au lieu de mysql vas voir le lien que je t'ai donné.
Sinon pourquoi ne pas generer tout ton xml dans la même boucle ?
si tu mets dans la première boucle while:
$xml = '<?xml version="1.0" encoding="UTF-8"?>' ;
à chaque fois que tu vas passer dans la boucle ça va écraser le contenu de la variable $xml
donc en fait tu n'as à la fin que la dernière valeur de la boucle
il faut absolument mettre cette ligne avant while
pour ce qui est des deux boucle il faut passer par mysqli au lieu de mysql vas voir le lien que je t'ai donné.
Sinon pourquoi ne pas generer tout ton xml dans la même boucle ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
typiac
Messages postés
92
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2015
1
3 janv. 2013 à 21:09
3 janv. 2013 à 21:09
Merci Alain de ton retour, ça me donne du courage!
Effectivement, je l'ai placé en haut et en ne mettant qu'une seule boucle je te d'arriver à mes fins comme ceci je remets des variables plus propres et j'ai simplifié le code):
Toujours pas de résultat...
Effectivement, je l'ai placé en haut et en ne mettant qu'une seule boucle je te d'arriver à mes fins comme ceci je remets des variables plus propres et j'ai simplifié le code):
$xml = '<?xml version="1.0" encoding="UTF-8"?>'; $connexion=mysql_connect('localhost', 'root', 'pass'); mysql_select_db('db'); $req="SELECT * FROM table1,table2,table3 ORDER BY date_added DESC LIMIT 9"; $reponse = mysql_query($req, $connexion) or die(mysql_error()); while ($row_reponse=mysql_fetch_array($reponse)) { $category=$row_reponse['category']; $date=$row_reponse['date']; $xml = '<portfolio>'; $xml = '<categories> <category id="cat1">cat1</category> <category id="cat2">cat2</category> <category id="cat3">cat3</category> </categories>'; $xml = '<items>'; $xml .='<item>'; $xml .='<thumbnail>'.$row_reponse['photo'].'</thumbnail>'; $xml .='<preview>images/preview.jpg</preview>'; $xml .='<category>'.$row_reponse['category'].'</category>'; $xml .='<description>Description goes here</description>'; $xml .='<description2>Description goes here</description2>'; $xml .='</item>'; $xml .='</items>'; $xml .='</portfolio>'; } $fichier = fopen("data2.xml", "r");//ouvrir le fichier fwrite($fichier, $xml); fclose($fichier);
Toujours pas de résultat...
typiac
Messages postés
92
Date d'inscription
lundi 9 mai 2011
Statut
Membre
Dernière intervention
14 janvier 2015
1
3 janv. 2013 à 21:31
3 janv. 2013 à 21:31
Ah mais tu sais que je t'adore Alain! Effectivement, avec le mysqli, ça fonctionne parfaitement! merci beaucoup pour ton aide!
Pour ceux qui galèrent comme moi, faîtes bien attention de bien placer avant l'appel de la base, toutes les données xml qui ne seront pas modifiées, à commencé par
Puis checker si ça fonctionne avec le mysqli au lieu du mysql, ça devrait être bon!
Pour ceux qui galèrent comme moi, faîtes bien attention de bien placer avant l'appel de la base, toutes les données xml qui ne seront pas modifiées, à commencé par
<?xml version="1.0" encoding="UTF-8"?>
Puis checker si ça fonctionne avec le mysqli au lieu du mysql, ça devrait être bon!