Simon P.: Innerhalb von php-while-schleife datensatz mit javascritp

Beitrag lesen

Hallo Felix,

Der Fehlercode von apache/logs/error.log sieht dann wie folgt aus:

[Mon Jul 28 13:48:27.098617 2014] [include:error] [pid 5000:tid 1664] [client 127.0.0.1:51060] unable to include potential exec "include/top.html" in parsed file D:/HTML__/Xampp/apache/error/HTTP_NOT_FOUND.html.var, content type not text/, referer: http://localhost/homepage/index.php?p=home [Mon Jul 28 13:48:27.099617 2014] [include:error] [pid 5000:tid 1664] [client 127.0.0.1:51060] unable to include potential exec "include/bottom.html" in parsed file D:/HTML__/Xampp/apache/error/HTTP_NOT_FOUND.html.var, content type not text/, referer: http://localhost/homepage/index.php?p=home

... Das mag eine Folge Deiner Server-Konfiguration sein, die HTML-Dokumente als zu parsende PHP-Scripte ermöglicht.

Das habe ich sofort nachgeschaut, und habe meine alte Veränderung rückgängig gemacht, weil ich sie ja mit deinem System nicht mehr benötige lächel.

Ich habe in der Apache Config unter dem Punkt: <IfModule mime_module>

folgendes hinzugefügt gehabt: AddType application/x-httpd-php php php4 php3 html htm

Anscheinend gibt es das Problem schon öfters. Ich werde mal schauen ob ich eine Fehlerquelle finde, es kann ja nicht sein, dass ich kein Includes mehr benutzen kann -.-; .

Dein Vorschlag mit dem generellen Datum funktioniert leider nicht,

Okay, wiedermal habe ich mich schlecht ausgedrückt... ... undzwar ging es um diesen Code-Vorschlag:


<?php

// list of pages
$pages = array(
    'contact' => 'contact.html',
    'home'    => 'home.html'
    //... weitere Seiten?
);

$p = 'home'; // default page

// specific page requested?
if (array_key_exists('p', $_GET)
    // do we have such a page?
    && array_key_exists($_GET['p'], $pages)
) {
    $p = $_GET['p'];
}

// load page contents
$contents = file_get_contents('./pages/'.$pages[$p]);

// get template
$tmp = file_get_contents('./pages/template.html');

// get news
$news = file_get_contents('./pages/news.html');

// put it all together
$tmp = str_replace(
    array('{$contents}', '{$news}', '{$mtime}'),
    array(
        $contents,
        $news,
        date(
            'd.m.Y, H:i:s',
            filemtime('./pages/'.$pages[$p]
        )
    ),
    $tmp
);

// include additional scripts
include 'serien.php'; // for ?p=serien

// send everything to the browser
echo $tmp;

?>

... Ich habe nach einer Möglichkeit gesucht, Mehrere Inhalte wegen meiner Subnavi an unterschiedlichen Stellen ein und auszuschneiden. So kam ich auf dieses konstruckt ->>

$line = "<!-- HEADaf"; //Die Startposition in der HTML

> > $anf = strpos($head, $line); //Anfangsposition in dem jeweiligen String
> >     $head = substr($head, $anf); //Vom Anfang wird nun ausgegben
> > $end = strpos($head, "<!-- HEADe -->"); //Endposition wird angegebn
> >     $head = substr($head, 0, $end); //Dort hört es auf, auszugeben
> > 
> > $line2 = "<!-- NAVaf";
> > $anf2 = strpos($nav, $line2);
> >     $nav = substr($nav, $anf2);
> > $end2 = strpos($nav, "<!-- NAVe -->");
> >     $nav = substr($nav, 0, $end2);
> > 
> > $line3 = "<!-- MAINaf";
> > $anf3 = strpos($contents, $line3);
> >     $contents = substr($contents, $anf3);
> > $end3 = strpos($contents, "<!-- MAINe -->");
> >     $contents = substr($contents, 0, $end3);

Ich als Anfänger möchte natürlich irgendwie auch verstehen, was ich mache, damit ich einerseits neues dazulerne und anderseits das hinbekomme, was ich gerne hinbekommen möchte. Ich weiß natürlich nicht, ob das so eine schöne Lösung ist, aber ich verstehe was passiert. Die eingebundene HTML wird in 3 Variablen eingebunden:


if (array_key_exists("p", $_GET) // Gibt es in der Superglobalen Variable $_GET einen Schlüssel p ?
    && array_key_exists($_GET["p"], $pages) // Und gibt es in dem Schlüssel eine Seite aus dem Array $pages ?
) {
    $contents = file_get_contents('./pages/'.$pages[$_GET["p"]]);
    $nav = file_get_contents('./pages/'.$pages[$_GET["p"]]);
    $head = file_get_contents('./pages/'.$pages[$_GET["p"]]);
}	// Wenn beides "True", lade die gewünschte Seite in die Variable $contents etc.

... Jetzt wird mit dem Code von oben jedes dieser Elemente "beschnitten". Bei $head wird z.B. von oben angefangen und der Rest unten abgeschnitten. Kommentare habe benutzt, damit man 1. weiß wo es anfängt und aufhört mit der "Beschneidung" und 2. Damit im Browser nichts gesehen wird. Hinter das komplette Prinzip bin ich noch nicht gekommen, warum der mir hier:


$line = "<!-- HEADaf"; //Die Startposition in der HTML
$anf = strpos($head, $line); //Anfangsposition in dem jeweiligen String
    $head = substr($head, $anf); //Vom Anfang wird nun ausgegben
$end = strpos($head, "<!-- HEADe -->"); //Endposition wird angegebn
    $head = substr($head, 0, $end); //Dort hört es auf, auszugeben

... bei $line den "Anfang" also <!-- HEADaf mit ausgeben lässt (was zur Folge hatte, dass wenn ich nicht <!-- mit angegeben hatte, er mir den Teil HEADaf mit oben in meine <section> geschrieben hatte). Bei $end allerdings gibt er mir <!-- HEADe --> nicht aus.

So wie ich gelesen habe, hast du anscheinend schon gewusst, was ich damit mache. Kann ich das so lassen oder kann das zu Fehlern führen? Wie gesagt, die Website hält sich in Maßen, sodass ich denke, dass ich nicht den Überblick verlieren werde. Was meintest du mit "regulären Ausdrücken"? Zum Ein- und Ausschneiden hatte ich nur noch als andere Variante eine Funktion namens preg_match, die ich aber mir nicht weiter angeguckt habe, weil ich sie aus anhieb nicht verstanden habe. Darum habe ich erstmal diese Methode genommen.

Es funktioniert so (noch nicht perfekt verstanden). Aber wenn ich dein generellen Vorschlag annehme, dann funktioniert es nicht mehr.

Wiebitte? Bratwurst mit Abfahrt?

Entschuldige bitte dieses "Beziehen auf das was ich denke, dass du evtl. verstehst, was ich meine" (oder so ähnlich) (^_-) . Damit wollte ich sagen, dass meine Methode mit $line und $end usw., was ich dir obendrüber geschrieben habe, nicht bei deiner neuen Methode funktioniert um generell überall das Datum einzufügen. (der lange Quelltext, ganz oben in meinem Post).

Das könnte damit zu tun haben, dass Du Funktionen benutzt, deren Rückgabewert Du nicht in einer Variablen speicherst, sodass deren Rückgabewert sofort an den Browser gesendet werden (siehe weiter oben).

Ja, das dachte ich mir schon und habe auch schon Versuche angestellt... aber es kommt nichts bei raus. Das hier möchte ich in genau einer HTML Datei einfügen:


<?php
    $db = mysqli_connect("localhost", "Benutzer", "Passwort", "homepage");
    if(!$db){
    exit("Verbindungsfehler: ".mysqli_connect_error());
    }
    $db->query("SET NAMES 'utf8'");
?>
<?php
if (array_key_exists('p', $_GET) && 'p' == 'animes_geschaut') {

    $ergebnisAnfang = 0;
    $result = mysqli_query($db, "SELECT Name_Japanisch, ID, Name_Roomaji, Genre, Datum, Bewertung, Typ, Episoden FROM animes");
    while($row = mysqli_fetch_object($result))
    {
        $data .= sprintf(
        '<li><h2>' ."$row->ID. $row->Name_Roomaji". '<a href="#' ."$row->ID".'">Details</a></h2>
        <dl id="' ."$row->ID". '">
        <dt>Name Japanisch:</dt>
        <dd>' ."$row->Name_Japanisch". '</dd>
        <dt>Genre:</dt>
        <dd>' ."$row->Genre". '</dd>
        <dt>Geschaut am:</dt>
        <dd>' ."$row->Datum". '</dd>
        <dt>Bewertung:</dt>
        <dd>' ."$row->Bewertung". '</dd>
        <dt>Typ:</dt>
        <dd>' ."$row->Typ". '</dd>
        <dt>Episoden:</dt>
        <dd>' ."$row->Episoden". '</dd>
        <dd><a href="#c1" id="c1">x</a></dd>
        </dl>
        </li>');
        if($row->Name_Roomaji == "Das Verschwinden der Haruhi Suzumiya")
        {
            $ergebnisNeu = 161;
        }
        else if($row->Name_Roomaji == "Saishuuheiki Kanojo: Another Love Song")
        {
            $ergbnisNeu = $row->Episoden*28;
        }
        else if($row->Name_Roomaji == "Koe de Oshigoto! The Animation")
        {
            $ergbnisNeu = $row->Episoden*28;
        }
        else if($row->Name_Roomaji == "Boku wa Tomodachi ga Sukunai: Bishoujo ga Zannen na Nioi")
        {
            $ergebnisNeu = $row->Episoden*11;
        }
        else if($row->Name_Roomaji == "Mangaka-san to Assistant-san to The Animation")
        {
            $ergebnisNeu = $row->Episoden*13;
        }
        else if($row->Name_Roomaji == "Perfect Blue")
        {
            $ergebnisNeu = 77;
        }
        else if($row->Name_Roomaji == "Chihiros Reise ins Zauberland")
        {
            $ergebnisNeu = 120;
        }
        else if($row->Typ == "Film")
        {
            $ergebnisNeu = 87;
        }
        else
        {
            $ergebnisNeu = $row->Episoden*22;
        }
        $ergebnis = $ergebnisAnfang + $ergebnisNeu;
        $ergebnisAnfang = $ergebnis;
    }

        // $animes_geschaut = file_get_contents('./pages/animes_geschaut.html');

        $ergebnis = number_format($ergebnisAnfang/60);

        $tmp = str_replace('$database', $data, $tmp);
        $tmp = str_replace('$ergebnis_time', $ergebnis, $tmp);
        // $ergebnis_time = printf('<p id="time">Ich habe <span>'."$ergebnis".' Stunden</span> mit Animegucken verbracht.</p>');

        // $animes_geschaut = str_replace('$animes_geschaut_datenbank', $data, $animes_geschaut);
        // $animes_geschaut = str_replace('$ergebnis_time', $ergebnis_time, $animes_geschaut);
}
    ?>

Wie du siehst, ist in diesem Script schon ein Versucht enthalten, um die Daten in meine HTML-Seite zu includieren. Wenn ich dieses script jetzt mit include in meine index.php einfüge... dann passiert ... nichts. Im Browser zeigt er mir einfach nur $animes_geschaut_datenbank und $ergebnis_time an. Also warscheinlich (zumindest hoffe ich das) das gleiche Serverproblem. Die vielen IF-Anweisungen sind wiedermal ein (wie ich denke) komplizierter Weg um auf das zu kommen, was ich möchte... nämlich meine errechnete Zeit, die ich mit Anime gucken verbrachte habe. Da aber manche Datensätze in meiner Datenbank Filme sind oder manche Episoden unterschiedliche Dauern haben, musste ich diese Ausnahmen irgendwie unterkriegen, damit der mir ein genaues Ergebnis berechnet. Vielleicht nicht schön... aber selten.

man müsste ja im Prinzip auch includes in der index.php in eine Variable schreiben können und die dann abrufen können oder? Aber es funktioniert nicht. [...] $mtime = include("date.php");

Zuerst initialisierst Du eine Variable, dann includierst Du ein Script, das diese Variable mit einem anderen Wert überschreiben soll:

$mtime = time(); // now

> 
> include 'mtime.php'; // sets $mtime e.g. $mtime = filemtime('file.php');

Damit erreichst Du, dass das hauptsächliche Script (hier index.php) "ungestört" weiterlaufen kann, auch wenn mtime.php die gewünschte Variable überhaupt nicht kennt und dafür eine andere definiert.

Vielen Dank, so werde ich das machen.

Hab ich wiedermal was übersehen?

Du versuchst technische Lösungen für Probleme zu finden, ohne die Natur der Probleme aus PHP-Sicht genau verstanden zu haben. Das ist für Anfänger typisch. Aus genau diesen Fehlern lernt man ja die Denkweise der Programmiersprache kennen und kann daran wachsen.

Leider bin ich nicht der Typ, der sich theoretisch alles durchlesen kann und dann sofort auf seine Aufgabenstellung übertragen kann, weswegen ich manchmal komplizierte Wege und schwierigere Wege gehe um an mein Ziel zu gelangen... diese Wege aber auch nachvollziehen kann. Die Denkweise des programmierens und des Server- und Clientseitigen ist mir dadurch auch näher gekommen.

Liebe Grüße, Simon P.

(Ja ich bin ein großer Anime-Fan (^_^), komme aber momentan nicht zum gucken, weil mich das oben beschriebene Problem wurmt und ich viel Freude an der Erstellung meiner Website habe.)

0 78

Innerhalb von php-while-schleife datensatz mit javascritp

Simon P.
  • datenbank
  1. 0
    Felix Riesterer
    1. 0
      Simon P.
      1. 0
        Simon P.
        1. 0
          Felix Riesterer
          1. 0
            Simon P.
            1. 0
              Felix Riesterer
              1. 0
                Simon P.
                1. 0
                  Felix Riesterer
                  1. 0
                    Simon P.
                    1. 0
                      Felix Riesterer
                      1. 0
                        Simon P.
                        1. 0
                          Felix Riesterer
                          1. 0
                            Simon P.
                            1. 0
                              Simon P.
                              1. 0
                                Felix Riesterer
                                1. 0
                                  Simon P.
                                  1. 0
                                    Felix Riesterer
                                    1. 0
                                      Simon P.
                                      1. 0
                                        Simon P.
                                        1. 0
                                          Auge
                                          1. 0
                                            Simon P.
                                            1. 0
                                              Felix Riesterer
                                              1. 0
                                                Simon P.
                                            2. 0
                                              Martin_Online
                                              1. 0
                                                Felix Riesterer
                                                1. 0
                                                  Martin_Online
                                                  1. 0
                                                    M.
                                                    1. 0
                                                      Simon P.
                                            3. 0
                                              M.
                                        2. 0
                                          Felix Riesterer
                                          1. 0
                                            Simon P.
                                            1. 0
                                              Felix Riesterer
                                              1. 0
                                                Simon P.
                                                1. 0
                                                  Felix Riesterer
                                                  1. 0
                                                    Simon P.
                                                    1. 0
                                                      Simon P.
                                                    2. 0
                                                      Felix Riesterer
                                                      1. 0
                                                        Simon P.
                                                        1. 0
                                                          Felix Riesterer
                                                          1. 0
                                                            Simon P.
                                                            1. 0
                                                              Felix Riesterer
                                                              1. 0
                                                                Simon P.
                                                                1. 0
                                                                  Simon P.
                                                                  1. 0
                                                                    Felix Riesterer
                                                                    1. 0
                                                                      Simon P.
                                                                      1. 0
                                                                        Simon P.
                                                                        1. 0

                                                                          HTML5-Semantik

                                                                          Felix Riesterer
                                                                          • html
                                                                          1. 0
                                                                            Simon P.
                                                                            1. 0
                                                                              Felix Riesterer
                                                                              1. 0
                                                                                Simon P.
                                                                                1. 0
                                                                                  Felix Riesterer
                                                                                  1. 0
                                                                                    Simon P.
                                                                                    1. 0
                                                                                      Felix Riesterer
                                                                                      1. 0
                                                                                        Simon P.
                                                                                        1. 0
                                                                                          Simon P.
                2. 0
                  Simon P.
                  1. 1
                    Felix Riesterer
                    1. 0
                      Simon P.
                      1. 0
                        M.
                        1. 0
                          Matthias Apsel
                          1. 0
                            M.
                            1. 0
                              molily
                              1. 0
                                M.
                      2. 0
                        Felix Riesterer
                        1. 0
                          Simon P.
                          1. 0

                            Begriff Webseite

                            Tabellenkalk
                            • projektverwaltung
                            1. 0
                              Simon P.
                              1. 0
                                Gunnar Bittersmann
                          2. 0
                            Auge
      2. 0
        Felix Riesterer
        1. 1
          Matthias Apsel
          1. 0
            Felix Riesterer
            1. 0

              Browserverlauf bei seiteninternen Verweisen löschen

              Matthias Apsel
              • selfhtml-wiki
              1. 0
                Felix Riesterer
                1. 0
                  molily
              2. 0
                molily
  2. 0
    ChrisB