Nutzung von PHP und mySQL-Datenbanken zur Scripterzeugung von Herstellerdaten

Zuletzt geändert: 20. Januar 2021
Du bist hier:
Geschätzte Lesezeit: 2 min

In diesem Artikel wird beschrieben, wie man aus Herstellerdaten mit Hilfe von PHP und mySQL-Datenbanken Scripte erzeugt, welche diese Herstellerdaten in GDL-Scripte konvertiert.

Der Vorteil dieser Methode ist, dass man die Herstellerdaten immer 1:1 übertragen bekommt und dass es nicht durch falsche Abschreiben zu Fehlern kommen kann.

Das Prinzip besteht aus folgenden Schritten: Export der Exceldatei, Import in die mySQL-Datenbank, PHP-Script zum Auslesen der Datenbankinhalte in Kombination mit GDL-Script-Schnipseln.

Folgende Schritte sind im Einzelnen notwendig, um Herstellerdaten aus einer Excel automatisiert in ein GDL-Script zu überführen:

  1. Hersteller-Excel in Open Office öffnen, da Excel beim CSV-Export Sonderzeichen falsch ausgibt
  2. Das ® (Registered) Symbol (und andere Sonderzeichen) muss entfernt werden, falls vorhanden.
  3. ACHTUNG: manchmal klappt der Export nicht. Aus Open Office klappt es aber in jedem Fall.
  4. PHPadmin auf Deinem Server öffnen, auf den Reiter „Operationen“ gehen und Inhalt der entfernen CSV-Tabelle von vorhin in Datenbank importieren, dabei einen TAB als Spaltentrenner (aus Coda, Sublime Text oder einem anderen Texteditor) reinkopieren.
    Manchmal muss man den Import in SQL auch mehrfach versuchen.
  5. PHP Script schreiben, welches auf die Datenbank zugreift, und welches die benötigten Werte in der richtigen Reihenfolge ausgibt. Dazu die notwendigen GDL-Codeabschnitte zwischen die abgefragten Datenbankabschnitte einfügt.
  6. PHP-Webseite im Browser aufrufen und den angezeigten Text aus dem Browser herauskopieren und in das entsprechende GDL-Script einfügen.

Ein Beispielscript (alter PHP-Code: gilt nicht mehr für PHP 7 aufwärts) für den Aufruf der Datenbank „connect_database.inc.php“

<?php
	$dp = @mysql_connect("localhost", "root", "******");
	    @mysql_select_db("Hersteller_Update_2019", $dp) ;	    
	    
	function da_ba_fra($was, $von, $id)
	{
		$sql = "SELECT $was FROM $von WHERE id='$id'";
		$result = mysql_query($sql) or die(mysql_error());
		while ($row = mysql_fetch_assoc($result)) {
		return "$row[$was]";
		}    
	}
?>

Und das dazugehörige Script zum Auslesen der Datenbank und Erzeugen des GDL-Codes „Master_GDL.php“:

