Zur Navigation

new MyPDO(); umbenennen [2]

11 tobi

Zitat von Jörg
Hast du ein PHP-Tag in der ersten Zeile:

<?php

... und am Ende ggf.:

?>
Jetzt schon ;) Ist mir erst nach Absenden meines Posts eingefallen.

Jetzt habe ich in in beide Dateien ein
//Einbinden von Datenbankzugang
require_once "dbVerbindung.php.inc";
eingebaut. Einzeln funktionieren sie.

In Joomla kommt dann

20.10.2017 11:07

12 Jörg Kruse

Das gleiche gilt dann wohl für (die Funktion oder Klasse) printResult(). Die Stelle, wo printResult() das erste mal deklariert wurde, ist ja in der Fehlermeldung angegeben

Noch eine Bitte:

bei Fehlermeldungen ist es besser, diese zu kopieren und als Text hier einzufügen, statt ein Screenshot einzustellen. Dann muss man diese ggf. für eine Suche nicht abtippen und die Forenseite lädt ohne Bilder auch schneller :) (Siehe auch: Screenshots von Texten?)

20.10.2017 11:22 | geändert: 20.10.2017 11:26

13 tobi

Hab jetzt versucht die eigentliche Datei soweit herunter zu schrauben, dass alles includiert wird:
<?php

//Einbinden von CSS Datei
include "css.php.inc";

//Einbinden von Datenbankzugang
require_once "dbVerbindung.php.inc";


$pdo_3 = new MyPDO();
$sql_3 = "
    SELECT
        id, wochentag, spielzeit, spielklasse, heimmannschaft,
        gastmannschaft, heimergebnis, gastergebnis
    FROM
        spielergebnisse
    WHERE
        heimmannschaft
    NOT LIKE '%spielfrei%'
    AND gastmannschaft NOT LIKE '%spielfrei%'
    AND spielzeit >= CURDATE()
    AND spielzeit < DATE_ADD(CURDATE(), INTERVAL 7 DAY) 
    ORDER BY
        spielzeit
";

//Einbinden von Spiele-Vorschau
require_once "spiele-vorschau.php.inc";  
  

spiele-vorschau.php.inc
<?php

