Exporter requête SQL php html [Résolu]

weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 8 oct. 2014 à 22:13 - Dernière réponse : weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention
- 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]
Afficher la suite 

Votre réponse

11 réponses

NHenry 14181 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention - 8 oct. 2014 à 22:25
0
Utile
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 ?
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 8 oct. 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
NHenry 14181 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 24 mai 2018 Dernière intervention - 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.
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 8 oct. 2014 à 23:13
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
Commenter la réponse de NHenry
jordane45 21170 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 25 mai 2018 Dernière intervention - Modifié par jordane45 le 9/10/2014 à 02:00
0
Utile
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
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 9 oct. 2014 à 00:24
Petite coquille ;)

Notice: Undefined variable: ql in /url/test.php on line 38
jordane45 21170 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 25 mai 2018 Dernière intervention - 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>";;
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 9 oct. 2014 à 00:29
Oui, j'ai corrigé... merci du coup de main ;)

Par contre la requête ne retourne aucun résultat.
Commenter la réponse de jordane45
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 9 oct. 2014 à 00:28
0
Utile
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 ;)
jordane45 21170 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 25 mai 2018 Dernière intervention - 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.
weetabix40 9670 Messages postés samedi 12 janvier 2008Date d'inscriptionContributeurStatut 28 novembre 2015 Dernière intervention - 9 oct. 2014 à 00:35
Ok c'est noté, encore merci
Commenter la réponse de weetabix40

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.