2016-11-08 3 views
-1

Ich habe eine Fußball-Website. Ein Spieler kann diese Ergebnisse haben: 0, 1 oder 3 (Verlust, Unentschieden, Sieg)Mysql wählen Sie, um String

Ich möchte sehen, welche Ergebnisse ein bestimmter Spieler in seinen letzten 3 Spielen bekommen hat. Ich möchte das Ergebnis hinzufügen (sollte eine Zahl mit 3 möglichen Ergebnissen schon erwähnt kombiniert sein)

Dies ist mein Code:

$result = mysql_query("SELECT * FROM events_regged WHERE result IS NOT NULL AND registrant_name='John' ORDER BY id DESC limit 3") or die(mysql_error()); 

while($row = mysql_fetch_array($result)) { 

$form = $row['result']; 
echo $form; 
if ($form == '333') {echo 'Won 3 times in a row';} 
} 

Das Problem hier ist, dass ich 3 mal die Nummer 3 erhalten und nicht die Nummer 333. Ich denke, ich brauche hier keine 'while' Aussage.

Wie kann ich es tun?

+0

Anschlag mit mysql_ -Funktionen die veraltet sind ... – Blueblazer172

+1

$ form = $ row [ 'Ergebnis'] – e4c5

+0

downvoted für die Verwendung von mysql_ Funktion –

Antwort

0
$result = mysql_query("SELECT * FROM events_regged WHERE result IS NOT NULL AND registrant_name='John' ORDER BY id DESC limit 3") or die(mysql_error()); 
$maxwins = 0; 
while($row = mysql_fetch_array($result)) { 
    $form = $row['result']; 
    if ($form==3) 
     $maxwins++; 
    else 
     $maxwins = 0; 
    if ($maxwins == 3) { 
     echo 'Won 3 times in a row'; 
     break; 
    } 
} 
0

Es gibt mehrere Probleme in Ihrem Snippet. Zunächst wird bei Verwendung von = der vorherige Wert überschrieben. Was Sie tun müssen, ist diese Ergebnisse zu erfassen, damit Ihre Bedingung erfüllt wird.

Zweitens, Sie suchen nach einer Bedingung in einer Schleife.

while($row = mysql_fetch_array($result)) {  
$form .= (string) $row['result']; 
} 
if ($form == '333') {echo 'Won 3 times in a row';} 

Es gibt eine Reihe von Möglichkeiten, dies zu tun, Lösung oben erfordert nur eine minimale Änderung Ihrer Schnipsel.

Btw. mysql_* wurde seit einiger Zeit abgeschrieben. Werfen Sie einen Blick auf PDO.

0

wird diese Abfrage drei Zeilen zurück:

SELECT * 
FROM events_regged 
WHERE result IS NOT NULL AND registrant_name = 'John' 
ORDER BY id DESC 
LIMIT 3; 

Wenn Sie die Werte in einer Zeile wollen, dann Aggregation verwenden.

Hier ist eine Methode:

SELECT GROUP_CONCAT(result ORDER BY id DESC) as results 
FROM (SELECT * 
     FROM events_regged 
     WHERE result IS NOT NULL AND registrant_name = 'John' 
     ORDER BY id DESC 
     LIMIT 3 
    ) e 
0

danke für die Antwort e4c5. Dieses das Problem behoben.

$form .= $row['result'] 
+0

das ist besser: - '$ form = ''; while ($ row = mysql_fetch_array ($ ergebnis)) {$ form. = $ row ['result']; } if ($ form == '333') {echo '3 mal hintereinander gewonnen';} 'bei jeder Ausführung von' echo $ form; 'und' if ($ form == '333') {echo 'Gewonnen 3 mal hintereinander ';} 'wird nicht benötigt. draußen stellen –