try {
    printResult($pdo_3->query($sql_3)->fetchAll());
} catch (Exception $e) {
    die('Something went wrong...<br />' . $e->getMessage());
}
function printResult($res_3) {
    echo "
        <table class='table_gesamtspielplan'> 
            <tr>
                <td><b>Tag</b></td>
                <td><b>Datum und Uhrzeit</b></td>
                <td><b>Heimmannschaft</b></td>
                <td><b>Gastmannschaft</b></td>
             </tr>
    ";

    foreach ($res_3 as $val) {
        if ($val["spielklasse"] == "Da Vb Kl" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Damen 1";
        }
        if ($val["spielklasse"] == "Da Bez Li" && $val["heimmannschaft"] == "TTC Langensteinbach  II") {
        $val["heimmannschaft"] = "Damen 2";
        }
        if ($val["spielklasse"] == "He Bez Li" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Herren 1";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["heimmannschaft"] == "TTC Langensteinbach  II") {
        $val["heimmannschaft"] = "Herren 2";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["heimmannschaft"] == "TTC Langensteinbach  III") {
        $val["heimmannschaft"] = "Herren 3";
        }
        if ($val["spielklasse"] == "He Kr  Kl A" && $val["heimmannschaft"] == "TTC Langensteinbach  IV") {
        $val["heimmannschaft"] = "Herren 4";
        }
        if ($val["spielklasse"] == "He Kr  Kl B" && $val["heimmannschaft"] == "TTC Langensteinbach  V") {
        $val["heimmannschaft"] = "Herren 5";
        }
        if ($val["spielklasse"] == "He Kr  Kl C" && $val["heimmannschaft"] == "TTC Langensteinbach  VI") {
        $val["heimmannschaft"] = "Herren 6";
        }
        if ($val["spielklasse"] == "Ju Vb Kl" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Jugend 1";
        }
        if ($val["spielklasse"] == "Ju Bez Kl" && $val["heimmannschaft"] == "TTC Langensteinbach  II") {
        $val["heimmannschaft"] = "Jugend 2";
        }
        if ($val["spielklasse"] == "Ju Kr  Kl" && $val["heimmannschaft"] == "TTC Langensteinbach  III") {
        $val["heimmannschaft"] = "Jugend 3";
        }
        if ($val["spielklasse"] == "Sm Kr  Li" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Schüler A";
        }
        if ($val["spielklasse"] == "Sm Kr Kl" && $val["heimmannschaft"] == "TTC Langensteinbach  (SBm)") {
        $val["heimmannschaft"] = "Schüler B";
        }
        if ($val["spielklasse"] == "Da Vb Kl" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Damen 1";
        }
        if ($val["spielklasse"] == "Da Bez Li" && $val["gastmannschaft"] == "TTC Langensteinbach  II") {
        $val["gastmannschaft"] = "Damen 2";
        }
        if ($val["spielklasse"] == "He Bez Li" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Herren 1";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["gastmannschaft"] == "TTC Langensteinbach  II") {
        $val["gastmannschaft"] = "Herren 2";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["gastmannschaft"] == "TTC Langensteinbach  III") {
        $val["gastmannschaft"] = "Herren 3";
        }
        if ($val["spielklasse"] == "He Kr  Kl A" && $val["gastmannschaft"] == "TTC Langensteinbach  IV") {
        $val["gastmannschaft"] = "Herren 4";
        }
        if ($val["spielklasse"] == "He Kr  Kl B" && $val["gastmannschaft"] == "TTC Langensteinbach  V") {
        $val["gastmannschaft"] = "Herren 5";
        }
        if ($val["spielklasse"] == "He Kr  Kl C" && $val["gastmannschaft"] == "TTC Langensteinbach  VI") {
        $val["gastmannschaft"] = "Herren 6";
        }
        if ($val["spielklasse"] == "Ju Vb Kl" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Jugend 1";
        }
        if ($val["spielklasse"] == "Ju Bez Kl" && $val["gastmannschaft"] == "TTC Langensteinbach  II") {
        $val["gastmannschaft"] = "Jugend 2";
        }
        if ($val["spielklasse"] == "Ju Kr  Kl" && $val["gastmannschaft"] == "TTC Langensteinbach  III") {
        $val["gastmannschaft"] = "Jugend 3";
        }
        if ($val["spielklasse"] == "Sm Kr  Li" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Schüler A";
        }
        if ($val["spielklasse"] == "Sm Kr Kl" && $val["gastmannschaft"] == "TTC Langensteinbach  (SBm)") {
        $val["gastmannschaft"] = "Schüler B";
        }
        $date = DateTime::createFromFormat('Y-m-d H:i:s', $val["spielzeit"]);
        $newDate = $date->format('d.m.Y H:i');
        echo "
        <tr>
            <td> {$val["wochentag"]} </td>
            <td> {$newDate} </td>
            <td> {$val["heimmannschaft"]} </td>
            <td> {$val["gastmannschaft"]} </td>
        </tr>
        ";
    }
    echo "</table>";
}
?>

Die Fehlermeldung bleibt aber erhalten

20.10.2017 11:43

14 Jörg Kruse

Der Funktionsaufruf sollte nicht ausgelagert werden:

try {
    printResult($pdo_3->query($sql_3)->fetchAll());
} catch (Exception $e) {
    die('Something went wrong...<br />' . $e->getMessage());
}

Nur die Funktionsdefinition:

function printResult($res_3) {
    ...
}

Die Datei würde ich entsprechend my-functions.php o.ä. nennen.

Die Fehlermeldung bleibt aber erhalten

Ja, weil du die gleiche Funktion an zwei Stellen definierst. Wenn du nicht weißt wo, musst du alle Dateien nach dem String "function printResult" durchsuchen. In PHP kann man eine Funktion nur einmal definieren!

20.10.2017 13:15

15 tobi

Funktionsaufruf ist wieder drin, Funktionsdefinition includiert. Einzelne Seite bleibt weiß. Wenn Sie im Joomla eingebunden ist gibt sehe ich
0 Call to undefine printResult()

23.10.2017 06:28

16 Jörg Kruse

Funktionsdefinition includiert.

Wie genau hast du sie includiert? mit require_once() vor dem Funktionsaufruf?

Edit:

Wortwörtlich heißt die Fehlermeldung vermutlich eher "Call to undefined (method) printResult()"? (in der grünen Box der Joomla-Fehlerseite gibt es rechts unten ein Kopie-Icon, so dass du die Fehlermeldung nicht abtippen musst)

23.10.2017 09:12 | geändert: 23.10.2017 09:23

17 tobi

Korrekt, ich habe sie abgetippt. Da es die grüne Box nicht gab, sondern nur ganz oben im Browsertitel sowie in den Errorlogs zu sehen war.

So sieht das Ganze aus:
<?php

//Einbinden von CSS Datei
include "css.php.inc";
  
//Einbinden von Datenbankzugang
require_once "dbVerbindung.php.inc";

$pdo = new MyPDO();
$sql = "
    SELECT
        id, wochentag, spielzeit, spielklasse, heimmannschaft,
        gastmannschaft, heimergebnis, gastergebnis
    FROM
        spielergebnisse
    WHERE
        heimmannschaft
    NOT LIKE '%spielfrei%'
    AND gastmannschaft NOT LIKE '%spielfrei%'
    AND spielzeit >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
    AND spielzeit < CURDATE()
    ORDER BY
        spielzeit
";

try {
    printResult($pdo->query($sql)->fetchAll());
} catch (Exception $e) {
    die('Something went wrong...<br />' . $e->getMessage());
}
  
//Einbinden von Spiele-Rueckblick
require_once "spiele-rueckblick.php.inc";   

?>

und die spiele-rueckblick.php.inc:
<?php

function printResult($res) {
    echo "
        <table class='table_gesamtspielplan'> 
            <tr>
                <td><b>Tag</b></td>
                <td><b>Datum</b></td>
                <td><b>Heimmannschaft</b></td>
                <td><b>Gastmannschaft</b></td>
                <td align=center><b>H</b></td>
                <td align=center><b>:</b></td>
                <td align=center><b>G</b></td>
             </tr>
    ";

    foreach ($res as $val) {
        if ($val["spielklasse"] == "Da Vb Kl" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Damen 1";
        }
        if ($val["spielklasse"] == "Da Bez Li" && $val["heimmannschaft"] == "TTC Langensteinbach  II") {
        $val["heimmannschaft"] = "Damen 2";
        }
        if ($val["spielklasse"] == "He Bez Li" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Herren 1";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["heimmannschaft"] == "TTC Langensteinbach  II") {
        $val["heimmannschaft"] = "Herren 2";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["heimmannschaft"] == "TTC Langensteinbach  III") {
        $val["heimmannschaft"] = "Herren 3";
        }
        if ($val["spielklasse"] == "He Kr  Kl A" && $val["heimmannschaft"] == "TTC Langensteinbach  IV") {
        $val["heimmannschaft"] = "Herren 4";
        }
        if ($val["spielklasse"] == "He Kr  Kl B" && $val["heimmannschaft"] == "TTC Langensteinbach  V") {
        $val["heimmannschaft"] = "Herren 5";
        }
        if ($val["spielklasse"] == "He Kr  Kl C" && $val["heimmannschaft"] == "TTC Langensteinbach  VI") {
        $val["heimmannschaft"] = "Herren 6";
        }
        if ($val["spielklasse"] == "Ju Vb Kl" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Jugend 1";
        }
        if ($val["spielklasse"] == "Ju Bez Kl" && $val["heimmannschaft"] == "TTC Langensteinbach  II") {
        $val["heimmannschaft"] = "Jugend 2";
        }
        if ($val["spielklasse"] == "Ju Kr  Kl" && $val["heimmannschaft"] == "TTC Langensteinbach  III") {
        $val["heimmannschaft"] = "Jugend 3";
        }
        if ($val["spielklasse"] == "Sm Kr  Li" && $val["heimmannschaft"] == "TTC Langensteinbach") {
        $val["heimmannschaft"] = "Schüler A";
        }
        if ($val["spielklasse"] == "Sm Kr Kl" && $val["heimmannschaft"] == "TTC Langensteinbach  (SBm)") {
        $val["heimmannschaft"] = "Schüler B";
        }
        if ($val["spielklasse"] == "Da Vb Kl" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Damen 1";
        }
        if ($val["spielklasse"] == "Da Bez Li" && $val["gastmannschaft"] == "TTC Langensteinbach  II") {
        $val["gastmannschaft"] = "Damen 2";
        }
        if ($val["spielklasse"] == "He Bez Li" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Herren 1";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["gastmannschaft"] == "TTC Langensteinbach  II") {
        $val["gastmannschaft"] = "Herren 2";
        }
        if ($val["spielklasse"] == "He Kr   Li" && $val["gastmannschaft"] == "TTC Langensteinbach  III") {
        $val["gastmannschaft"] = "Herren 3";
        }
        if ($val["spielklasse"] == "He Kr  Kl A" && $val["gastmannschaft"] == "TTC Langensteinbach  IV") {
        $val["gastmannschaft"] = "Herren 4";
        }
        if ($val["spielklasse"] == "He Kr  Kl B" && $val["gastmannschaft"] == "TTC Langensteinbach  V") {
        $val["gastmannschaft"] = "Herren 5";
        }
        if ($val["spielklasse"] == "He Kr  Kl C" && $val["gastmannschaft"] == "TTC Langensteinbach  VI") {
        $val["gastmannschaft"] = "Herren 6";
        }
        if ($val["spielklasse"] == "Ju Vb Kl" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Jugend 1";
        }
        if ($val["spielklasse"] == "Ju Bez Kl" && $val["gastmannschaft"] == "TTC Langensteinbach  II") {
        $val["gastmannschaft"] = "Jugend 2";
        }
        if ($val["spielklasse"] == "Ju Kr  Kl" && $val["gastmannschaft"] == "TTC Langensteinbach  III") {
        $val["gastmannschaft"] = "Jugend 3";
        }
        if ($val["spielklasse"] == "Sm Kr  Li" && $val["gastmannschaft"] == "TTC Langensteinbach") {
        $val["gastmannschaft"] = "Schüler A";
        }
        if ($val["spielklasse"] == "Sm Kr Kl" && $val["gastmannschaft"] == "TTC Langensteinbach  (SBm)") {
        $val["gastmannschaft"] = "Schüler B";
        }
        $date = DateTime::createFromFormat('Y-m-d H:i:s', $val["spielzeit"]);
        $newDate = $date->format('d.m.Y');
        echo "
        <tr>
            <td> {$val["wochentag"]} </td>
            <td> {$newDate} </td>
            <td> {$val["heimmannschaft"]} </td>
            <td> {$val["gastmannschaft"]} </td>
            <td align=center> {$val["heimergebnis"]} </td>
            <td align=center> <b>:</b></td>
            <td align=center> {$val["gastergebnis"]} </td>
        </tr>
        ";
    }
    echo "</table>";
}
?>

23.10.2017 10:13

18 Jörg Kruse

Die Einbindung der spiele-rueckblick.php.inc kommt zu spät. Während des Funktionsaufrufes ist die Definition noch nicht vorhanden. Ich würde Dateien mit Definitionen von Klassen Funktionen, Konstanten etc. übersichtshalber alle ganz am Anfang aufführen. Ich würde die Datei dabei auch eher printResult.php.inc nennen, denn sie enthält ja die Definition dieser Funktion und soll dann auch von einer anderen Datei aus includiert werden (oder falls noch andere Funktionsdefinitionen darin platziert werden: my-functions.php.inc).

<?php

//Einbinden von CSS Datei
include "css.php.inc";

//Einbinden von Datenbankzugang
require_once "dbVerbindung.php.inc";

//Einbinden von Funktion printResult()
require_once "printResult.php.inc";

23.10.2017 10:43 | geändert: 23.10.2017 10:45

19 tobi

in der Vorschau habe ich
    foreach ($res as $val) {
        if ($val["spielklasse"] == ... 
        echo "
        <tr>
            <td> {$val["wochentag"]} </td>
            <td> {$newDate} </td>
            <td> {$val["heimmannschaft"]} </td>
            <td> {$val["gastmannschaft"]} </td>
        </tr>
...
und in der Rückschau:
    foreach ($res as $val) {
        if ($val["spielklasse"] == ... 
        echo "
            <td> {$val["wochentag"]} </td>
            <td> {$newDate} </td>
            <td> {$val["heimmannschaft"]} </td>
            <td> {$val["gastmannschaft"]} </td>
            <td align=center> {$val["heimergebnis"]} </td>
            <td align=center> <b>:</b></td>
            <td align=center> {$val["gastergebnis"]} </td>
...

Wenn beide nun auf die ein uns selbe printResult.php.inc zugreifen, dann bekommen sie auch beide die gleiche Tabelle und keine unterschiedliche

23.10.2017 11:17

20 Jörg Kruse

Die Funktion printResult() erhält über das Argument $res unterschiedliche Datenbankresultate, von daher sind die Inhalte ja schonmal verschieden. Wenn auch der Tabellen-Aufbau sich unterscheiden soll, kannst du dies über ein weiteres Argument steuern:

function printResult($res, $type) {
    /**/
        echo "
            <td> {$val["wochentag"]} </td>
            <td> {$newDate} </td>
            <td> {$val["heimmannschaft"]} </td>
            <td> {$val["gastmannschaft"]} </td>";
        if ($type = 'rueckschau') {
            echo "
                <td align=center> {$val["heimergebnis"]} </td>
                <td align=center> <b>:</b></td>
                <td align=center> {$val["gastergebnis"]} </td>";
        }
    /**/
}

Die Aufrufe sind dann entsprechend:

printResult($pdo->query($sql)->fetchAll(), 'rueckschau');

printResult($pdo->query($sql)->fetchAll(), 'vorschau');

Du kannst die Funktion als Quickfix auch unterschiedlich benennen, so dass du dann zwei unterscheidliche Funktionen hast. Dann stellt sich allerdings die Frage, warum du überhaupt Funktionen verwendest, wenn du diese nur einmal aufrufst. Funktionen sind ja dazu da, damit der darin enthaltene Code mehrfach aufgerufen werden kann.

23.10.2017 11:45