MYSQL Luther Bibel

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #31
    Wären Sie so freundlich und würden mir die Dateien zur Verfügung stellen, damit ich den Import testen kann?

    Kommentar


    • #32
      http://www.70x7media.de/all.zip

      Kommentar


      • #33
        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


        • #34
          Werde am WE die Datei korriegieren und Ihnen nochmals zukommen lassen.

          Herzlichen Dank!
          mokelmann

          Kommentar


          • #35
            Bedenken Sie, dass Sie nur die Titel der Bücher eintragen müssen. Das die Kapitel anders benannt sind und die Verse nicht alle die gleiche Syntax haben, ist programmiertechnisch gesehen lösbar.

            Kommentar


            • #36
              Hallo,

              hier nochmal die geänderten Kapitel. Vielen Dank!


              http://www.70x7media.de/all.zip

              LG,
              mokelmann

              Kommentar


              • #37
                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, 11:29.

                Kommentar


                • #38
                  Die Datenbank bleibt nach erfolgreichem einlesen leer ...

                  Woran könnte das liegen? Habe den Ordner angegeben...

                  lg,
                  m

                  Kommentar


                  • #39
                    siehe letzten Beitrag von mir

                    Kommentar


                    • #40
                      Habe diesen Code genommen!

                      Kommentar


                      • #41
                        Ich hab da was geändert und wollte ihn nicht nochmal posten.

                        Kommentar


                        • #42
                          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


                          • #43
                            Freut mich, dass es nun doch geklappt hat.
                            Nur zu, falls Sie einen Fehler entdecken, können Sie den hier gerne posten.
                            Auch Ihnen noch einen schönen Sonntag.

                            Kommentar


                            • #44
                              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


                              • #45
                                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]);

                                Neu:
                                PHP-Code:
                                if( preg_match("~^Das (\\d+)\\. Kapitel~"$strTmp$arrResults) || preg_match("~(\\d+)$~"$strTmp$arrResults) )
                                {
                                    
                                $arrSqlData['#chapter'] = sprintf("%03.0f"$arrResults[1]);
                                    continue;

                                Das hier am Besten auch noch, damit die Leerzeichen am Anfang und am Ende entfernt werden.
                                Alt:
                                PHP-Code:
                                $arrSqlData['#versecontent'] = mysql_real_escape_string($arrResults[2], $intConnection); 
                                Neu:
                                PHP-Code:
                                $arrSqlData['#versecontent'] = mysql_real_escape_string(trim($arrResults[2]), $intConnection); 
                                Zuletzt geändert von reallife; 26.02.2008, 16:13.

                                Kommentar

                                Lädt...
                                X