smacss Posted March 30, 2018 Share Posted March 30, 2018 (edited) Bonjour; j'utilise prestashop la version 1.6.1 j'ai voulu ajouter un produit manuellement en utilisant les requêtes sql. le produit s'ajoute avec succès dans la page d'accueil mais l'image du produit s'affiche comme un point d'interrogation je suis sur que le chemin de l'image est correcte j'ai remarqué que si j’accède au back office et je clique sur modifier puis directement je clique sur enregistrer ;l'image s'affiche correctement dans la page d’accueil et le problème est résolu . je doute qu il ya une erreur au niveau d'une table dans la base de donnée prestashop avez vous une idée ou bien la requête sql de la modification et le sauvegarde d'un produit Merci lorsuqe je clique sur modifier puis enregistrer l'image s'affiche correctement Edited March 30, 2018 by smacss (see edit history) Link to comment Share on other sites More sharing options...
doekia Posted March 31, 2018 Share Posted March 31, 2018 Car ton SQL ne fait que nourrir la base de données. Il n'exécute pas le code de prestashop qui génère les miniatures, donc l'image miniature n'existe pas 1 Link to comment Share on other sites More sharing options...
smacss Posted March 31, 2018 Author Share Posted March 31, 2018 On 3/31/2018 at 8:00 AM, doekia said: Car ton SQL ne fait que nourrir la base de données. Il n'exécute pas le code de prestashop qui génère les miniatures, donc l'image miniature n'existe pas Expand merci pour votre réponse ;donc il n'ya pas de solution par une requête!! avez-vous une idée pour résoudre ce problème MERCI Link to comment Share on other sites More sharing options...
doekia Posted March 31, 2018 Share Posted March 31, 2018 cliquer sur le bouton de régénération des miniatures (sans effacer). Après il y a des solutions plus geek mais seulement si les trucs simple te rebuttent 1 Link to comment Share on other sites More sharing options...
smacss Posted March 31, 2018 Author Share Posted March 31, 2018 On 3/31/2018 at 5:33 PM, doekia said: cliquer sur le bouton de régénération des miniatures (sans effacer). Après il y a des solutions plus geek mais seulement si les trucs simple te rebuttent Expand ya t il une requête sql pour la régénération des miniatures car je souhaite ajouter un produit avec une image en un seul clic(un ensemble de requêtes sql) Link to comment Share on other sites More sharing options...
doekia Posted April 1, 2018 Share Posted April 1, 2018 Le SQL ne sais pas exécuter du code, le sql manipule exclusivement les données de la base de données! Autrement dit, cliquer sur un bouton c'est trop simple alors écris-toi un code php qui procède à l'insertion SQL et ensuite qui déclenche la regénération 1 Link to comment Share on other sites More sharing options...
Eolia Posted April 1, 2018 Share Posted April 1, 2018 Déjà le code php vu plus haut fait peur^^ - J'espère que ce fichier n'est bien sûr pas accessible de l'extérieur avec les mots de passe et accès bdd en clair - Aucune données passée en GET n'est contrôlée (ni son existence, ni son format, ni rien) - Pourquoi lancer 15 mysql_query quand toutes les requêtes peuvent être effectuées en même temps ? Vous êtes déjà dans un fichier php, pourquoi ne pas utiliser les fonctions Presashop toutes faites pour générer vos formats d'images ? 1 Link to comment Share on other sites More sharing options...
smacss Posted April 1, 2018 Author Share Posted April 1, 2018 je vous remercie pour votre réponse pour le fichier php ci dessus ;c'est un fichier de test;je sais que je pourrais lancer toutes ces requêtes ensemble;pour les autres données qui sont en clair :je travaille sur localhost donc pas de soucis; je pense que je vais utiliser le bouton de régénération des miniatures a travers le back office de prestashop car j'ai pas trouvé d'autre solution. malheureusement cette phase est lente Merci encore une fois On 4/1/2018 at 2:54 PM, Eolia said: Déjà le code php vu plus haut fait peur^^ - J'espère que ce fichier n'est bien sûr pas accessible de l'extérieur avec les mots de passe et accès bdd en clair - Aucune données passée en GET n'est contrôlée (ni son existence, ni son format, ni rien) - Pourquoi lancer 15 mysql_query quand toutes les requêtes peuvent être effectuées en même temps ? Vous êtes déjà dans un fichier php, pourquoi ne pas utiliser les fonctions Presashop toutes faites pour générer vos formats d'images ? Expand Link to comment Share on other sites More sharing options...
smacss Posted April 1, 2018 Author Share Posted April 1, 2018 je ne sais pas ou je peux trouver ce code pour la génération des formats d'images Avez vous une idée? On 4/1/2018 at 2:54 PM, Eolia said: Vous êtes déjà dans un fichier php, pourquoi ne pas utiliser les fonctions Presashop toutes faites pour générer vos formats d'images ? Expand Link to comment Share on other sites More sharing options...
Eolia Posted April 2, 2018 Share Posted April 2, 2018 private function copyImg($item, $className) { require_once('../../images.inc.php'); $identifier = $this->supportedImports[strtolower($className)]['identifier']; $matchId = $this->getMatchId(strtolower($className)); $matchIdLang = $this->getMatchIdLang(); switch($className) { default: case 'Product': $path = _PS_PROD_IMG_DIR_; break; case 'Category': $path = _PS_CAT_IMG_DIR_; break; case 'Manufacturer': $path = _PS_MANU_IMG_DIR_; break; case 'Supplier': $path = _PS_SUPP_IMG_DIR_; break; } $cover = 1; if (array_key_exists($item[$identifier], $matchId)) if(array_key_exists('images', $item) && !is_null($item['images'])) foreach($item['images'] as $key => $image) { $tmpfile = tempnam(_PS_TMP_IMG_DIR_, 'import'); if (@copy(str_replace(' ', '%20', $image), $tmpfile)) { if ($className == 'Product') { $image = new Image(); $image->id_product = (int)($matchId[$item[$identifier]]); $image->cover = $cover; $image->position = Image::getHighestPosition((int)$matchId[$item[$identifier]]) + 1; $legend = array(); foreach($item['name'] as $key => $val) if (array_key_exists($key, $matchIdLang)) $legend[$matchIdLang[$key]] = Tools::link_rewrite($val); else $legend[Configuration::get('PS_LANG_DEFAULT')] = Tools::link_rewrite($val); $image->legend = $legend; $image->add(); $path = $image->getPathForCreation(); ImageManager::resize($tmpfile, $path.'.jpg'); } else { ImageManager::resize($tmpfile, $path.(int)$matchId[$item[$identifier]].'.jpg'); } } else @unlink($tmpfile); @unlink($tmpfile); $cover = 0; } } Link to comment Share on other sites More sharing options...
smacss Posted April 2, 2018 Author Share Posted April 2, 2018 On 4/2/2018 at 6:47 AM, Eolia said: private function copyImg($item, $className) { require_once('../../images.inc.php'); $identifier = $this->supportedImports[strtolower($className)]['identifier']; $matchId = $this->getMatchId(strtolower($className)); $matchIdLang = $this->getMatchIdLang(); switch($className) { default: case 'Product': $path = _PS_PROD_IMG_DIR_; break; case 'Category': $path = _PS_CAT_IMG_DIR_; break; case 'Manufacturer': $path = _PS_MANU_IMG_DIR_; break; case 'Supplier': $path = _PS_SUPP_IMG_DIR_; break; } $cover = 1; if (array_key_exists($item[$identifier], $matchId)) if(array_key_exists('images', $item) && !is_null($item['images'])) foreach($item['images'] as $key => $image) { $tmpfile = tempnam(_PS_TMP_IMG_DIR_, 'import'); if (@copy(str_replace(' ', '%20', $image), $tmpfile)) { if ($className == 'Product') { $image = new Image(); $image->id_product = (int)($matchId[$item[$identifier]]); $image->cover = $cover; $image->position = Image::getHighestPosition((int)$matchId[$item[$identifier]]) + 1; $legend = array(); foreach($item['name'] as $key => $val) if (array_key_exists($key, $matchIdLang)) $legend[$matchIdLang[$key]] = Tools::link_rewrite($val); else $legend[Configuration::get('PS_LANG_DEFAULT')] = Tools::link_rewrite($val); $image->legend = $legend; $image->add(); $path = $image->getPathForCreation(); ImageManager::resize($tmpfile, $path.'.jpg'); } else { ImageManager::resize($tmpfile, $path.(int)$matchId[$item[$identifier]].'.jpg'); } } else @unlink($tmpfile); @unlink($tmpfile); $cover = 0; } } Expand merci beaucoup mais comment je peux fonctionner et exploiter ce code Link to comment Share on other sites More sharing options...
smacss Posted April 5, 2018 Author Share Posted April 5, 2018 svp comment je peux exploiter ce code Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now