Anpassung desConnectors für die Contrib Ultra Pics

Andreas Grambow

Sehr aktives Mitglied
Hallo,

Ich poste hier mal die Anpassungen des osC-Connectors für die Contrib UltraPics. Mit dieser Contrib ist es möglich, einem Artikel bis zu 7 Bilder zuzuweisen. Mit diesen Änderungen werden diese Bilder über den Connector hochgeladen.

Wichtig: Ich Änderungen wurden am Connector V0.998 durchgeführt und getestet. Trotzdem kann ich keine Garantie für die Funktion übernehmen! Nutzung auf eigene Gefahr.
Wer sich nicht selber an die Anpassung traut, bitte hier um Hilfe bitten.


Geändert werden müssen folgende Dateien:

jtlwawi_connector/dbes/setArtikelBild.php
jtlwawi_connector/dbes/ArtikelPict.php

Bitte diese Dateien vorher sichern

setArtikelBild.php

Suche
Code:
$return=0;
	//nur BildNr 1 wird berücksichtigt
	if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==1 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

			//updaten
			eS_execute_query("update products set products_image=\"$bildname\" where products_id=".$products_id);
		}
	}

Füge danach ein
Code:
if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==2 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

			//updaten
			eS_execute_query("update products set  products_image_sm_1=\"$bildname\" where products_id=".$products_id);
                         eS_execute_query("update products set  products_image_xl_1=\"$bildname\" where products_id=".$products_id);
		}
	}
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==3 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

			//updaten
			eS_execute_query("update products set  products_image_sm_2=\"$bildname\" where products_id=".$products_id);
                         eS_execute_query("update products set  products_image_xl_2=\"$bildname\" where products_id=".$products_id);
		}
	}
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==4 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

			//updaten
			eS_execute_query("update products set  products_image_sm_3=\"$bildname\" where products_id=".$products_id);
                         eS_execute_query("update products set  products_image_xl_3=\"$bildname\" where products_id=".$products_id);
		}
	}
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==5 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

			//updaten
			eS_execute_query("update products set  products_image_sm_4=\"$bildname\" where products_id=".$products_id);
                         eS_execute_query("update products set  products_image_xl_4=\"$bildname\" where products_id=".$products_id);
		}
	}
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==6 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

			//updaten
			eS_execute_query("update products set  products_image_sm_5=\"$bildname\" where products_id=".$products_id);
                         eS_execute_query("update products set  products_image_xl_5=\"$bildname\" where products_id=".$products_id);
		}
	}
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==7 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

			//updaten
			eS_execute_query("update products set  products_image_sm_6=\"$bildname\" where products_id=".$products_id);
                         eS_execute_query("update products set  products_image_xl_6=\"$bildname\" where products_id=".$products_id);
		}
	}

ArtikelPict.php

Suche
Code:
if (intval($_POST["action"]) == 3 && intval($_POST['KeyArtikel'])>0)
	{
		$return =0;
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['KeyArtikel']));
		if ($products_id>0)
		{
			eS_execute_query("update products set products_image='' where products_id=".$products_id);
		}

Füge danach ein
Code:
 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_sm_1='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_sm_2='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_sm_3='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_sm_4='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_sm_5='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_sm_6='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_xl_1='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_xl_2='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_xl_3='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_xl_4='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_xl_5='' where products_id=".$products_id);
		}
                 if ($products_id>0)
		{
			eS_execute_query("update products set products_image_xl_6='' where products_id=".$products_id);
		}


beide Dateien speichern und wieder auf den Server hochladen.

Nutzung auf eigene Gefahr.
 

lostmail

Aktives Mitglied
28. Februar 2007
199
0
Ähm - mal ne Frage:
JTL kann doch nur 3 Bilder je Artikel hochladen ?

Dieses Script ist nur zum holen der Artikel aus dem Shop gedacht, oder ?

Wenn man einen neuen Artikel mit JTL erstellt kann man doch nur 3 Bilder Definieren je Artikel so weit ich das sehen kann...?
 

Marcel

Sehr aktives Mitglied
14. September 2006
7.153
5
Nö, es gibt zwar nur drei Buttons für die Zuordnung, aber du kannst nach dem dritten Bild jederzeit einfach in die Spalte klicken und dort weitere Bilder zuordnen.
 

Alf

