Exporter requête SQL php html

Résolu
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015 - Modifié par weetabix40 le 8/10/2014 à 22:57
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015 - 9 oct. 2014 à 00:35
Bonjour,

Je travaille actuellement sur prestashop et je souhaite effectuer une tache cron pour générer un fichier de newsletter à envoyer au format html.

J'ai construit ma requête mais je bloque très sérieusement dans l'export PHP pour générer le fichier .html

La requête :

SELECT DISTINCT
ps_product.id_product AS 'ID',
ps_product_lang.name AS 'NOM',
ROUND (ps_product.price,2) AS `VENTE HT`,
CONCAT ('http://www.grossistemode.com/',ps_image.id_image,'-home_default/',ps_image.id_image,'.jpg') AS `@URL_IMG`,
ps_product.reference AS 'REFERENCE',
CONCAT ('http://www.grossistemode.com/index.php?id_product=',ps_product.id_product,'&controller=product') AS `URL_PRODUIT`

FROM ps_product

LEFT OUTER JOIN ps_product_lang
ON ps_product.id_product = ps_product_lang.id_product AND ps_product_lang.id_lang = 2

LEFT OUTER JOIN ps_image
ON ps_product.id_product = ps_image.id_product AND ps_image.cover = 1

WHERE ps_product.`date_add` > DATE_SUB(NOW(), INTERVAL 260 HOUR)


Merci à vous pour les petites informations,
Cordialement,
"Dans le mieux, il est difficile de faire mieux ; mais, dans le pire, il est toujours facile de faire pire." [Curnonsky]

3 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 oct. 2014 à 22:25
Bonsoir,

En clair quel est ton problème ?
- Utiliser la requête pour afficher un code HTML ?
- Sortir le code généré dans un fichier au lieu d'une page web ?
- Autre ?
0
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015
Modifié par weetabix40 le 8/10/2014 à 22:54
Bonsoir et merci pour ta réponse,

- Utiliser la requête pour afficher un code HTML ?
Oui, c'est le premier problème

- Sortir le code généré dans un fichier au lieu d'une page web ?
Oui, idéalement par cron... fichier a récupérer sur le serveur via ftp ou par email.

J'ai réussi a programmer pas mal de cron au format CSV pour les mises à jour automatique UPS, ERP et CRM... par contre avec l'export HTML, je ne sais pas ou je foire le truc mais je n'y arrive pas.

Encore merci
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
8 oct. 2014 à 23:00
1) Utiliser PHP pour traiter une requête SQL et générer un code HTML :
Moteur de recherche : php mysql
2) Récupérer le résultat généré dans un fichier par une tâche Cron
Pas vraiment du codage PHP, mais, avec un wget (commande Linux) tu télécharge un fichier, par exemple :
wget http://monsite.com/Mapage.php
Enregistrera le contenu de la page web dans un fichier Mapage.php dans le dossier courant.
0
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015
Modifié par weetabix40 le 8/10/2014 à 23:34
Tu penses bien que j'ai déjà fait 250 tutoriels sur le sujet...

Le problème vient de mon mysqli_query et je n'arrive pas a bien écrire ma requête dans le fichier PHP.

<?php
$con=mysqli_connect("localhost","root","password","prestashop");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM ps_product");

echo "<table border='1'>
<tr>
<th>ID Produit</th>
<th>REF. Produit</th>
</tr>";

while($row = mysqli_fetch_array($result)) {
  echo "<tr>";
  echo "<td>" . $row['id_product'] . "</td>";
  echo "<td>" . $row['reference'] . "</td>";
  echo "</tr>";
}

echo "</table>";

mysqli_close($con);
?>


Jusque là rien de compliqué... par contre je n'arrive pas a intégrer les LEFT JOIN dans ma requête PHP
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
Modifié par jordane45 le 9/10/2014 à 02:00
Bonjour,

Donc ton souci c'est de mettre la requete que tu nous a montré dans ton premier message dans le code PHP que tu viens de poster ??

Donc :

<?php
$con=mysqli_connect("localhost","root","password","prestashop");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="SELECT DISTINCT
ps_product.id_product AS ID,
ps_product_lang.name AS NOM,
ROUND (ps_product.price,2) AS VENTE_HT,
CONCAT ('http://www.grossistemode.com/',ps_image.id_image,'-home_default/',ps_image.id_image,'.jpg') AS URL_IMG,
ps_product.reference AS 'REFERENCE',
CONCAT ('http://www.grossistemode.com/index.php?id_product=',ps_product.id_product,'&controller=product') AS URL_PRODUIT
FROM ps_product
LEFT OUTER JOIN ps_product_lang
ON ps_product.id_product = ps_product_lang.id_product AND ps_product_lang.id_lang = 2
LEFT OUTER JOIN ps_image
ON ps_product.id_product = ps_image.id_product AND ps_image.cover = 1
WHERE ps_product.`date_add` > DATE_SUB(NOW(), INTERVAL 260 HOUR)";

$result = mysqli_query($con,$sql) ;

echo "<table border='1'>
<tr>
<th>ID Produit</th>
<th>REF. Produit</th>
</tr>";
if($result){
while($row = mysqli_fetch_array($result)) {
  echo "<tr>";
  echo "<td>" . $row['ID'] . "</td>";
  echo "<td>" . $row['NOM'] . "</td>";
 echo "<td>" . $row['VENTE_HT'] . "</td>";
  echo "</tr>";
}
}else{
 echo "<br> NO RESULT<br>";
 echo "<pre>Requete :<br>".$ql."</pre>";;
}
echo "</table>";

mysqli_close($con);
?>





Avant de poser une question, merci de lire la charte du site.
Cordialement, Jordane
0
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015
9 oct. 2014 à 00:24
Petite coquille ;)

Notice: Undefined variable: ql in /url/test.php on line 38
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
9 oct. 2014 à 00:28
Ben ça va.. pas trop dur à corriger...
ligne 38 :
 echo "<pre>Requete :<br>".$ql."</pre>";;

A corriger en :
 echo "<pre>Requete :<br>".$sql."</pre>";;
0
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015
Modifié par weetabix40 le 9/10/2014 à 00:33
Oui, j'ai corrigé... merci du coup de main ;)

Par contre la requête ne retourne aucun résultat.
0
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015
9 oct. 2014 à 00:28
C'est bon de mon coté,

Le problème venait d'une erreur de "" à que j'avais oublié de convertir dans l'affichage de mon url d'image ;)

<?php
$con=mysqli_connect("localhost","root","password","prestashop");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

//$result = mysqli_query($con,"SELECT * FROM ps_product");



$result = mysqli_query($con,"SELECT DISTINCT ps_product.id_product, ps_product_lang.name, ps_product.reference, ps_product.price, ps_image.id_image, ps_product.id_product
								FROM ps_product
								LEFT OUTER JOIN ps_product_lang 
								ON ps_product.id_product = ps_product_lang.id_product AND ps_product_lang.id_lang = 2
								LEFT OUTER JOIN ps_image
								ON ps_product.id_product = ps_image.id_product AND ps_image.cover = 1
								WHERE ps_product.`date_add` > DATE_SUB(NOW(), INTERVAL 260 HOUR)");



echo "<table width='100%' border='0' cellpadding='0'>
<tr>
<th>IMAGE</th>
<th>NOM</th>
<th>PRIX</th>
</tr>";

while($row = mysqli_fetch_array($result)) {
  echo "<tr>";
  echo "<td><img src='http://www.website.com/" . $row['id_image'] . "-home_default/" . $row['id_image'] . ".jpg' width='300px'/></td>";
  echo "<td>" . $row['name'] . "</td>";
  echo "<td>" . $row['price'] . "</td>";
  echo "</tr>";
}

echo "</table>";

mysqli_close($con);
?> 


Merci du coup de main... plus de café = bonne nuit ;)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
9 oct. 2014 à 00:34
Prends quand même l'habitude de séparer la requête de son exécution (comme j'ai fait)
Ca permet d'en faire un echo en cas de souci et ainsi vérifier qu'elle est correcte.
Bonne nuit.
0
weetabix40 Messages postés 9583 Date d'inscription samedi 12 janvier 2008 Statut Contributeur Dernière intervention 28 novembre 2015
9 oct. 2014 à 00:35
Ok c'est noté, encore merci
0
Rejoignez-nous