Tabelle in SQL-Datenbank mittels PHP erstellen

Loveboat

Erfahrenes Mitglied
Hallo Leute,

ich stehe vor einem Problem und weiß nicht weiter, hoffe mir kann jemand helfen. Und zwar möchte ich in meinem PHP-Script eine Tabelle in meiner Datenbank anlegen.
Zuerst wird aus einer Datei die erste Zeile (CSV mit ; getrennt) eingelesen und in ein Array geschrieben. Diese sollen dann meine Felder in der Tabelle werden:

PHP:
$col = 0;
$thisFileContent = file($_FILES["custlist"]["tmp_name"]);  
foreach ($thisFileContent as $zeile) 
    { 
    $coloum[$col] = explode(";", $zeile);
    $col++;
    }

Anschließend soll eine Tabelle in meiner Datenbank angelegt werden, die Felder sollen aus diesem Array angelegt werden:

PHP:
$sqlCreate = "CREATE TABLE `BMW_temptuev` (";
for($c=0;$c<count($newColoum);$c++)
    {
    $sqlCreate .= "`".$newColoum[$c]."` VARCHAR( 100 ) NOT NULL, ";
    }

$sqlCreate .= "PRIMARY KEY ( `Key Kunde` )) ENGINE = MYISAM;";

Das Script funktioniert auch soweit, wenn ich mir das Ergebnis von $sqlCreate via var_dump oder echo ausgeben lasse kommt folgendes heraus:

Code:
CREATE TABLE `BMW_temptuev` (`Key Kunde` VARCHAR( 100 ) NOT NULL, `Key Fahrzeug` VARCHAR( 100 ) NOT NULL, `Kd. Nr.` VARCHAR( 100 ) NOT NULL, `Matchcode` VARCHAR( 100 ) NOT NULL, `Name` VARCHAR( 100 ) NOT NULL, `Name 2` VARCHAR( 100 ) NOT NULL, `Anrede` VARCHAR( 100 ) NOT NULL, `Anrede (Nutzer)` VARCHAR( 100 ) NOT NULL, `Anredecode` VARCHAR( 100 ) NOT NULL, `Anrede9` VARCHAR( 100 ) NOT NULL, `Titel` VARCHAR( 100 ) NOT NULL, `Tel. gesch.` VARCHAR( 100 ) NOT NULL, `Telefax` VARCHAR( 100 ) NOT NULL, `PLZ` VARCHAR( 100 ) NOT NULL, `Ort` VARCHAR( 100 ) NOT NULL, `Adresse` VARCHAR( 100 ) NOT NULL, `Strasse` VARCHAR( 100 ) NOT NULL, `Bundesland` VARCHAR( 100 ) NOT NULL, `E-Mail` VARCHAR( 100 ) NOT NULL, `Kreditkennzeichen` VARCHAR( 100 ) NOT NULL, `Notiz zum Kunden` VARCHAR( 100 ) NOT NULL, `Kundenname` VARCHAR( 100 ) NOT NULL, `Vorname/Anspr.` VARCHAR( 100 ) NOT NULL, `Ansprechpartner (Nutzer)` VARCHAR( 100 ) NOT NULL, `Fzg Typ` VARCHAR( 100 ) NOT NULL, `Fabrikat` VARCHAR( 100 ) NOT NULL, `Modell` VARCHAR( 100 ) NOT NULL, `Modell Nr.` VARCHAR( 100 ) NOT NULL, `amtl. Kennz.` VARCHAR( 100 ) NOT NULL, `Fahrzeugidentnr.` VARCHAR( 100 ) NOT NULL, `Motornummer` VARCHAR( 100 ) NOT NULL, `Erstzulassung` VARCHAR( 100 ) NOT NULL, `AU` VARCHAR( 100 ) NOT NULL, `HU` VARCHAR( 100 ) NOT NULL, `Batterieprüfdatum` VARCHAR( 100 ) NOT NULL, `Tel. Privat` VARCHAR( 100 ) NOT NULL, `Tel. Mobil` VARCHAR( 100 ) NOT NULL, `KM-Stand` VARCHAR( 100 ) NOT NULL, `Key Verkäufer` VARCHAR( 100 ) NOT NULL, `Verkäufer Nr.` VARCHAR( 100 ) NOT NULL, `Verkäufer` VARCHAR( 100 ) NOT NULL, `Anzeige im Welcome-Terminal` VARCHAR( 100 ) NOT NULL, `Anzeige im Aftersales Marketing` VARCHAR( 100 ) NOT NULL, `Motortyp` VARCHAR( 100 ) NOT NULL, `Farbcode` VARCHAR( 100 ) NOT NULL, `Polstercode` VARCHAR( 100 ) NOT NULL, `Leittyp` VARCHAR( 100 ) NOT NULL, `Pseudotyp` VARCHAR( 100 ) NOT NULL, `Letzter Servicebesuch` VARCHAR( 100 ) NOT NULL, `Finanzierungsart` VARCHAR( 100 ) NOT NULL, `Finanzierungsablauf` VARCHAR( 100 ) NOT NULL, `Geburtsdatum` VARCHAR( 100 ) NOT NULL, `Kundengruppe` VARCHAR( 100 ) NOT NULL, `Betreuende Firma` VARCHAR( 100 ) NOT NULL, `Betreuende Filiale` VARCHAR( 100 ) NOT NULL, `Weitere Notizen` VARCHAR( 100 ) NOT NULL, `Letzter Kontakt` VARCHAR( 100 ) NOT NULL, `Branche` VARCHAR( 100 ) NOT NULL, `Kreditlimit` VARCHAR( 100 ) NOT NULL, `Kundenmerkmal` VARCHAR( 100 ) NOT NULL, `Fahrer` VARCHAR( 100 ) NOT NULL, `Gültigkeitsdatum Führerschein` VARCHAR( 100 ) NOT NULL, `Berufsgruppe` VARCHAR( 100 ) NOT NULL, `Präferierte Kontaktaufnahme` VARCHAR( 100 ) NOT NULL, `Weitere Telefonnummern` VARCHAR( 100 ) NOT NULL, `Wiederzulassung` VARCHAR( 100 ) NOT NULL, `Garantieverlängerung` VARCHAR( 100 ) NOT NULL, `Getriebekennbuchstabe` VARCHAR( 100 ) NOT NULL, `Servicetyp` VARCHAR( 100 ) NOT NULL, `Produktionsdatum` VARCHAR( 100 ) NOT NULL, `Eigenverkauf` VARCHAR( 100 ) NOT NULL, `Auslieferungsdatum` VARCHAR( 100 ) NOT NULL, `Nächst. Bremsflüssigkeitswechsel` VARCHAR( 100 ) NOT NULL, `Nächster Service (Datum)` VARCHAR( 100 ) NOT NULL, `Nächster Service (km)` VARCHAR( 100 ) NOT NULL, `Nächst. Zahnriemenwechsel (Datum)` VARCHAR( 100 ) NOT NULL, `Nächst. Zahnriemenwechsel (km)` VARCHAR( 100 ) NOT NULL, `Nächster SP Termin` VARCHAR( 100 ) NOT NULL, `Bemerkung` VARCHAR( 100 ) NOT NULL, `Letzter Service Berater (DMS)` VARCHAR( 100 ) NOT NULL, `Modellcode` VARCHAR( 100 ) NOT NULL, `Key Betrieb Kunde` VARCHAR( 100 ) NOT NULL, `ID Betrieb Kunde` VARCHAR( 100 ) NOT NULL, `Firma Betrieb Kunde` VARCHAR( 100 ) NOT NULL, `Key Betrieb Fahrzeug` VARCHAR( 100 ) NOT NULL, `ID Betrieb Fahrzeug` VARCHAR( 100 ) NOT NULL, `Firma Betrieb Fahrzeug` VARCHAR( 100 ) NOT NULL, `Kd. Nr. (externe Systeme)` VARCHAR( 100 ) NOT NULL, PRIMARY KEY ( `Key Kunde` )) ENGINE = MYISAM;

Wenn ich dann zum Schluß mit
PHP:
mysql_query($sqlCreate);
die Tabelle anlegen lassen möchte, passiert nix. Es wird keine Tabelle angelegt. Paste ich das Ergebnis allerdings via SQL in PHPMYADMIN rein, wird die Tabelle schön ordentlich wie gewollt angelegt.

Das gleiche Problem habe ich dann auch, wenn ich die Tabelle befüllen möchte (vorher manuell angelegt). Das Ergebniss passt, ich kann es auch via PHPMYADMIN pasten, aber nicht mittels meinem Script:

PHP:
for($row=1;$row<count($coloum);$row++)
    {
    $sqlInsert[$row] = "INSERT INTO `BMW_temptuev` (";
    for($e=0;$e<count($newColoum);$e++)
        {
        $sqlInsert[$row] .= "`".$newColoum[$e]."`";
        if($e<count($newColoum)-1)
           $sqlInsert[$row] .= ", ";
        }
    $sqlInsert[$row] .= ") VALUES (";
    for($f=0;$f<count($newColoum);$f++)
        {
        $sqlInsert[$row] .= "'".$coloum[$row][$f]."'";
        if($f<count($newColoum)-1)
           $sqlInsert[$row] .= ", ";
        }
    $sqlInsert[$row] .= ")";
    mysql_query($sqlInsert[$row]);
    }


Weiß jemand wo MEIN Denkfehler ist

Danke und Gruß
Loveboat
 
Da ich es nirgendwo bei dir sehe, stelle ich einfach mal die Frage, ob du überhaupt eine Verbindung zur Datenbank aufbaust mit mysql_connect() und mysql_select_db(). Ich hoffe doch, dass du das weißt.
 
Hi,

ja die baue ich auf und die funktioniert auch. Ich habe im selben Script schon SQL-Anweisungen am laufen, welche funktionieren, diese geben mir Inhalte aus anderen Tabellen aus.

Leider kann ich keine neue Tabelle anlegen und befüllen. :-(

Gruß
Loveboat
 
Hi!
Könnte es evtl. sein, dass durch die Sonderzeichen und Umlaute ein Zeichensatz-Problem entsteht, das die Query ungültig werden lässt?
 
Das ist die Frage, aber warum kann ich das Ergebnis dann in PHPMYADMIN pasten und die Tabelle wird angelegt Auch da sind die Sonderzeichen drin.
 
Also ich habe bei mir jetzt mal beide Varianten mit Deinem Ausgabe-Code ausprobiert, und es funktioniert sowohl mit phpmyadmin, als auch mit einer einfachen index.php...
 
Hi,

also ich habe mal versucht den Fehler einzugrenzen und hab auch was gefunden warum das Anlegen der Tabelle scheitert, aber weiß noch nicht genau wie ich es lösen kann.

Also ich lese die erste Zeile aus dem file (CSV mit ; separiert) in ein Array ein.
Mittels "explode(";", $zeile)" wird jeder einzelne Wert in ein Element des Arrays geladen. Dies funktioniert auch soweit.

Entscheidend für das Scheitern ist der letzte Wert, dort ist noch ein nicht sichtbares Zeichen angefügt. Leider weiß ich nicht welches das ist und wie ich es entfernen kann.


CREATE TABLE `BMW_temptuev` (`Key Kunde` VARCHAR( 100 ) NOT NULL , `Key Fahrzeug` VARCHAR( 100 ) NOT NULL , `Kd. Nr.` VARCHAR( 100 ) NOT NULL , `Matchcode` VARCHAR( 100 ) NOT NULL , `Name` VARCHAR( 100 ) NOT NULL , `Name 2` VARCHAR( 100 ) NOT NULL , `Anrede` VARCHAR( 100 ) NOT NULL , `Anrede (Nutzer)` VARCHAR( 100 ) NOT NULL , `Anredecode` VARCHAR( 100 ) NOT NULL , `Anrede` VARCHAR( 100 ) NOT NULL , `Titel` VARCHAR( 100 ) NOT NULL , `Tel. gesch.` VARCHAR( 100 ) NOT NULL , `Telefax` VARCHAR( 100 ) NOT NULL , `PLZ` VARCHAR( 100 ) NOT NULL , `Ort` VARCHAR( 100 ) NOT NULL , `Adresse` VARCHAR( 100 ) NOT NULL , `Strasse` VARCHAR( 100 ) NOT NULL , `Bundesland` VARCHAR( 100 ) NOT NULL , `E-Mail` VARCHAR( 100 ) NOT NULL , `Kreditkennzeichen` VARCHAR( 100 ) NOT NULL , `Notiz zum Kunden` VARCHAR( 100 ) NOT NULL , `Kundenname` VARCHAR( 100 ) NOT NULL , `Vorname/Anspr.` VARCHAR( 100 ) NOT NULL , `Ansprechpartner (Nutzer)` VARCHAR( 100 ) NOT NULL , `Fzg Typ` VARCHAR( 100 ) NOT NULL , `Fabrikat` VARCHAR( 100 ) NOT NULL , `Modell` VARCHAR( 100 ) NOT NULL , `Modell Nr.` VARCHAR( 100 ) NOT NULL , `amtl. Kennz.` VARCHAR( 100 ) NOT NULL , `Fahrzeugidentnr.` VARCHAR( 100 ) NOT NULL , `Motornummer` VARCHAR( 100 ) NOT NULL , `Erstzulassung` VARCHAR( 100 ) NOT NULL , `AU` VARCHAR( 100 ) NOT NULL , `HU` VARCHAR( 100 ) NOT NULL , `Batterieprüfdatum` VARCHAR( 100 ) NOT NULL , `Tel. Privat` VARCHAR( 100 ) NOT NULL , `Tel. Mobil` VARCHAR( 100 ) NOT NULL , `KM-Stand` VARCHAR( 100 ) NOT NULL , `Key Verkäufer` VARCHAR( 100 ) NOT NULL , `Verkäufer Nr.` VARCHAR( 100 ) NOT NULL , `Verkäufer` VARCHAR( 100 ) NOT NULL , `Anzeige im Welcome-Terminal` VARCHAR( 100 ) NOT NULL , `Anzeige im Aftersales Marketing` VARCHAR( 100 ) NOT NULL , `Motortyp` VARCHAR( 100 ) NOT NULL , `Farbcode` VARCHAR( 100 ) NOT NULL , `Polstercode` VARCHAR( 100 ) NOT NULL , `Leittyp` VARCHAR( 100 ) NOT NULL , `Pseudotyp` VARCHAR( 100 ) NOT NULL , `Letzter Servicebesuch` VARCHAR( 100 ) NOT NULL , `Finanzierungsart` VARCHAR( 100 ) NOT NULL , `Finanzierungsablauf` VARCHAR( 100 ) NOT NULL , `Geburtsdatum` VARCHAR( 100 ) NOT NULL , `Kundengruppe` VARCHAR( 100 ) NOT NULL , `Betreuende Firma` VARCHAR( 100 ) NOT NULL , `Betreuende Filiale` VARCHAR( 100 ) NOT NULL , `Weitere Notizen` VARCHAR( 100 ) NOT NULL , `Letzter Kontakt` VARCHAR( 100 ) NOT NULL , `Branche` VARCHAR( 100 ) NOT NULL , `Kreditlimit` VARCHAR( 100 ) NOT NULL , `Kundenmerkmal` VARCHAR( 100 ) NOT NULL , `Fahrer` VARCHAR( 100 ) NOT NULL , `Gültigkeitsdatum Führerschein` VARCHAR( 100 ) NOT NULL , `Berufsgruppe` VARCHAR( 100 ) NOT NULL , `Präferierte Kontaktaufnahme` VARCHAR( 100 ) NOT NULL , `Weitere Telefonnummern` VARCHAR( 100 ) NOT NULL , `Wiederzulassung` VARCHAR( 100 ) NOT NULL , `Garantieverlängerung` VARCHAR( 100 ) NOT NULL , `Getriebekennbuchstabe` VARCHAR( 100 ) NOT NULL , `Servicetyp` VARCHAR( 100 ) NOT NULL , `Produktionsdatum` VARCHAR( 100 ) NOT NULL , `Eigenverkauf` VARCHAR( 100 ) NOT NULL , `Auslieferungsdatum` VARCHAR( 100 ) NOT NULL , `Nächst. Bremsflüssigkeitswechsel` VARCHAR( 100 ) NOT NULL , `Nächster Service (Datum)` VARCHAR( 100 ) NOT NULL , `Nächster Service (km)` VARCHAR( 100 ) NOT NULL , `Nächst. Zahnriemenwechsel (Datum)` VARCHAR( 100 ) NOT NULL , `Nächst. Zahnriemenwechsel (km)` VARCHAR( 100 ) NOT NULL , `Nächster SP Termin` VARCHAR( 100 ) NOT NULL , `Bemerkung` VARCHAR( 100 ) NOT NULL , `Letzter Service Berater (DMS)` VARCHAR( 100 ) NOT NULL , `Modellcode` VARCHAR( 100 ) NOT NULL , `Key Betrieb Kunde` VARCHAR( 100 ) NOT NULL , `ID Betrieb Kunde` VARCHAR( 100 ) NOT NULL , `Firma Betrieb Kunde` VARCHAR( 100 ) NOT NULL , `Key Betrieb Fahrzeug` VARCHAR( 100 ) NOT NULL , `ID Betrieb Fahrzeug` VARCHAR( 100 ) NOT NULL , `Firma Betrieb Fahrzeug` VARCHAR( 100 ) NOT NULL , `Kd. Nr. (externe Systeme) ` VARCHAR( 100 ) NOT NULL , PRIMARY KEY ( `Key Kunde` ) ) ENGINE = MYISAM ;


Hoffe jemand kann mir sagen wie ich dieses nichtsichtbare Zeichen entfernen kann.

Danke und Gruß
Loveboat
 
okay, danke den "Mist" hab ich gebraucht und nicht gefunden, kannte das auch nicht, wollte es schon umständlich mit irgendwelchen regex machen :-(

Jetzt geht es.

Danke Euch
 
Zurück