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 Neues Plugin: Hersteller Slider Portlet (Zentrierungs- oder Schwarz/Weiß-Modus, Responsive Anpassung..) inkl. 5 kostenlosen Lizenzen Plugins für JTL-Shop 4
Neu Barcode Anpassung in Artikeletikett anhand Eigene Felder Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 2
Neu Adressabgleich für Shop5 Plugins für JTL-Shop 1
Welche Tabelle für Trennzeichen? JTL-Wawi 1.8 1
Neu Feature Request: Epson USB Stick an Epson TM-M30iii für mehrere Kassen Allgemeine Fragen zu JTL-POS 0
Neu Wie stelle ich ohne viel Aufwand fest, ob meine Plugins nach einem Update für JTL Shop 5.3.1 geeignet ist ? JTL-Shop - Ideen, Lob und Kritik 4
Neu Wokflow für Auftrag im Fehlbestand incl Artikelnummer User helfen Usern - Fragen zu JTL-Wawi 6
Neu Link für Newsletter um ihn im Browser zu öffnen Allgemeine Fragen zu JTL-Shop 0
Konsignationslager beim / für Kunden einrichten, aber wie? :) JTL-Wawi 1.8 2
Verwiesen an Servicepartner Workflow für Einkaufsliste User helfen Usern - Fragen zu JTL-Wawi 2
Marktplatzname für Konto-Otto ändern? Otto.de - Anbindung (SCX) 1
Neu Plugin Konfigurator für Breite x Höhe Plugins für JTL-Shop 6
Neu Artikel mit PReisabfrage Negativer Betrag für Lotto-Auszahlung Allgemeine Fragen zu JTL-POS 1
Wie Druckvorlagen Set z.B. für Versandetiketten wechseln? JTL-Wawi 1.7 1
Neu Plugin für Boomerang Versandverpackungen Plugins für JTL-Shop 1
SQL Abfrage für verkaufte Artikel + aktueller Bestand JTL-Wawi 1.8 1
Neu Grundpreisangaben für geringe Gramm-Mengen werden nicht angezeigt Betrieb / Pflege von JTL-Shop 0
Neu mit FBM für Ausland User helfen Usern - Fragen zu JTL-Wawi 2
Neu Falsche Gewinnermittlung für Kleinunternehmer JTL-Wawi - Ideen, Lob und Kritik 8
Neu Netto für Händler gleich, Brutto für Endkunden - Plugin oder andere Alternative? Allgemeine Fragen zu JTL-Shop 0
Neu Mindestbestellwert für Netto-Einkaufswert JTL-Shop 5 Allgemeine Fragen zu JTL-Shop 0
Neu Cron für Export-Manager "tut nix" JTL-Shop - Fehler und Bugs 15
Neu Liquid Variable für Positionsart User helfen Usern - Fragen zu JTL-Wawi 3
Neu leeres Textfeld erstellen für einen Hinweis auf der Rechnung User helfen Usern - Fragen zu JTL-Wawi 2
In Diskussion Filter für Zeitraum in "Alle Bons" aktualisiert sich nicht JTL-POS - Fehler und Bugs 2
Neu Mobatraum.de Alles für die Modellbahnträume Shops stellen sich vor 0
Gelöst Nachbestellung via Bestellvorschläge für Ladenlokale Allgemeine Fragen zu JTL-POS 1
Neu Export Gesamtpreis für Artikel mit Mindestabnahme Allgemeine Fragen zu JTL-Shop 0
Neu Frage zu Designvorlage JTL-Adept - Slider (für Ebay) eBay-Designvorlagen - Fehler und Bugs 4
Hosted (gehostete?) Datenbank Download Zweitgerät für unterwegs JTL-Wawi 1.8 13
Kennzahlen Übersicht für JTL Wawi - Wirtschaftliche Auswertung JTL-Wawi 1.8 0
Neu Feldname für Workflow herausfinden User helfen Usern - Fragen zu JTL-Wawi 4
Neu Datenimport über Ameise in JTL für Shopware Shopware-Connector 1
Wichtig Beta Connector für Presta 8 mit PHP 8+ PrestaShop-Connector 56
Anfrage für Zusammenarbeit zur Verbesserung unseres JTL-Onlineshops Einrichtung JTL-Shop5 1
Neu Track&Trace für Österreichische Post JTL-Track&Trace - Ideen, Lob und Kritik 2
Neu PrestaShop Connector für Prestashop 8 mit PHP 8.2 wird nicht unterstützt PrestaShop-Connector 3
Neu Variablen für den Email Versand Einrichtung JTL-Shop5 0
Neu Nach Update auf 5.3 funktioniert das Video-Portlet für lokale Videos nicht Gelöste Themen in diesem Bereich 9
Wo befindet sich das Feld mit der Information für "Zustandsbeschreibung" auf Ebay? JTL-Wawi 1.8 9
Neu Egener Export für CBAM-Bericht möglich? JTL Ameise - Eigene Exporte 1
Gelöst Globaler Haken für Überverkaufe ermöglichen JTL-Workflows - Fehler und Bugs 2
Neu JTL 1.8.12.0 - Artikelattribut für Shop importieren - Format CSV-Datei / Hilfe bei Import von individuellen Attributen für JTL-Shop (googlekat) JTL-Ameise - Ideen, Lob und Kritik 1
In Diskussion Benutzerdefinierten Standardpfad für Errorlogs definieren (Voting) JTL-Workflows - Ideen, Lob und Kritik 0
Neu Freitextfeld über Variation - Zeichenbeschränkung für Gravur Allgemeine Fragen zu JTL-Shop 8
Neu Template/ Vorlage für Bestellbestätigung gesucht Templates für JTL-Shop 0
WaWi Preisuntergrenze für Artikel festschreiben JTL-Wawi 1.7 4
Neu Variablen für Stücklistartikel in den neuen Vorlagen Angebot Auftrag Rechnung ect. Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
Neu Anleitung: Artikeletiketten für Auftrag, Rechnung, Lieferschein etc. drucken mit Etikettenanzahl = Artikelanzahl User helfen Usern - Fragen zu JTL-Wawi 0
Neu Zusatzkosten für Artikel Gelöste Themen in diesem Bereich 17

Ähnliche Themen