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

Messages postés
9667
Date d'inscription
samedi 12 janvier 2008
Statut
Contributeur
Dernière intervention
28 novembre 2015
-
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

3 réponses

Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
0
Merci
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
Messages postés
9667
Date d'inscription
samedi 12 janvier 2008
Statut
Contributeur
Dernière intervention
28 novembre 2015
-
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
Messages postés
14319
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
11 décembre 2018
-
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
Messages postés
9667
Date d'inscription
samedi 12 janvier 2008
Statut
Contributeur
Dernière intervention
28 novembre 2015
-
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
Messages postés
23592
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 décembre 2018
0
Merci
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
Messages postés
9667
Date d'inscription
samedi 12 janvier 2008
Statut
Contributeur
Dernière intervention
28 novembre 2015
-
Petite coquille ;)

Notice: Undefined variable: ql in /url/test.php on line 38
jordane45
Messages postés
23592
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 décembre 2018
-
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
Messages postés
9667
Date d'inscription
samedi 12 janvier 2008
Statut
Contributeur
Dernière intervention
28 novembre 2015
-
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
Messages postés
9667
Date d'inscription
samedi 12 janvier 2008
Statut
Contributeur
Dernière intervention
28 novembre 2015
0
Merci
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
Messages postés
23592
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 décembre 2018
-
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
Messages postés
9667
Date d'inscription
samedi 12 janvier 2008
Statut
Contributeur
Dernière intervention
28 novembre 2015
-
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.