Jump to content

Exclusion SQL/PHP (résolu)


alesque51

Recommended Posts

Bonjour à tous,

Pour faciliter mes commandes de produits J'ai créé un bout de code (soyez indulgents je n'ai aucune notion ni en PHP ni en SQL) en copiant par ci par là des petits bouts et ça fonctionne.

Comme dans l'exemple j'ai une petit script PHP avec des requêtes SQL qui va chercher sur PP les produits d'un ou plusieurs "manufacturer" avec les quantités. Un tableau Excel fait appel à la page générée et il ne nous reste qu'à supprimer des produits ou modifier les quantités désirées.

Dans le code suivant, quelqu'un peut-il me dire comment il serait possible d'exclure trois langues sur quatre pour ne garder que les produits en français ?


<?php
// on se connecte à notre base
$base = mysql_connect ('0.0.0.0', 'mabase', 'xxxxxxxxxx');
mysql_select_db ('harpebudin', $base) ;
?>


<html>
<head>

<title>Manufacturer</title>

</head>

<body>


<?php

$sql = 'select distinct
ps_stock_available.quantity,
ps_product.reference,
ps_product_lang.name,
ps_manufacturer.id_manufacturer
from ps_manufacturer
inner join ps_product ON ps_product.id_manufacturer = ps_manufacturer.id_manufacturer
inner join ps_product_lang ON ps_product.id_product = ps_product_lang.id_product
inner join ps_stock_available ON ps_stock_available.id_product = ps_product.id_product
where ps_manufacturer.id_manufacturer = "13"
order by ps_product.quantity,ps_product_lang.name asc';


$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());


echo "<table>";
while ($data = mysql_fetch_array($req)) {  
    
echo '<tr><td><b>Qty</b> : '.$data[quantity].' </td>';

echo '<td><b>Produit</b> : '.$data[name].' </td>';
echo '<td><b>Ref.</b> : '.$data[reference].'</td></tr>';

}
echo "</table>";
   
mysql_free_result ($req);  

mysql_close ();

?>
 
</body>
</html>

 

Par avance je remercie vivement ceux qui pourront m'aider.
J'ai fait une page PHP et un tableau Excel par "manufacturer" (environ 300) et la feuille Excel, configurée avec l'adresse du fournisseur fonctionne très bien. Maintenant, il y a peut-être plus simple, mais j'ai pas eu les mêmes résultats en utilisant l'export de produits en natif couplé avec une tache Cron, trop compliqué pour moi.

Alexandre





 

Edited by alesque51 (see edit history)
Link to comment
Share on other sites

where ps_manufacturer.id_manufacturer = "13" and ps_product_lang.id_lang ="1"

 

si 1 est l'id_lang du français.

 

Mais utiliser mysql_query() en 2016 c'est un peu comme rouler en carosse du XVIIème, surtout que Prestashop offre toutes les fonctions pour ça avec un simple include(dirname(__FILE__).'/config/config.inc.php'); en tête de fichier^^

  • Like 1
Link to comment
Share on other sites

Merci beaucoup pour cette solution (je me trouve idiot après avoir fait le reste de pas avoir réussi à la trouver !) !!!

Je veux bien rouler avec une voiture d'après 97 (merci à notre chère maire parisienne) mais j'avoue que je ne sais absolument pas de quoi tu parles...

En tout cas merci pour la rapidité et l'efficacité !

Alexandre

Link to comment
Share on other sites

Eolia voulait dire que les fonctions mysql_* sont obsolètes depuis un bon moment déjà,

Il faut donc passer à PDO (http://php.net/PDO) ou à MySqli (http://php.net/mysqli).

 

Mais pour ton script dans ce cas là, utilises plutôt les fonctions prestashop déjà codées à cet effet, voici une doc pour presta 1.5 >

https://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/

 

bon courage !

Link to comment
Share on other sites


<?php

// Si le fichier est à la racine de votre boutique

include(dirname(__FILE__).'/config/config.inc.php');

 

$sql = '

select distinct

ps_stock_available.quantity,

ps_product.reference,

ps_product_lang.name,

ps_manufacturer.id_manufacturer

from ps_manufacturer

inner join ps_product ON ps_product.id_manufacturer = ps_manufacturer.id_manufacturer

inner join ps_product_lang ON ps_product.id_product = ps_product_lang.id_product

inner join ps_stock_available ON ps_stock_available.id_product = ps_product.id_product

where ps_manufacturer.id_manufacturer = "13" and ps_product_lang.id_lang = "1"

order by ps_product.quantity,ps_product_lang.name asc';

 

$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);

if($result) {

 

$table = '<table>';

foreach($result as $data) {

 

$table .= '

<tr><td><b>Qty</b> : '.$data['quantity'].' </td>

<td><b>Produit</b> : '.$data['name'].' </td>

<td><b>Ref.</b> : '.$data['reference'].'</td></tr>';

}

$table .= '</table>';

}

else

$table = 'Aucun résultat';

$html = '

<html lang="FR">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Manufacturer</title>

</head>

<body>

'.$table.'

</body>

</html>';

 

echo $html;

Edited by Eolia (see edit history)
Link to comment
Share on other sites

Bonjour,

Je garde le lien de Tweb sous la main et le potasse dès que j'ai un peu de temps, je l'ai survolé mais j'avoue que je n'y comprends pas grand chose...

Merci Eolia pour le bout de code, je vais aussi le tester dès que je peux, est-ce que ça change beaucoup de choses par rapport à ce que j'avais fait ? Je comprends que les fonctions que j'utilise soient obsolète, mais tant que ça fonctionne, ça m'évite de tout recommencer (pour moi c'est une semaine pour faire le premier que je vous ai montré !). A moins qu'il n'y ait un risque ou danger...

Je ne trouve pas de module qui corresponde à mes besoins (j'en achète régulièrement et ne suis pas partisan du "tout gratuit"). J'aurais besoin d'une fonction très simple qui sort les produits d'un "manufacturer" avec les quantité et qui génère une commande (modifiable manuellement) en fonction d'un minimum de stock défini, chose que j'essaye de faire avec mon fichier Excel qui va chercher les données de la page PHP. J'avais testé la gestion des stocks avancée, mais c'est une usine à gaz pour moi.

 

Si quelqu'un a une idée, je suis ouvert à tout !

Merci à tous et au forum pour ces aides précieuses.
 

Link to comment
Share on other sites

J'aurais besoin d'une fonction très simple qui sort les produits d'un "manufacturer" avec les quantité et qui génère une commande (modifiable manuellement) en fonction d'un minimum de stock défini, chose que j'essaye de faire avec mon fichier Excel qui va chercher les données de la page PHP.

 

vous voulez générer une commande dans prestashop ?? ou plutôt préparer un bon de commande pour votre fournisseur avec les produits ayant un stock faible ?

Link to comment
Share on other sites

Pour le moment ça se passe comme ça.

Lorsque je constate un manque de produit, j'ouvre le fichier Excel du fournisseur XXX qui fait appel aux données de la page PHP du fournisseur correspondant (environ 300 pages php et autant de feuilles Excel).

Je supprime les lignes des produits qui sont en stock suffisant et change la quantité des autres et envoie le fichier au fournisseur (la mise en page avec adresse est enregistrée, je n'ai qu'à imprimer en pdf ou autre). Je n'ai pas encore réussi à automatiser plus. Pour certains produits, j'aimerais que la quantité à commander s'automatise tout en gardant la main avant l'envoi de la commande.

 

J'ai parcouru le site à la recherche d'un module mais je vois pas ce qui correspondrait le mieux.
 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...