SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 11.05.2005, 17:37:13
broadcastbenny broadcastbenny ist offline
Anfänger
 
Registriert seit: May 2005
Beiträge: 11
TXT(speziell) Datei in MySQL übernehmen

Hallo zusammen,

beschäftige mich seit neustem mit mysql und der möglichkeit Datensätze aus TXT Dateien zu importieren. Hab bisher auch herausgefunden wie es mit gut strukturierten txt-Dateien funktioniert.

Nun hab ich aber ein Problem mit folgender Strukturierung in einer TXT-Datei:

Card Name: Waxmane Baku
Cost: 2W
Type: Creature — Spirit
Pow/Tgh: 2/2
Rules Text: Whenever you play a Spirit or Arcane spell, you may
put a ki counter on Waxmane Baku.

1, Remove X ki counters from Waxmane Baku: Tap X target
creatures.
Set/Rarity: Betrayers of Kamigawa common

(zu finden z.B. unter http://gatherer.wizards.com/default....name&x=49&y=14)


Probleme bereiten mir vor allem der Rules Text da er sich über mehrere Zeilen erstreckt. Dabei kann er auch noch an der Anzahl der Zeilen variieren.

Hat jemand eine Idee wie ich solche Datensätze in MySql einpflegen kann?

Bin für jede Antwort dankbar!
broadcastbenny

Geändert von broadcastbenny (11.05.2005 um 17:39:35 Uhr)
Mit Zitat antworten
  #2  
Alt 11.05.2005, 18:16:49
Gweilo Gweilo ist offline
Member
 
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
AW: TXT(speziell) Datei in MySQL übernehmen

War mal vor genau dem selben problem ;) (-> magictraders.ch hab ich programmiert)

Die Bezeichnungen wie " Card Name: " sind ja konstant, danach kannst du suchen. Erst mal würde ich den ganzen text danach exploden, dann hast du die Einträge schon mal handlich in einem array.

Danach kannst du jedes Array der Reihenfolge des Auftretens der einzelnen Bezeichnungen durchsuchen, und den rest jeweils aufsplitten.

Zum Beispiel suchst du nach "Cost", also strpos($array[$i]," Cost: "); wenn eine -1 zurückgegeben wird, weisst du dass dieses Feld nicht vorkommt und kannst das nächste überprüfen. Somit kannst du den String nach und nach zerstückeln.

Da mein PHP ein bisschen eingerostet ist, könnte es sein, dass die befehle nicht genau so heissen, wie ich sie hinschrieb...

edit: bevor du fragst, nein, meinen Source code zu posten brint nichts, da ich ein export aus MWS benutzt habe zum import und nicht die Daten aus dem gatherer.

Geändert von Gweilo (11.05.2005 um 18:19:21 Uhr)
Mit Zitat antworten
  #3  
Alt 11.05.2005, 21:38:15
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: TXT(speziell) Datei in MySQL übernehmen

Da sich bestimmte Schlüsselworte ja immer wiederholen, könntest du es wohl recht gut mit preg_match_all() probieren. Falls du noch nie mit regulären Ausdrücken gearbeitet hast, empfehle ich dir das entsprechende Kapitel des Tutorials: http://tut.php-q.net/regex.html
Mit Zitat antworten
  #4  
Alt 11.05.2005, 21:57:59
Gweilo Gweilo ist offline
Member
 
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
AW: TXT(speziell) Datei in MySQL übernehmen

Das Problem ist, dass gewisse Schlüsselwörter nicht immer vorkommen müssen, deshalb geht das direkte matchen nicht so leicht.

edit: oh, stimmt gar nicht. Dann gebe ich natürlich xabbuh recht, dann geht es mit preg_match() um einiges einfacher

Geändert von Gweilo (11.05.2005 um 22:02:02 Uhr)
Mit Zitat antworten
  #5  
Alt 11.05.2005, 22:19:41
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: TXT(speziell) Datei in MySQL übernehmen

Zitat:
Zitat von Gweilo
edit: oh, stimmt gar nicht. Dann gebe ich natürlich xabbuh recht, dann geht es mit preg_match() um einiges einfacher
Auch wenn bestimmte Schlüsselwörter nicht jedes Mal vorkommen, sollte das kein Problem sein. Dafür gibt es ja zum Beispiel das Fragezeichen (= {0, 1}).
Mit Zitat antworten
  #6  
Alt 19.05.2005, 21:05:39
broadcastbenny broadcastbenny ist offline
Anfänger
 
Registriert seit: May 2005
Beiträge: 11
AW: TXT(speziell) Datei in MySQL übernehmen

Danke an alle für die schnelle Hilfe.
Werd mal schauen was ich daraus machen kann.
Wenn ich ein Ergebnis habe werde ich es auch posten, kann aber dauern weil ich nicht ganz soviel Zeit habe.

Danke
Mit Zitat antworten
  #7  
Alt 31.05.2005, 13:24:42
broadcastbenny broadcastbenny ist offline
Anfänger
 
Registriert seit: May 2005
Beiträge: 11
AW: TXT(speziell) Datei in MySQL übernehmen

So endlich mal Zeit ein Ergebnis zu posten:

PHP-Code:
<?php
    define
('MYSQL_HOST',     'hostname');
    
define('MYSQL_USER',     'benutzername');

    
define('MYSQL_PASS',     'passwort');

    
define('MYSQL_DATABASE''datenbankname');

    
$db_link mysql_connect(MYSQL_HOSTMYSQL_USERMYSQL_PASS);
    
