• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Probleme bei Abfrage

beta113

Neues Mitglied
Hallo,
ich würde gerne eine Abrage starten nur habe ich ein Problem.
Ich möchte nur Daten Ausgeben wenn bei einem bestimmten Wert in der Spalte how der Wert 'Give' zuerst vorkommt.
Wenn aber zuerst 'Take' vorkommt soll der Wert bei der Ausgabe ignoriert werden.
Hat jemand eine Idee wie man so etwas realisieren könnte?

vnum how
1 Give
1 Take
1 Give
2 Take
2 Give

1 ausgeben 2 nicht
 
Werbung:
Einfach zu lösen durch eine Bedingung:

PHP:
//vorher auslesen der Daten und Speicherung der Abfrage in $result
//vermutlich Ausgabe durch while-Schleife?
while($row = mysql_fetch_array($result)) {
     if($row['how'] == 'Give') {
          //Ausgabe ...
     }
}

Oder meinst du was anderes?
 
Werbung:
Nein, das meine ich leider nicht.
Damit wird nur ausgeben welcher Wert in der Spalte Give bestizt und dies besitzt jeder.
Ich erweiter mal das beispiel:
vnum how
1 Give
1 Take
1 Give
2 Take
2 Give
3 Take
3 Give
3 Take
4 Give
4 Take
5 Give
5 Take
5 Give
Die Ausgabe: 1 4 5
 
Du hättest gleich genauer schreiben sollen, dass bei der Änderung von vnum geprüft werden soll ...
Mein Lösungsansatz:

PHP:
$aktuelleVnum = 0;

while($row = mysql_fetch_array($result)) {
     //prüfen ob sich vnum ändert
     if($row['vnum'] != $aktuelleVnum) {
          //prüfen ob how == Give ist
          if($row['how'] == 'Give') {
               $zahlen[] = $row['vnum'];
          }

          //aktuelle vnum setzen
          $aktuelleVnum = $row['vnum'];
     }
}

echo implode(' ', $zahlen);

Ausgabe bei deinen Werten:
1 4 5
 
PHP:
$aktuelleVnum = 0;

$sql1 = "SELECT what FROM log WHERE who='17658'";
$ergebnis1 = mysql_query($sql1);
while($row = mysql_fetch_array($ergebnis1)) {
 $accountid = $row['what'];
     if($row['what'] != $aktuelleVnum) {
          //prüfen ob how == EXCHANGE_GIVE ist
          if($row['how'] == 'EXCHANGE_GIVE') {
               $zahlen[] = $row['what'];
          }

          //aktuelle what setzen
          $aktuelleVnum = $row['what'];
     }
}

echo implode(' ', $zahlen);
Das ist nun was ich mithilfe deines scripts gemacht habe nur folgender Fehler erscheint:
Warning: implode() [function.implode]: Bad arguments on line 24
Line 24: echo implode(' ', $zahlen);
Habe ich etwas falsch gemacht?
 
Zuletzt bearbeitet:
Werbung:
Vermutlich wird kein Mal die Bedingung erfüllt und von daher auch das Array $zahlen nicht erzeugt. Kann dir nichts genaueres sagen, da ich nicht mehr weiß, als hier steht.
Kannst ja testweise die Werte sofort ausgeben in Zeile 16 (?) oder sonst ein bisschen rumprobieren. Ich habs nicht getestet, es war eine Lösungsidee.
 
Zurück
Oben