Aktives Mitglied
13. Februar 2007
136
0
Hallo, ich habe eine modifizierte osCommerce-Version von Ingo
da scheint es mit dem Connector nicht zu klappen hat irgend
jemand Erfahrungen mit dieser Version und der Möglichkeit
mit der WaWi mehrere Bilder hoch zu laden ?

Edit :
Die Bilder werden in dem richtigen Verzeichnis hochgeladen nur
dass es keine weiteren Images-Felder unter der Tabelle Pruducts
gibt sondern eine Tabelle mit dem Namen "products_images" mit
folgendem Aufbau :

Code:
CREATE TABLE `products_images` (
  `image_id` int(11) NOT NULL auto_increment,
  `products_id` int(11) NOT NULL default '0',
  `image_name` varchar(64) default NULL,
  `sort_order` int(5) NOT NULL default '1',
  KEY `products_id` (`products_id`),
  KEY `image_id` (`image_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

Nun weis ich nicht wie die WaWi die Information pushed welches Bild das
Hauptartikelbild ist das noch unter der Tabelle "products" im Feld "products_image" abgelegt wird.

Für jeden Tipp bin ich dankbar
 

shetani

Aktives Mitglied
28. Februar 2007
226
0
Essen
In der Regel ist es Bild Nummer 1

hängt aber davon ab wie der Connector definiert ist.

Theoretisch müsste die Schnittstelle derart angepasst sein, das

Bild 1 -> ablegen in Table products -> products_image
Bild 2 bis xxx -> ablegen in Table products_images und ebenfalls products_id anlegen usw usf
 

Alf

Aktives Mitglied
13. Februar 2007
136
0
Hallo @shetani,

danke für Deine Antwort. Ich hatte auch schon folgendes gedacht
was auch funktioniert nur kann ich die Bilder nicht mehr über die
WaWi löschen. Hier ma für alle die das hochladen haben möchten:
Code:
<?php

require_once("syncinclude.php");

$return=3;
$_POST['userID'] = $_POST['euser'];
$_POST['userPWD'] = $_POST['epass'];
if (auth())
{
	$return=0;
	//nur BildNr 1 wird berücksichtigt
	if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==1 && $_FILES['bild'])
	{
		//hol products_id
		$products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
		if ($products_id>0)
		{
			$bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
			move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
			chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);
			
			//updaten
			eS_execute_query("update products set products_image=\"$bildname\" where products_id=".$products_id);
		}
	}
 if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==2 && $_FILES['bild'])
   {
      //hol products_id
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
      if ($products_id>0)
      {
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

         //updaten
        eS_execute_query("insert into products_images (image_id, products_id, image_name, sort_order) values('','$products_id','$bildname','2')");

      }
   }
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==3 && $_FILES['bild'])
   {
      //hol products_id
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
      if ($products_id>0)
      {
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

         //updaten
           eS_execute_query("insert into products_images (image_id, products_id, image_name, sort_order) values('','$products_id','$bildname','3')");
      }
   }
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==4 && $_FILES['bild'])
   {
      //hol products_id
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
      if ($products_id>0)
      {
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

         //updaten
          eS_execute_query("insert into products_images (image_id, products_id, image_name, sort_order) values('','$products_id','$bildname','4')");
      }
   }
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==5 && $_FILES['bild'])
   {
      //hol products_id
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
      if ($products_id>0)
      {
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

         //updaten
          eS_execute_query("insert into products_images (image_id, products_id, image_name, sort_order) values('','$products_id','$bildname','5')");
      }
   }
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==6 && $_FILES['bild'])
   {
      //hol products_id
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
      if ($products_id>0)
      {
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

         //updaten
          eS_execute_query("insert into products_images (image_id, products_id, image_name, sort_order) values('','$products_id','$bildname','6')");
      }
   }
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==7 && $_FILES['bild'])
   {
      //hol products_id
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild']));
      if ($products_id>0)
      {
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg";
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname);
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644);

         //updaten
          eS_execute_query("insert into products_images (image_id, products_id, image_name, sort_order) values('','$products_id','$bildname','7')");
      }
   }
}
mysql_close();
echo($return);
logge($return);

?>
Nun dachte ich für das löschen wäre die Datei "ArtikelPict"
verantwortlich da hier leere Felder in die Tabelle geschrieben
werden und hatte diese folgendermassen abgeändert:
Code:
.....
if (intval($_POST["action"]) == 3 && intval($_POST['KeyArtikel'])>0)

	{

		$return =0;

		//hol products_id

		$products_id = getFremdArtikel(intval($_POST['KeyArtikel']));

		if ($products_id>0)

		{

			eS_execute_query("update products set products_image='' where products_id=".$products_id);

		}
  if ($products_id>0)
      {
         eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
         eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
           eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
           eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
          eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
          eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
           eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
           eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
          eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
           eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
          eS_execute_query("delete from products_images where products_id=".$products_id);
      }
                 if ($products_id>0)
      {
           eS_execute_query("delete from products_images where products_id=".$products_id);
      }

	}

	

}
.....
aber leider ohne Erfolg, gibt es da noch ein Datei ?
 

shetani

Aktives Mitglied
28. Februar 2007
226
0
Essen
theoretisch kannst du die bilder updaten indem du einfach in der tabelle products_image alle Einträge, die zu der aktuellen porudct_id gehören löscht. Da dein obiger quellcode mit inserts arbeitest sollte das gehen.
 

Alf

Aktives Mitglied
13. Februar 2007
136
0
Also so .....
Code:
if (intval($_POST["action"]) == 3 && intval($_POST['KeyArtikel'])>0)
{
 $return =0;
 //hol products_id
 $products_id = getFremdArtikel(intval($_POST['KeyArtikel']));
 if ($products_id>0)
 {
  eS_execute_query("update products set products_image='' where products_id=".$products_id);
 }
 if ($products_id>0)
 {
   eS_execute_query("delete from products_images where products_id = getFremdArtikel(intval($_POST['kArtikelBild']))");
 }
}
 

shetani

Aktives Mitglied
28. Februar 2007
226
0
Essen
Hallo Alf,

so ähnlich, wobei er dann alle Bildeinträe zu der zugehörigen product_id aus der products_images löscht.
 

Alf

Aktives Mitglied
13. Februar 2007
136
0
Andreas Grambow@ das ist ne Sonderedition aber eigentlich auf dem deutschen Markt sehr verbreitet, da hier schon alle contribs für den deutschen Handel integriert sind. Da dieses aber speziell angepasst wurde laufen viele Contribs nicht mehr da diese nur von der Originalversion ausgehen und in dieser sehr viel verbessert und angepasst wurde.

shetani@ also dann einfach wieder in die IF-Abfragen wie oben rein wobei ich da nicht wirklich schlau draus werde da hier die selectierung des Eintrags irgendwie fehlt und einfach nur eine Schleife nach der anderen und damit ein Eintrag nach dem anderen gelöscht wird ( finde ich irgendwie unsicher ).
 

shetani

Aktives Mitglied
28. Februar 2007
226
0
Essen
nein, die löschabfrage brauchst du nicht wiederholen da sie automatisch alle einträge, die der product_id entsprechen, aus der Tabelle products_images löscht.

Wenn der Connector die setartikelbild.php durchläuft erstellt er in deiner variante automatisch neue datenbankeinträge und führt eben keine updates aus . deswegen kannst du grundsätlich erstmal alle bestenedne löschen

Immer schön Backups vor den Tests machen - gell ;)
 

jeans-base.de

Aktives Mitglied
4. Februar 2007
27
0
Nähe Chemnitz
DAS LÖSCHEN DER DATEI AUF DEM SERVER FEHLT

Hallo zusammen,

ich glaube, ich war einer von vielen, warum Andreas diese Tread aufgemacht hat.

Generell gefällt er mir schon sehr gut, nur leider fehlt das löschen von Dateien in diesen Scripten völlig... damit entstehen mehr und mehr Dateileichen auf dem Server.

Kurz zu Situation. Ich verwende nicht die offizielle Contri Ultra-Pics, da ich davor erkannte, dass in der Originalversion von OSC alle Bilder immer die gleiche riesige Dateigröße haben... nur werden sie als vermeindliches "Vorschaubild" im richtigen Seitenverhältnis skaliert.

Nun hab ich mir mal einen Kopf gemacht und OSC so verändert, dass alle Bilder autom. als kleines Thumbnail in einem separaten Ordner abgelegt werden. Diese werden autom. beim ersten Gebrauch erzeugt.
Warum nicht UltraPics? Da ich ungern Datenbanken und Tabellen leichtfertig erweitere, hab ich mir erst einmal Gedanken gemacht, wie man es anders lösen kann. Mein erstes Bild wird in die Tabelle products geschrieben und alle weiteren Bilder werden laut Schema 25_0.jpg, 25_1.jpg usw... auf dem Server abgelegt. Beim Aufruf eines Artikels im OSC schaue ich zur Laufzeit nach, ob das Bild mittels file_exists(string filename) existiert. Wenn ja, wird es zur Anzeige gebracht. Wenn nicht, dann nicht.

Soviel zu meiner Version, ich schreib mal, was mir beim intensiven Testen aufgefallen ist.

Code:
if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==2 && $_FILES['bild']) 
   { 
      //hol products_id 
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild'])); 
      if ($products_id>0) 
      { 
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg"; 
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname); 
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644); 

         //updaten 
         eS_execute_query("update products set  products_image_sm_1=\"$bildname\" where products_id=".$products_id); 
                         eS_execute_query("update products set  products_image_xl_1=\"$bildname\" where products_id=".$products_id); 
      } 
   } 
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==3 && $_FILES['bild']) 
   { 
      //hol products_id 
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild'])); 
      if ($products_id>0) 
      { 
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg"; 
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname); 
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644); 

         //updaten 
         eS_execute_query("update products set  products_image_sm_2=\"$bildname\" where products_id=".$products_id); 
                         eS_execute_query("update products set  products_image_xl_2=\"$bildname\" where products_id=".$products_id); 
      } 
   } 
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==4 && $_FILES['bild']) 
   { 
      //hol products_id 
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild'])); 
      if ($products_id>0) 
      { 
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg"; 
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname); 
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644); 

         //updaten 
         eS_execute_query("update products set  products_image_sm_3=\"$bildname\" where products_id=".$products_id); 
                         eS_execute_query("update products set  products_image_xl_3=\"$bildname\" where products_id=".$products_id); 
      } 
   } 
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==5 && $_FILES['bild']) 
   { 
      //hol products_id 
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild'])); 
      if ($products_id>0) 
      { 
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg"; 
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname); 
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644); 

         //updaten 
         eS_execute_query("update products set  products_image_sm_4=\"$bildname\" where products_id=".$products_id); 
                         eS_execute_query("update products set  products_image_xl_4=\"$bildname\" where products_id=".$products_id); 
      } 
   } 
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==6 && $_FILES['bild']) 
   { 
      //hol products_id 
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild'])); 
      if ($products_id>0) 
      { 
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg"; 
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname); 
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644); 

         //updaten 
         eS_execute_query("update products set  products_image_sm_5=\"$bildname\" where products_id=".$products_id); 
                         eS_execute_query("update products set  products_image_xl_5=\"$bildname\" where products_id=".$products_id); 
      } 
   } 
         if (intval($_POST['kArtikelBild'])>0 && intval($_POST['nNr'])==7 && $_FILES['bild']) 
   { 
      //hol products_id 
      $products_id = getFremdArtikel(intval($_POST['kArtikelBild'])); 
      if ($products_id>0) 
      { 
         $bildname=$products_id."_".(intval($_POST['nNr'])-1).".jpg"; 
         move_uploaded_file($_FILES['bild']['tmp_name'],DIR_FS_CATALOG_IMAGES.$bildname); 
         chmod (DIR_FS_CATALOG_IMAGES.$bildname, 0644); 

         //updaten 
         eS_execute_query("update products set  products_image_sm_6=\"$bildname\" where products_id=".$products_id); 
                         eS_execute_query("update products set  products_image_xl_6=\"$bildname\" where products_id=".$products_id); 
      } 
   }

Laut den IF's muss ein Bild kommen, ansonsten greift alles, was dahinter kommt absolut nicht. Wenn jetzt aber ein Bild verändert wird, hat es unter folgenden Voraussetzungen keine Wirkung. Ich gehe ins WAWI zu Artikel bearbeiten und möchte nur die Reihenfolge der angezeigten Bilder verändern.
Leider kommt in solch einem Fall beim Internetabgleich keine Info mit, das sich die Reihenfolge geändert hat (vielleicht doch) aber es wird kein Bild gepostet. Damit greifen die Mechanismen im o.g. Code gar nicht!

Jetzt haben sich hier einige auch einen Kopf gemacht, wie man die Bilder eventl. wieder losbekommt bzw. löscht. Erst mal den Code, den ich meine:

Code:
if (intval($_POST["action"]) == 3 && intval($_POST['KeyArtikel'])>0) 

   { 
      $return =0; 
      //hol products_id 
      $products_id = getFremdArtikel(intval($_POST['KeyArtikel'])); 
      if ($products_id>0) 
      { 
         eS_execute_query("update products set products_image='' where products_id=".$products_id); 
      } 
  if ($products_id>0) 
      { 
         eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
         eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
           eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
           eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
          eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
          eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
           eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
           eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
          eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
           eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
          eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 
                 if ($products_id>0) 
      { 
           eS_execute_query("delete from products_images where products_id=".$products_id); 
      } 

   } 
}

Der Code kann nicht klappen. Er ist nur zum löschen gut aber nicht zum aktualisieren.
Zuerst wird hier ein update auf die Tabelle products gemacht um den Bildnamen zu löschen und dann werden mit delete alle anderen Bilder aus der Tabelle product_images gelöscht .... sorry, sehr stümperhaft.... denn einmal die Abfrage

if ($products_id>0)
{
eS_execute_query("delete from products_images where products_id=".$products_id);
}

hätte auch gereicht... so wie Alf richtig erkannt hat.

Nur wird jetzt leider noch kein Bild aktualisiert, nur aus der DB gelöscht, da wieder kein neues Bild per Upload beim Connector ankommt und der Code ganz oben nicht greifen kann. Geschweige, das je ein Bild auf dem Server tatsächlich gelöscht werden kann, denn außer move_uploaded_file() ganz oben im Qellcode habe ich keine Dateiarbeit im Filesystem gesehen.
Damit aber Bilder in der Reihenfolge verändert werden können, müssen diese aus dem WAWI wieder gepostet werden, sonst wie schon oben gesagt, greift der Quellcode ganz oben gar nicht. Ich gehe noch ein stück weiter. Wenn ein Bearbeiter in WAWI nur mal die Überschrift oder einen Sonderpreis verändern will, so werden die Bilder im OSC aus der DB gelöscht.

Es ist also eine höchst verzwickte Situation hier. Wie könnte es sauber gelöst werden. Ich habe in der Datei Artikel.php folgenden Code nach dem Update der Tabelle Products eingefügt:

Code:
alle Bilder werden beim POSTEN gelöscht 
for($i = 0; $i < 7; $i++){
    $bild = $products_id."_".$i.".jpg";
	if (file_exists(DIR_FS_CATALOG_IMAGES.$bild)) {
		// Thumbnail löschen
	    @unlink(DIR_FS_CATALOG_IMAGES."_img_cache/".$bild); 
		// Bild löschen
		@unlink(DIR_FS_CATALOG_IMAGES.$bild);
	}else{
	    break;
	}	
} // for

Damit werden alle Bilder von dem jeweiligen Artikel gelöscht. Hier könnte auch das delete für die Tabelle der Produktbilder bei einer Aktualisierung rein.

Ansonsten konnte ich den allerersten Code von Andreas in der Datei setArtikelBild.php so übernehmen.
Jetzt aber wieder folgendes Problem. Sobald Artikeländerungen, und nicht nur am Bild, vorgenomen werden, werden die Bilder gelöscht. Aber auch dann, wenn ich die Reihenfolge der Bilder nur verändert habe.
Ich brauche ein FLAG!.
Ich denke, Andreas weiss, wovon ich spreche. Also entweder ein Kennzeichen, was dem Connector klar machen kann, dass nur die Reihenfolge geändert wird, dann muss aber das Update der Bilder an einer anderen Stelle erfolgen und es müssen auch die Dateien nach folgendem Muster umbenannt werden. Aus Bild 25_0.jpg wird 25_1.jpg und anders herum.

Oder, die einfachere Methode, die Bilder werden immer gepostet. Sicher, ein Performance-Verlust aber um den zu umgehen, könnte im WAWI im Dialog „Internetabgleich“ ein Haken rein, wo der Nutzer selbst bestimmen kann, ob die Bilder der veränderten Artikel nochmal mit gepostet werden. Ähnlich wie derHaken, alle Artikel nocheinmal senden.

Ich glaube, das ist die beste Lösung, denn alle Nutzer müssten den Connector nicht nochmal umprogrammieren, der im Datail eh fehlerhaft ist, auch ihr von JTL nicht und es ist eine saubere Lösung, wie das aktualisieren der Bilder in den Shops gehen kann.

Ich hoffe, ich habe nicht all zu sehr für Verwirrung gesorgt und wünsche allen einen schönen Feiertags-Abend.

mfg
Thomas
 

Ulixes

Aktives Mitglied
17. November 2007
2
0
Hallo Allerseits ;)

Erstmal ein großes Lob an die hilfsbereiten Entwickler, und die netten User hier im Forum!

Nach intensiver erfolgloser Suche muss ich jetzt dieses Thema hier nochmal aktivieren.

Installiert ist:
Connector: 09991 mit UltraPics Modifikation
Wawi: 09959
osCommerce: 2.2-MS2 mit UltraPics

Da ich Thumbnails für eine gute Performance des Shops benutze, und diese selbst erstelle weil sie einfach besser aussehen als automatisch generierte, und die großen Bilder eben wegen der Ladezeiten nicht einfach klein skalieren möchte, habe ich folgendes Problem:

Die Wawi hat die Möglichkeit nur 9 Bilder in den Shop zu laden, wie lässt sich das erweitern?

Ich bräuchte max 14 Bilder pro Artikel.
Also 7 Thumbnails und 7 Big-Images als getrennte Bilder.
Den Connector könnte man bestimmt dementsprechend erweitern, (bin zwar ein PHP-Noob aber mit rumprobieren würde ich das glaube ich hinkriegen) jedoch müsste die Wawi das erstmal unterstützen.
Ich habe schon alles ausprobiert, zwei Ziffern, Buchstaben, Zeichen u.s.w. es gibt scheinbar keine Möglichkeit über 9 Bilder pro Artikel mit Inet-Nummern einzubinden.

Gibt es eine Möglichkeit die Inet-Nummern zweistellig, oder vielleicht einstellig mit einem Zusatz-Buchstaben zu machen, ohne allzugroßen Aufwand für euch Entwickler?

Viele Grüße aus dem Allgäu

:)
 

Ulixes

Aktives Mitglied
17. November 2007
2
0
Vielen Dank für den Tip,
auf die Idee nach einer neuen Version zu schauen bin ich vor lauter Beiträge-suchen gar nicht gekommen... ;)
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Spezialist für Rechnungsformular-Anpassung benötigt Dienstleistung, Jobs und Ähnliches 1
Neu Anpassung der Rechnungsansicht bei zu langen Artikelbeschreibungen Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Suche Dienstleister zur Anpassung von Rechnungsvorlagen Dienstleistung, Jobs und Ähnliches 3
Neu JTL-Infoschreiben "Wichtige Neuerung im Postgesetz zur Kennzeichnungspflicht" - Umsetzung auch für Österreichische Post Labels ? JTL-ShippingLabels - Ideen, Lob und Kritik 0
Neu Benutzerdefinierte Klasse für Überschrift anlegen funktioniert nicht Templates für JTL-Shop 2
Kategoriebox Nummer für Unterkategorien JTL-Wawi 1.9 2
20 % USt wird für UK nicht ausgewiesen - was mache ich falsch JTL-Wawi 1.9 1
Getrenntes Lager für den JTL shop JTL-Wawi 1.9 1
Neu Benutzer Authentifizierung für externe App/Shop Onlineshop-Anbindung 1
Sql Abfrage VK Preise pro Kundengruppe für Grafana JTL-Wawi 1.8 9
Neu List & Label - Eigene SQL-Abfrage als Grundlage für Tabelle im Berichtscontainer? User helfen Usern - Fragen zu JTL-Wawi 10
Schnittstelle für Zalando, Kaufland und Otto JTL-Wawi 1.9 5
Neu Die Kennzeichnungspflicht für schwere Pakete kommt am 1.1.2025 JTL-ShippingLabels - Ideen, Lob und Kritik 0
Neu Ausgabeweg => Beschreibungen werden nicht von JTL Wawi gezogen für Shop/ebay/sonst was User helfen Usern - Fragen zu JTL-Wawi 3
Neu SQL Vartable für Reservierte Artikel gesucht User helfen Usern - Fragen zu JTL-Wawi 2
Herstellername / Verantwortliche Person für die EU für Kaufland kaufland.de - Anbindung (SCX) 1
Neu Umfrage: Scanpflicht auf Artikelebene (Nur für bestimmte Artikel aktivieren/deaktivieren) JTL-WMS / JTL-Packtisch+ - Ideen, Lob und Kritik 0
Neu Workflow und Version für Vorhaben Starten mit JTL: Projektabwicklung & Migration 3
Neu Rabatt für Bundles Allgemeine Fragen zu JTL-Shop 2
Neu Suche Dienstleister für Rechnungsvorlage, MwSt Sätze User helfen Usern - Fragen zu JTL-Wawi 0
Provisionsabrechnung für Vertrieb JTL-Wawi 1.9 1
Beantwortet Kosten für Aufträge aus Shopware 5 Shopware-Connector 1
Neu Artikelbestände für Stücklistenartikel blockieren User helfen Usern - Fragen zu JTL-Wawi 2
Neu Attribute für EWR Pflichtangaben - otto.de User helfen Usern - Fragen zu JTL-Wawi 5
Neu Amazon Lister 2.0 Fehlercode: SLR402 Bild "1.jpg" für das Angebot mit SKU "xxxxx" auf Channel "AMAZONDEJTL" wurde nicht gefunden Amazon-Lister - Ideen, Lob und Kritik 0
Neu Variable für Zulaufdatum User helfen Usern - Fragen zu JTL-Wawi 1
Neu Wichtige Infos zu GPSR-Attributen für JTL-eazyAuction und kommende JTL-Wawi Version 1.9.6.0 Einrichtung und Installation von JTL-eazyAuction 77
Welche Einstellung für "Überverkäufe nicht mehr möglich" wenn "alle Lagerbestände null" sind. JTL-Wawi 1.9 5
Neu Preisdarstellung: keine „ab“-Preise mehr mit Staffelpreisen für Produkte ohne Variationen (JTL Shop 5.3.3) Allgemeine Fragen zu JTL-Shop 1
Attribute für EWR Pflichtangaben (ab 13.12.2024) auf den Marktplätzen otto.de & kaufland.de Otto.de - Anbindung (SCX) 8
Neu GTIN/EAN für mehrere Artikel verwenden Arbeitsabläufe in JTL-Wawi 2
Rabatt für einzelnen Kunden einrichten JTL-Wawi 1.9 2
Neu Artikeletikett für Kinderartikel drucken mit GTIN Barcode funktioniert nicht User helfen Usern - Fragen zu JTL-Wawi 12
Neu Vorlage für Angeboten Rechnungsbetrag ändern Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 1
Neu S: Plugin Dropdown-Menü für meine Kategorien Plugins für JTL-Shop 10
Neu EVRI Label für Versand nach UK - wer benutzt es? Business Jungle 2
Nur bestimmte Bilder für einen Marktplatz aktivieren (Hood.de) JTL-Wawi 1.8 2
Neu Drucker für WMS getauscht - Zollpapiere werden nicht gedruckt JTL-ShippingLabels - Ideen, Lob und Kritik 1
Variable für Kundengruppe Allgemeine Fragen zu JTL-Shop 6
Neu Beschreibung für Amazon ohne HTML Inhalte Arbeitsabläufe in JTL-Wawi 3
Hilfe gesucht für Änderung der internen Schlüsselnummern! JTL-Wawi 1.9 8
Beantwortet Manueller Worklfow Rechnung für Mahnung, wie den offenen Rechnungsbetrag bei Teilrechnung ausgeben? JTL-Workflows - Ideen, Lob und Kritik 7
Tipps für effiziente Änderungen bestehender Artikel JTL-Wawi 1.7 2
Neu Bilder für alle Plattformen verwenden User helfen Usern - Fragen zu JTL-Wawi 8
Neu JTL WaWI abgleich mit Amazon für Deal Day & Black Friday User helfen Usern - Fragen zu JTL-Wawi 1
Onpage composer Texte für Merkmal Seiten Einrichtung JTL-Shop5 1
Neu Amazon Lister 2.0 - Code 99016 - Ein Maximum von 1 Vorkommen (oder Vorkommnissen) ist für das Attribut color zulässig Amazon-Lister - Fehler und Bugs 1
Neu Anbindung von JTL an Onlinehandel für GPSR (Produktsicherheit) Schnittstellen Import / Export 3
Sonderpreise für den Otto Marktplatz übertragen Otto.de - Anbindung (SCX) 1
Neu Suche Tipps für Plesk Settings Installation / Updates von JTL-Shop 0

Ähnliche Themen