Wären Sie so freundlich und würden mir die Dateien zur Verfügung stellen, damit ich den Import testen kann?
MYSQL Luther Bibel
Einklappen
X
-
-
Vielen Dank!
Da gibt es nur ein Problem, in den einzelnen txt-Dateien stehen keine Titel zu den Büchern. Wie möchten Sie da verfahren? Sie könnten die Dateien natürlich entsprechend ändern und den Titel ganz oben eintragen. Eine andere Möglichkeit sehe ich leider nicht.
Das mit den Kapiteln und den Versen kann man entsprechend anpassen, einzig die Titel der Bücher stellen ein Problem dar - die fehlen nämlich schlichtweg.
Kommentar
-
Hallo,
hier nochmal die geänderten Kapitel. Vielen Dank!
http://www.70x7media.de/all.zip
LG,
mokelmann
Kommentar
-
Moin,
also ich hab das Skript entsprechend angepasst. Die Lieder.txt würde ich am Besten auch noch einen Titel geben.
PHP-Code:<?
// Verbindung zur Datenbank herstellen
$intConnection = mysql_connect("localhost", "root", "");
mysql_select_db("test", $intConnection);
$strSqlInsertTemplate = "INSERT INTO `BibleTable` "
. "(`Book`, `BookTitle`, `Chapter`, `Verse`, `TextData`) VALUES"
. "('#book', '#bookTitle', '#chapter', '#verse', '#versecontent')";
// Ordner zum Einlesen definieren:
$arrDirectories = array(
"./data"
);
// >>>-------------------------------------------------------------------------------------------
// Ab hier bitte nichts mehr ändern!
echo "<pre>";
$intBookCounter = 0;
foreach( $arrDirectories as $strDirectory )
{
if( !is_dir($strDirectory) )
die('Fehler: "'. $strDirectory .'" ist keine gültige Pfadangabe..');
chdir($strDirectory);
$arrFiles = scandir(".");
foreach( $arrFiles as $strFile )
{
if( preg_match("~^\\.{1,2}$~", $strFile) || substr($strFile, -3) !== 'txt' )
continue;
$intBookCounter++;
$strContent = file_get_contents($strFile);
$arrTmp = preg_split("/([\n|\r]+)/i", $strContent);
$arrContent = array();
foreach( $arrTmp as $strTmp )
{
$strTmp = trim($strTmp);
if( strlen($strTmp) > 0 )
array_push($arrContent, $strTmp);
}
unset($arrTmp, $strContent);
$arrSqlData = array(
'#book' => sprintf("%02.0f", $intBookCounter),
'#bookTitle' => mysql_real_escape_string(array_shift($arrContent), $intConnection),
'#chapter' => '001',
'#verse' => null,
'#versecontent' => null
);
$objChapter = null;
while( sizeof($arrContent) > 0 )
{
$strTmp = trim(array_shift($arrContent));
if( preg_match("~^Das (\\d+)\\. Kapitel~", $strTmp, $arrResults) || preg_match("~(\\d+)$~", $strTmp, $arrResults) )
{
$arrSqlData['#chapter'] = sprintf("%03.0f", $arrResults[1]);
}
if( preg_match("~^(\\d+)\\.?(.*)$~", $strTmp, $arrResults) )
{
$arrSqlData['#verse'] = sprintf("%03.0f", trim($arrResults[1]));
$arrSqlData['#versecontent'] = mysql_real_escape_string($arrResults[2], $intConnection);
$strSql = strtr($strSqlInsertTemplate, $arrSqlData);
mysql_query($strSql, $intConnection) or die(mysql_error());
}
}
}
}
// <<<-------------------------------------------------------------------------------------------
echo "<h1>done..</h1>";EDIT:
Sorry, ich habe nicht darauf geachtet, dass Backslashes vom Forum verschluckt wurden. Ich hab es jetzt entsprechend geändert, kopieren Sie sich den Quellcode erneut und versuchen Sie es noch einmal.Zuletzt geändert von reallife; 24.02.2008, 12:29.
Kommentar
-
Super, Danke. Es hat geklappt. Ich werde diese Woche nochmals alles überprüfen und bei Probleme mich nochmals melden. Ich bin Ihnen sehr dankbar für die Hilfe, und ich schätze Ihr Entgegenkommen wirklich sehr! Einen schönen Sonntag!
mokelmann
Kommentar
-
Hallo,
können Sie mir evtl auch hiermit helfen. Ich will, wenn man auf die einzelnen Links klickt, die Kapitel usw. der Datenbank erscheinen, ohne das ich die Seite reloaden muss. Wäre supernett, wenn Sie mir helfen könnten.
lg,
mokelmann
http://70x7media.de/bild.png
Kommentar
-
Hi,
mir ist ein Fehler beim Import aufgefallen, änder bitte folgende Zeilen im Script.
Alt:PHP-Code:if( preg_match("~^Das (\\d+)\\. Kapitel~", $strTmp, $arrResults) || preg_match("~(\\d+)$~", $strTmp, $arrResults) )
{
$arrSqlData['#chapter'] = sprintf("%03.0f", $arrResults[1]);
}
PHP-Code:if( preg_match("~^Das (\\d+)\\. Kapitel~", $strTmp, $arrResults) || preg_match("~(\\d+)$~", $strTmp, $arrResults) )
{
$arrSqlData['#chapter'] = sprintf("%03.0f", $arrResults[1]);
continue;
}
Alt:PHP-Code:$arrSqlData['#versecontent'] = mysql_real_escape_string($arrResults[2], $intConnection);
PHP-Code:$arrSqlData['#versecontent'] = mysql_real_escape_string(trim($arrResults[2]), $intConnection);
Zuletzt geändert von reallife; 26.02.2008, 17:13.
Kommentar
Kommentar