$db_select=mysql_select_db(MYSQL_DATABASE$db_link);

$filename="test.txt";//Testdatei
$import=fopen($filename,"r");

$read fread ($import,filesize($filename)); 

preg_match_all("#(Card Name:)(.*)(Cost:)(.*)(Type:)(.*)(Pow/Tgh:)(.*)(Rules Text:)(.*)(Set/Rarity:)(.*)(\s{2,})#sU",$read$card);


echo 
count($card[0]);

for(
$i=0$i<=count($card[0]); $i++){
$sql "INSERT INTO `magickarten` ( `cardnameeng` , `cost` , `type` , `pow` , `rules` , `set` , `cardnamede` , `image` , `rarity` , `id` ) 

VALUES (

'"
.$card[2][$i]."', '".$card[4][$i]."', '".$card[6][$i]."', '".$card[8][$i]."', '".$card[10][$i]."', '".$card[12][$i]."', '', '', '', ''

);"
;
echo 
$card[2][$i];
echo 
"<br>";
//$result=mysql_query($sql, $db_link) or die (mysql_error());
};
fclose($import);
?>
Soweit so gut, es funktioniert, nur sollte man wissen welche Dateigrössen der Webserver händeln kann. Bei einer Datei mit ca. 7.000 Datensätzen auf die obere Art und Weise formatiert, gibt mein Webhoster auf und zwar mit der Meldung:

Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 4790109 bytes) in /home/www/web104/html/magic/import.php on line 13

Also bleibt mir nix anderes als die Datei zu stückeln, werds überleben.

Wers gerne Testen möchte hier der Inhalt der Test.txt
PHP-Code:
  Card NameAbsorb

       Cost
WUU

       Type
Instant 

    Pow
/Tgh

 
Rules TextCounter target spellYou gain 3 life

 
Set/RarityInvasion rare 





  Card Name
Abu Ja&#8217;far

       
CostW

       Type
Creature &#8212; Leper

    
Pow/Tgh0/1

 Rules Text
When Abu Ja&#8217;far is put into a graveyard from play, 

             
destroy all creatures blocking or blocked by itThey 

             can
&#8217;t be regenerated. 

 
Set/RarityChronicles uncommonArabian Nights uncommon 





  Card Name
Abuna&#8217;s Chant

       
Cost3W

       Type
Instant 

    Pow
/Tgh

 
Rules TextChoose one &#8212; You gain 5 life; or prevent the next 5 

             
damage that would be dealt to target creature this 

             turn


             
Entwine 2 (Choose both if you pay the entwine cost.) 

 
Set/RarityFifth Dawn common 
Wer noch einen Tipp hat wie man die Speichergrösse klein halten kann, schreibt einfach hier herein.

Bis dann

Geändert von broadcastbenny (01.06.2005 um 21:47:15 Uhr)
Mit Zitat antworten
  #8  
Alt 03.06.2005, 16:22:52
Gweilo Gweilo ist offline
Member
 
Registriert seit: Oct 2002
Ort: ch
Beiträge: 822
AW: TXT(speziell) Datei in MySQL übernehmen

hast du probiert das file zeilenweise auszulesen anstatt es direkt in eine variable zu speichern?
Mit Zitat antworten
  #9  
Alt 05.06.2005, 22:58:21
broadcastbenny broadcastbenny ist offline
Anfänger
 
Registriert seit: May 2005
Beiträge: 11
AW: TXT(speziell) Datei in MySQL übernehmen

Zeilenweises auslesen funktioniert meiner Meinung nach nicht, da zu einem bestimmten Datenfeld (z.B. Rules Text) mehrere Zeilen gehören können. Diese würdest du ja durch zeilenweises Auslesen stückeln.
Mit Zitat antworten
  #10  
Alt 05.06.2005, 23:01:52
Benutzerbild von xabbuh
xabbuh xabbuh ist offline
SELFPHP Guru
 
Registriert seit: May 2003
Beiträge: 7.187
AW: TXT(speziell) Datei in MySQL übernehmen

Zitat:
Zitat von broadcastbenny
Zeilenweises auslesen funktioniert meiner Meinung nach nicht, da zu einem bestimmten Datenfeld (z.B. Rules Text) mehrere Zeilen gehören können. Diese würdest du ja durch zeilenweises Auslesen stückeln.
Du könntest dann natürlich einfach überprüfen, ob die Zeile mit Card Name anfängt. Wenn dies der Fall ist, fängt einer neuer Datensatz an, ansonsten gehört die Zeile noch zum vorherigen Datensatz.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler in Script das Inhalt einer .txt Datei (HTML Sourcecode) in Datei schreiben sol RookieXL2 PHP für Fortgeschrittene und Experten 2 08.06.2007 23:58:33
datei auslesen und in mysql speichern kacel PHP für Fortgeschrittene und Experten 7 31.01.2005 09:57:49
Variablen aus datei in Mysql datenbank schreiben saidbuchari PHP Grundlagen 0 04.03.2004 13:12:23
RDF (RSS) Datei in MySQL exportieren pfuchs PHP Grundlagen 2 15.10.2003 19:05:37
upload, datei-infos in mysql übernehmen gina PHP Grundlagen 5 17.12.2002 11:26:26


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:59:23 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt