ilch Forum » Allgemein » HTML, PHP, SQL,... » 2 Spalten Prüfen

Geschlossen
  1. #1
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Ich weiss im Moment einfach nicht weiter:S Ich habe eine Tabelle in der Datenbank die 2 Spalten enthält. Ich spreche die Datenbank mit dem SELECT * an um alle Daten abzurufen. Danach führe ich eine if Anweisung aus um zu prüfen oben jeweils die 2 Richtigen Werte vorhanden sind. Der Code sieht so aus
    $abf = 'SELECT * FROM prefix_lala';
        $erg = db_query($abf);
    	$row = db_fetch_assoc($erg);
    	
    	
    	if
    	($_SESSION['authid'] == $row['uid'] AND $uid == $row['fid'])
        {
        echo "JA";
        }
        else
        {
       
    	if
    	($_SESSION['authid'] == $uid)
    	{
        echo "JA2";
        }
        else
        {
        header("location:/index.php?no");
        }}


    Solange jetzt nur jeweils 1 Wert in der Zeile ist funktioniert das ganze ohne Probleme. Wenn jetzt aber die Zeilen mehrere Inhalte haben funktioniert das ganze nicht mehr und man wird auf else verwiesen.

    z.B:

    So funktioniert es:
    
    Zeile 1   Zeile 2
       1         2
    
    
    So funktioniert es nicht mehr:
    
    Zeile 1   Zeile 2
       1         2
       3         4


    Was kann ich machen damit alles funktioniert??? Wäre für hilfe sehr dankbar!!!
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Also wenn man in der Datenbank etwas bestimmtest sucht, sprich nur Ja oder Nein erhalten will, kann man ja die Bedingung direkt an die Datenbank geben, was immer besser ist als sich von der Datenbank alles zu holen, um dann nochmal mit php, die kompletten Ergebnisse durchzugehen, um etwas entsprechendes zu finden.

    Mit COUNT(*) kann man dann abfragen, wie oft etwas in der Datenbank vorkommt.

    In deinem Fall, nehme ich an, dass folgende Anweisung zu dem von dir gewünschten Ergebnis führt.

    $erg = db_count_query('SELECT COUNT(*) FROM prefix_lala WHERE uid = ' . $_SESSION['authid'] . ' AND fid = ' . $uid);
    if ($erg == 0) {
    //nichts gefunden
    } else {
    //Eintrag da
    }


    Um genauer auf deinen Code einzugehen, mit db_fetch_assoc holt man nur eine Zeile vom Ergebnis ab, und erst mit dem nächsten Aufruf würde man die nächste Zeile, oder eben false, wenn es keine weitere Zeile gibt, bekommen.

    Zumindest, wenn ich dich richtig verstanden hab.

    PS: Wichtig, wenn man Variablen in eine Datenbankabfrage verwendet, muss man sich über den Inhalt sicher sein, wenn die Daten aus einer unsicheren Quelle (also Usereingaben etc.) stammen, dann müssen sie vorher z.B. mit der escape Funktion "sicher" gemacht werden.


    Zuletzt modifiziert von Mairu am 05.02.2012 - 14:47:22
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    1 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Hab es jetzt gerade so gelöst und es funktioniert auch:

    $abf = 'SELECT * FROM prefix_lala WHERE uid = '.$_SESSION['authid'].' AND fid = '.$uid.' ';


    Werde mir jetzt noch deinen Code mal genau anschauen um zu schauen was ich an meinem "besser" machen kann.

    Vielen dank Mairu.
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Mairu Coder
    Registriert seit
    16.06.2006
    Beiträge
    15.334
    Beitragswertungen
    386 Beitragspunkte
    Ich weiß nicht wo das immer her kommt, aber warum machen so viele am Ende einer Abfrage, noch ein Leerzeichen hinten dran, was da eigentlich nichts zu suchen hat, wie bist du darauf gekommen?


    Zuletzt modifiziert von Mairu am 05.02.2012 - 16:16:56
    Und auch immer mal ein Blick auf die FAQ werfen. | Mairus Ilchseite
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Saarlonz Hall Of Fame
    Registriert seit
    07.08.2008
    Beiträge
    3.003
    Beitragswertungen
    235 Beitragspunkte
    Scheint ein Flüchtigkeitsfehler gewesen zu sein den in meinem Code ist er schon nicht mehr drin;)
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten