Antworten auf deine Fragen:
Neues Thema erstellen

Antworten zum Thema „PHP Datenbankergebnisse aus Funktion heraus“

ms2002

Nicht mehr ganz neu hier

Hallo Zusammen,
ich habe ein kleines Problem mit meiner Datenbank und den Anfrageergebnissen.

Folgendes Script liegt mir zugrunde:
PHP:
<?php
include("../Connections/tippspiel.php");


function erg_spiele ($p_id){
    $spielesuche = "SELECT        t.t1 as 't1', t.t2 as 't2', u.punkte as 'punkte', e.team1 as 'et1', e.team2 as 'et2', e.f1 as 'f1', e.f2 as 'f2', e.tipp as 'etipp', a.name as 'aname', b.name as 'bname', u.vorname, u.nachname
                    FROM        user u, spieltag s, ergebnisse e, tipps t, teams a, teams b
                    WHERE        t.user = '$p_id'
                    AND            t.spiel = s.id 
                    AND         s.id = e.id
                    AND            s.team1 = a.id
                    AND            s.team2 = b.id
                    AND         t.user = u.id
                    ORDER BY    s.id ASC";    
    $ausgabe = mysql_query($spielesuche);
    $spiel = mysql_fetch_assoc($ausgabe);
    $anz = mysql_num_rows($ausgabe);
    $spiel['anz'] = $anz;
    return $spiel;
}

$erg_sp = erg_spiele(2);
do{
    if(($erg_sp['t1'] == $erg_sp['et1']) && ($erg_sp['t2'] == $erg_sp['et2']))
    {
        echo "3 Punkte!!!";    
    }
    else if((($erg_sp['t1'] == $erg_sp['et1']) && ($erg_sp['t2'] != $erg_sp['et2'])) || (($erg_sp['t1'] != $erg_sp['et1']) && ($erg_sp['t2'] == $erg_sp['et2'])))
    {
        echo " 1 Punkt!!!";
    }
    else 
    {
        echo "keine Punkte!!!";
    }
        
        $erg_sp['anz'] --;
    }while($erg_sp['anz'] > 0);
?>
Das Problem sind nicht die Ergebnisse, sondern, dass die nächsten Datenbankergebnisse nicht dem "$erg_sp" übergeben werden. Ich weiß auch, dass diese Variante hier mit der Zählvariablen nicht wirklich was bringt.
Wie muss ich die while-Bedingung setzen, damit ich außerhalb der Funktion alle Datenbankergebnisse bekomme?

Vielen Dank schonmal,
liebe Grüße,
Maik
 

Duddle

Posting-Frequenz: 14µHz

AW: PHP Datenbankergebnisse aus Funktion heraus

mysql_fetch_* holt immer exakt eine Zeile aus der Ergebnistabelle. Das heißt, du musst dir in erg_spiele() schon ein komplettes Ergebnis-Array aufbauen, bevor du es zurückgibst.

Alternativ kannst du auch die Programmlogik umstrukturieren, was ich persönlich hier sowieso machen würde. Das Script soll die Punkte für alle Spiele ausgeben, also sollte es eine Funktion geben die das in sich geschlossen ausführt.


Duddle
 

ms2002

Nicht mehr ganz neu hier

AW: PHP Datenbankergebnisse aus Funktion heraus

Das ist mir auch bewusst, dass ich hier nur eine Zeile übergebe. Aber gibt es keine Möglichkeit, ohne groß nen Array zu basteln, das ganze Ergebnis zu übergeben?
Ich würde es auch anders strukturieren, nur manchmal brauch ich das Ergebnis dieser Datenbank für eine Ausgabe und manchmal, um damit weiter zu rechnen. Ich möchte nicht immer wieder diese Anfrage in mein Script hineinkopieren.
Includen ist natürlich auch noch eine Möglichkeit, aber ich wollte es mal mit einer Funktion lösen.
Gibt es eine Lösung, ohne dass es umständlich und schädlich wird?

Maik
 

Duddle

Posting-Frequenz: 14µHz

AW: PHP Datenbankergebnisse aus Funktion heraus

ohne groß nen Array zu basteln, das ganze Ergebnis zu übergeben?

Nein, das geht nicht. Du musst jede Zeile einzeln anfordern und die irgendwo zwischenspeichern um sie später als exakt in dem Moment benutzen zu können. Ergo baust du dir entweder ein Array als Zwischenspeicher oder benutzt die Daten sofort, vergleichst also direkt t1 und t2.

nur manchmal brauch ich das Ergebnis dieser Datenbank für eine Ausgabe und manchmal, um damit weiter zu rechnen.
Aber offensichtlich brauchst du manchmal alle Zeilen und manchmal nur einen Teil davon. Also unterscheiden sich diese Fälle. Gemeinsam haben sie nur die Abfrage selbst. Diese kannst du rausziehen und (wie schon jetzt vorhanden) parametrisieren.



Duddle
 

ms2002

Nicht mehr ganz neu hier

AW: PHP Datenbankergebnisse aus Funktion heraus

Wenn ich dich jetzt richtig versteh, dann soll ich die Funktion weglassen und dann wieder includen?
Dachte, ich kann auch mal ne Funktion nutzen.
 

Duddle

Posting-Frequenz: 14µHz

AW: PHP Datenbankergebnisse aus Funktion heraus

Du solltest nur das in Funktionen kapseln, was sich tatsächlich dafür anbietet. Wie schon gesagt, du benutzt zwar die gleiche Abfrage, aber du behandelst scheinbar das Ergebnis anders in verschiedenen Kontexten.

Wenn du nur die erste Zeile des Ergebnisses brauchst, nutze weiterhin deine Funktion.
Wenn du alle Zeilen brauchst, musst du entweder ein Zwischenarray aufbauen und zurückgeben, oder alles ab mysql_fetch_* aus der Funktion rausziehen.


Duddle
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Statistik des Forums

Themen
175.155
Beiträge
2.581.856
Mitglieder
67.222
Neuestes Mitglied
Gregor
Oben