<!doctype html>
<html>
	<head>
		<title>Hersteller GDL EXPORT</title>
		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
		<link rel="stylesheet" type="text/css" href="gdl.css" />
	</head>
	<body>				
		<?php
		error_reporting (E_ALL); 
		include ("includes/connect_database.inc.php"); 
		$comment = "! ---------------------------------------------------------------------- !<br>";		
		// ANZAHL SPALTEN + ZEILEN
		$tablename = "Update_2019";
		$sql = "SELECT * FROM $tablename";
		$result = mysql_query($sql) or die(mysql_error());		
		$anzahlspalten = mysql_num_fields($result) ;
		$datensaetze = mysql_num_rows($result);
		
		//echo $datensaetze;
		
			//	$datensaetze = 4;
		
		// AUSGABE DER SPALTENTITEL
		for ($zal = 1; $zal <= $anzahlspalten - 1; $zal = $zal + 1){  
			$sql = "SELECT * FROM $tablename";
			$result = mysql_query($sql) or die(mysql_error());	
			$fieldname[$zal] = mysql_field_name($result, $zal);					
		}	
		
		// SCHLEIFE durch die DATENSÄTZE
		for ($id = 1; $id <= $datensaetze; $id = $id + 1){  
			echo $comment;
							
			$zal = $zal + 1;
			
			// = DATEINAME DEFINTION : SPALTE 24
			
			$groesse = da_ba_fra($fieldname[6], $tablename, $id);			
			$groesse = array_values(preg_split("#\ns*\n#Uis", $groesse))[0];  
			
			$dateiname = da_ba_fra($fieldname[24], $tablename, $id);	
			$dateiname = substr($dateiname, 0, -4);	

			$bezeichnung = da_ba_fra($fieldname[2], $tablename, $id);	
			$produkt = da_ba_fra($fieldname[3], $tablename, $id);
			$artikel = da_ba_fra($fieldname[4], $tablename, $id);
			$farbnummer = da_ba_fra($fieldname[9], $tablename, $id);
			$bezeichnung_lang = $bezeichnung . "_" . $produkt . "_" . $artikel . "_" . $farbnummer;
		
			// RGB-Wert	: SPALTE 25, 26. 27
			$RGB_R = number_format(da_ba_fra($fieldname[28], $tablename, $id)/255, 4);
			$RGB_G = number_format(da_ba_fra($fieldname[29], $tablename, $id)/255, 4);	
			$RGB_B = number_format(da_ba_fra($fieldname[30], $tablename, $id)/255, 4);			
			// TEXTUR	
			echo "DEFINE TEXTURE  '" . $bezeichnung_lang ."_tex' '". $dateiname;
			echo ".jpg', " . da_ba_fra($fieldname[25], $tablename, $id)/1000 .", " . da_ba_fra($fieldname[26], $tablename, $id)/1000 . ", 5,  0 <br>" . "\r\n"	;
			
			// MATERIAL							
			$zal = $zal + 1;
			echo "DEFINE MATERIAL '" .$bezeichnung_lang ."' 24, " . $RGB_R .", ". $RGB_G .", ". $RGB_B . ", " . "ind(fill, '" . $groesse . "'), 0, ind(texture, '" .$bezeichnung_lang . "_tex')<br>"	 . "\r\n";		
			
		}
		?>
		
	</body>
</html>

Und ein Teil der Ausgabe:

! ---------------------------------------------------------------------- !
DEFINE TEXTURE 'hersteller_xyz_00_tex' 'hersteller_xyz_00.jpg', 0.3, 0.3, 5, 0
DEFINE MATERIAL 'hersteller_xyz_00' 24, 0.8941, 0.8667, 0.7922, ind(fill, '15,00 m x 1,22 m'), 0, ind(texture, 'hersteller_xyz_00_tex')
! ---------------------------------------------------------------------- !
DEFINE TEXTURE 'hersteller_xyz_01_tex' 'hersteller_xyz_01.jpg', 0.3, 0.3, 5, 0
DEFINE MATERIAL 'hersteller_xyz_01' 24, 0.7961, 0.7765, 0.7529, ind(fill, '15,00 m x 1,22 m'), 0, ind(texture, 'hersteller_xyz_01_tex')
! ---------------------------------------------------------------------- !
DEFINE TEXTURE 'hersteller_xyz_02_tex' 'hersteller_xyz_02.jpg', 0.3, 0.3, 5, 0
DEFINE MATERIAL 'hersteller_xyz_02' 24, 0.5569, 0.5255, 0.5137, ind(fill, '15,00 m x 1,22 m'), 0, ind(texture, 'hersteller_xyz_02_tex')
! ---------------------------------------------------------------------- !
DEFINE TEXTURE 'hersteller_xyz_03_tex' 'hersteller_xyz_03.jpg', 0.3, 0.3, 5, 0
DEFINE MATERIAL 'hersteller_xyz_03' 24, 0.3529, 0.3216, 0.3098, ind(fill, '15,00 m x 1,22 m'), 0, ind(texture, 'hersteller_xyz_03_tex')
! ---------------------------------------------------------------------- !
DEFINE TEXTURE 'hersteller_xyz_04_tex' 'hersteller_xyz_04.jpg', 0.3, 0.3, 5, 0
DEFINE MATERIAL 'hersteller_xyz_04' 24, 0.9490, 0.9098, 0.8039, ind(fill, '15,00 m x 1,22 m'), 0, ind(texture, 'hersteller_xyz_04_tex')
! ---------------------------------------------------------------------- !
DEFINE TEXTURE 'hersteller_xyz_05_tex' 'hersteller_xyz_05.jpg', 0.3, 0.3, 5, 0
DEFINE MATERIAL 'hersteller_xyz_05' 24, 0.9255, 0.8745, 0.7490, ind(fill, '15,00 m x 1,22 m'), 0, ind(texture, 'hersteller_xyz_05_tex')
! ---------------------------------------------------------------------- !
Tags:
War dieser Artikel hilfreich?
Mag ich nicht 0 0 of 0 fanden diesen Artikel hilfreich.
Anzahl Aufrufe: 314

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert