Images associées aux couleurs

11 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

J'ai un problème simple :

Pour un produit, j'ai 5 couleurs différentes. J'ai associé 3 images pour les 3 premières couleurs mais impossible d'associer une image pour les 2 couleurs suivantes.

Je fais apparaître les champs de téléchargement, je vais chercher mon image, elle s'affiche dans le champ, je sauvegarde mais quand je reviens sur ma fiche produit l'image n'est pas intégrée.

Quand je regarde dans le dossier upload par ftp, je m'aperçois que l'image n'apparait pas, elle n'a pas été uploadée !

Mon question : Pourquoi ? Pourquoi ca marche pour 3 couleurs et pas pour 4 ou 5 ?

Merci de votre aide.

Cordialement.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour Berserker,

je cherche moi aussi, d'ou cela peut provenir, je n'ai que 4 couleurs sur 7 dont l'image s'affiche.

le premier qui a la solution le dit à l'autre.

cordialement

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bon, j'ai trouvé une méthode, pas très académique, mais qui peut dépanner le temps que simon ou un autre donne la correction du code.

la voilà:

lorsque l'on envoie l'image depuis la fiche de création du produit, elle part bien dans le fichier upload, mais ne s'incrémente pas dans la base de données.

je copie donc son nom dans le fichier upload, et j'édite la base de données, et je colle le nom de l'image.

voilà , si cela peut aider en attendant la correction du code

cordialement

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

je ne reproduis pas le problème. Avez-vous essayé d'uploader une image qui est déjà passé sur une autre couleur ? Avez-vous un message d'erreur, ou accès aux logs d'erreurs de votre hébergement ?

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

bonjour Simon,

oui, cela ne vient pas de l'image.

en utilisant la même image pour chacune des couleurs, celle ci ne s'incrémente dans la base que pour les 4 premières,

pour les autres cela ne fonctionne pas

pourtant, elle se charge très bien dans le fichier d'upload, mais pas dans la bdd

et aucun message d'erreur, si on ne contrôle pas le produit en ligne, on ne s'aperçois pas de l'erreur.

tout semble se passer convenablement

merci de votre aide

cdt

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

Le nombre de champs d'images téléchargeables est limité (20 par défaut) par la configuration PHP upload_max_filesize. Il est donc nécessaire de limiter le nombre de champs par couleur afin de ne pas dépasser cette limite.

Une correction consiste à afficher un nombre de champ image en fonction du nombre de couleurs. Dans la page administrer/produits.php, il faut modifier la fonction maj_produit. Au début de la fonction, il faut ajouter


// Le nombre de champs d'images téléchargeable est limité par la configuration PHP upload_max_filesize qui peut être modifiée dans php.ini ou httpd.conf
// Il est donc nécessaire de limiter le nombre de champs par couleur afin de ne pas dépasser cette limite
if(ini_get('upload_max_filesize') && !empty($frm['couleurs'])){
$upload_images_per_color = ceil(min(5, ini_get('upload_max_filesize'))/count($frm['couleurs']));
} else {
$upload_images_per_color = 2;
}
[/CODE] Il faut également remplacer le bloc de code qui génère les champs images pour les couleurs :
[CODE]
/**
* ******************************* Gestion des images des couleurs ***************************************
*/
$selectCouleur = "SELECT c.*, pc.default_image, pc.image1, pc.image2, pc.image3, pc.image4, pc.image5, pc.couleur_id as coul
FROM peel_couleurs c
INNER JOIN peel_produits_couleurs pc ON pc.couleur_id = c.id AND pc.produit_id = '" . intval(vb($frm['id'])) . "'
ORDER BY c.position ASC, c.nom_" . $_SESSION['session_langue'] . " ASC";
$query = query($selectCouleur);
//Compteur permettant de fournir la default image en fonction de chaque couleurs
$cmp_default_image = 0;
while ($nomCouleur = fetch_assoc($query)) {
$image_found = false;
for($i = 1;$i <= 5;$i++) {
if (!empty($nomCouleur["image" . $i])) {
$image_found = true;
break;
}
}
echo '
<tr>
<td colspan="2" class="label"><br />Fichiers pour la couleur ' . $nomCouleur['nom_' . $_SESSION['session_langue']] . ' (afficher cette couleur par d&#233;faut en front-office <input type="radio" name="default_color_id" ' . frmvalide(vb($frm['default_color_id']) == $nomCouleur['coul']) . ' value="' . $nomCouleur['coul'] . '" />)</td>
</tr>
<tr>
<td colspan="2" class="normal">Fichiers accept&#233;s : images (GIF, PNG et JPEG) et fichiers PDF.</td>
</tr>
<tr>
<td class="label">Num&#233;ro de l\'image ou PDF par d&#233;faut' . BEFORE_TWO_POINTS . ':</td>
<td class="normal">
<input name="default_image'.$cmp_default_image.'" value="' . String::str_form_value(vb($nomCouleur['default_image'])) . '" /> Nombre entre 1 et 10
</td>
</tr>
';
if ($image_found) {
for ($i = 1; $i <= 5; $i++) {
if (!empty($nomCouleur["image" . $i])) {
if (pathinfo($nomCouleur["image" . $i], PATHINFO_EXTENSION) == 'pdf') {
$this_image_html = '<img src="' . $GLOBALS['wwwroot_in_admin'] . '/images/logoPDF_small.png" alt="pdf" width="100" height="100" />';
} else {
$this_image_html = '<img src="' . $GLOBALS['repertoire_upload'] . '/' . $nomCouleur['image' . $i] . '" alt=""/>';
}
echo '
<tr>
<td class="label">Image' . BEFORE_TWO_POINTS . ':</td>
<td class="normal">
Nom du fichier : ' . $nomCouleur['image' . $i] . '
<a class="normal" href="' . get_current_url(false) . '?mode=supprfile&amp;id=' . vb($frm['id']) . '&amp;coul=' . $nomCouleur['coul'] . '&amp;file=image' . $i . '&amp;page=' . (!empty($_GET['page']) ? $_GET['page'] : 1) . '">
<img src="' . $GLOBALS['administrer_url'] . '/images/b_drop.png" width="16" height="16" alt="" />supprimer cette image</a>
<input type="hidden" name="imagecouleur' . $nomCouleur['coul'] . '_' . $i . '" value="' . String::str_form_value($nomCouleur['image' . $i]) . '" />
</td>
</tr>
<tr>
<td colspan="2" class="center">' . $this_image_html . '</td>
</tr>
';
} else {
echo '
<tr>
<td class="label">Image' . BEFORE_TWO_POINTS . ':</td>
<td class="normal">
<input style="width: 100%" name="imagecouleur' . $nomCouleur['coul'] . '_' . $i . '" type="file" value="" />
</td>
</tr>';
}
}
} else {
echo '
<tr>
<td class="label" id="td_' . $nomCouleur['coul'] . '" colspan="2"><a href="" onclick="addImagesFields(' . $nomCouleur['coul'] . ');return false">Ajouter les champs de t&#233;l&#233;chargement pour cette couleur</a></td>
</tr>';
}
$cmp_default_image++;
}
par

/**
* ******************************* Gestion des images des couleurs ***************************************
*/
$selectCouleur = "SELECT c.*, pc.default_image, pc.image1, pc.image2, pc.image3, pc.image4, pc.image5, pc.couleur_id as coul
FROM peel_couleurs c
INNER JOIN peel_produits_couleurs pc ON pc.couleur_id = c.id AND pc.produit_id = '" . intval(vb($frm['id'])) . "'
ORDER BY c.position ASC, c.nom_" . $_SESSION['session_langue'] . " ASC";
$query = query($selectCouleur);
//Compteur permettant de fournir la default image en fonction de chaque couleurs
$cmp_default_image = 0;
while ($nomCouleur = fetch_assoc($query)) {
$nomCouleur_array[]=$nomCouleur;
}
// Le nombre de champs d'images t&#233;l&#233;chargeable est limit&#233; par la configuration PHP upload_max_filesize qui peut &#234;tre modifi&#233;e dans php.ini ou httpd.conf
// Il est donc n&#233;cessaire de limiter le nombre de champs par couleur afin de ne pas d&#233;passer cette limite
if(ini_get('upload_max_filesize') && !empty($nomCouleur_array)){
$upload_images_per_color = ceil(min(5, ini_get('upload_max_filesize')) / count($nomCouleur_array));
} else {
$upload_images_per_color = 2;
}
foreach($nomCouleur_array as $this_couleur) {
$image_found = false;
for($i = 1;$i <= $upload_images_per_color;$i++) {
if (!empty($this_couleur["image" . $i])) {
$image_found = true;
break;
}
}
echo '
<tr>
<td colspan="2" class="label"><br />Fichiers pour la couleur ' . $this_couleur['nom_' . $_SESSION['session_langue']] . ' (afficher cette couleur par d&#233;faut en front-office <input type="radio" name="default_color_id" ' . frmvalide(vb($frm['default_color_id']) == $nomCouleur['coul']) . ' value="' . $nomCouleur['coul'] . '" />)</td>
</tr>
<tr>
<td colspan="2" class="normal">Fichiers accept&#233;s : images (GIF, PNG et JPEG) et fichiers PDF.</td>
</tr>
<tr>
<td class="label">Num&#233;ro de l\'image ou PDF par d&#233;faut' . BEFORE_TWO_POINTS . ':</td>
<td class="normal">
<input name="default_image'.$cmp_default_image.'" value="' . String::str_form_value(vb($this_couleur['default_image'])) . '" /> Nombre entre 1 et 10
</td>
</tr>
';
if ($image_found) {
for ($i = 1; $i <= $upload_images_per_color; $i++) {
if (!empty($this_couleur["image" . $i])) {
if (pathinfo($this_couleur["image" . $i], PATHINFO_EXTENSION) == 'pdf') {
$this_image_html = '<img src="' . $GLOBALS['wwwroot_in_admin'] . '/images/logoPDF_small.png" alt="pdf" width="100" height="100" />';
} else {
$this_image_html = '<img src="' . $GLOBALS['repertoire_upload'] . '/' . $this_couleur['image' . $i] . '" alt=""/>';
}
echo '
<tr>
<td class="label">Image' . BEFORE_TWO_POINTS . ':</td>
<td class="normal">
Nom du fichier : ' . $this_couleur['image' . $i] . '
<a class="normal" href="' . get_current_url(false) . '?mode=supprfile&amp;id=' . vb($frm['id']) . '&amp;coul=' . $this_couleur['coul'] . '&amp;file=image' . $i . '&amp;page=' . (!empty($_GET['page']) ? $_GET['page'] : 1) . '">
<img src="' . $GLOBALS['administrer_url'] . '/images/b_drop.png" width="16" height="16" alt="" />supprimer cette image</a>
<input type="hidden" name="imagecouleur' . $this_couleur['coul'] . '_' . $i . '" value="' . String::str_form_value($this_couleur['image' . $i]) . '" />
</td>
</tr>
<tr>
<td colspan="2" class="center">' . $this_image_html . '</td>
</tr>
';
} else {
echo '
<tr>
<td class="label">Image' . BEFORE_TWO_POINTS . ':</td>
<td class="normal">
<input style="width: 100%" name="imagecouleur' . $this_couleur['coul'] . '_' . $i . '" type="file" value="" />
</td>
</tr>';
}
}
} else {
echo '
<tr>
<td class="label" id="td_' . $this_couleur['coul'] . '" colspan="2"><a href="" onclick="addImagesFields(' . $this_couleur['coul'] . ',' . $upload_images_per_color.');return false">Ajouter les champs de t&#233;l&#233;chargement pour cette couleur</a></td>
</tr>';
}
$cmp_default_image++;
}
[/code] Le second fichier à modifier est lib/js/admin_all_functions.js. La fonction addImagesFields doit être remplacé par
[CODE]
function addImagesFields(colorId, addImagesFields) {
var html = '<table>';
for(i=1;i<=addImagesFields;i++){
html+='<tr><td><input type="file" name="imagecouleur'+colorId+'_'+i+'" /></td></tr>';
}
html += '</table>';
document.getElementById('td_'+colorId).innerHTML = html;
}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Merci simon,

mais ces codes n'arrangent rien ils suppriment juste la possibilité de mettre des images dans les couleurs depuis l'administration, les champs ne s'affichant plus

cdt

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bon, j'ai trouvé une solution qui permet de mettre au moins 11 couleurs

je n'ai pas changé le code que simon a donné.

par contre dans lib/js/admin_all_functions.js, j'ai remplacé ces lignes


function addImagesFields(colorId) {

var html = '<table>';

for(i=1;i<=5;i++){

  html+='<tr><td><input type="file" name="imagecouleur'+colorId+'_'+i+'" /></td></tr>';

}

par ces lignes

function addImagesFields(colorId) {

var html = '<table>';

for(i=1;i<=1;i++){

  html+='<tr><td><input type="file" name="imagecouleur'+colorId+'_'+i+'" /></td></tr>';

}

je ne sais pas pour l'instant si cela va occasioner d'autres problèmes (je n'en ai pas trouvé)

mais en tout cas cela fonctionne nickel

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Autre précision avec la modification que j'ai faite:

en rentrant les couleurs en deux fois, on peut en rentrer 22, onze à chaque fois

voilà, si cela peut servir à quelqu'un

cordialement

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Merci à vous deux Simon et Chrismartinique pour votre boulot.

Je vais appliquer vos suggestions et je vous tiens au courant.

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

La simple modification que propose Chrismartinique fonctionne pour moi aussi, pas besoin de faire plus.

MERCI beaucoup à vous 2 !!

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping