Wären Sie so freundlich und würden mir die Dateien zur Verfügung stellen, damit ich den Import testen kann?
MYSQL Luther Bibel
Collapse
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.
Comment
-
Hallo,
hier nochmal die geänderten Kapitel. Vielen Dank!
http://www.70x7media.de/all.zip
LG,
mokelmann
Comment
-
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.Last edited by reallife; 24-02-2008, 11:29.
Comment
-
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
Comment
-
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);
Last edited by reallife; 26-02-2008, 16:13.
Comment
Comment