![]() |
Anzeige:
|
|
|||||||
| PHP/MySQL Alles rund um die Programmiersprache PHP sowie MySQL. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
Wieder ich
Mein Problem: ich habe in einer Spalte verschiedene Werte, z.B. 3, 5, 15, 21. diese lese ich in einem array aus. Nun möchte ich ermitteln, welche Zahl am nächsten beispielsweise an der 12 dran ist...geht das so einfach als Funktion?
__________________
mFg K. R. Eyden |
|
|
|
|
|
|
#2 (Direktlink) |
|
Stammuser
![]() Registriert seit: 22.07.2006
Beiträge: 260
|
|
|
|
|
|
|
#3 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
ööööh...das ist php
und der Link führt mich auf ne Excel-Seite
__________________
mFg K. R. Eyden |
|
|
|
|
|
#4 (Direktlink) | |
|
Stammuser
![]() Registriert seit: 22.07.2006
Beiträge: 260
|
Zitat:
|
|
|
|
|
|
|
#5 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Code:
function getNextIndex($array, $position, $maxsteps) {
for ($i = 1; $i <= $maxsteps; $i++) {
if ($array[$position-$i] != "") return $array[$position-$i];
if ($array[$position+$i] != "") return $array[$position+$i];
}
return -1;
}
Code:
$pos = getNextIndex($array, 12, 5); Dünn besetzte Arrays sind sicher nicht optimal ... kannst du nicht deine Datenstruktur irgendwie bearbeiten. Im Sinne von $array1[0] = 3 -> $array2[3] = ... Grüße Genesis |
|
|
|
|
|
|
#6 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
ah alles klar, danke schön
__________________
mFg K. R. Eyden |
|
|
|
|
|
#7 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
Code:
function getNextIndex($array, $position, $maxsteps) {
for ($i = 1; $i <= $maxsteps; $i++) {
if ($array[$position-$i] != "") return $array[$position-$i];
if ($array[$position+$i] != "") return $array[$position+$i];
}
return -1;
}
$ergebnis = safe_query("SELECT wette FROM punktewette");
$array = mysql_fetch_array($ergebnis);
$pos = getNextIndex($array, 376, 1);
echo $pos;
wenn ich bei return -1 umänder, also z.B. -5 gibt er mir -5 aus wenn ich aber getNextIndex($array, 1, 1); eingeb, gibt er mir die kleinste Zahl, bzw. vermutlich die nächste Zahl zur 1, im array aus...was mache ich falsch?
__________________
mFg K. R. Eyden |
|
|
|
|
|
#8 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Die 1 am Ende des Funktionsaufrufs bedeutet, dass er im Abstand 1 um die Zahl 376 herum suchen soll, d.h. 375 und 377.
Edit: Es muss aber auch Code:
if ($array[$position-$i] != "") return $position-$i; if ($array[$position+$i] != "") return $position+$i; |
|
|
|
|
|
#9 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
ne da passiert nix
ich habs mal anders gelöst ein Admin kann einstellen, wieweit die Zahl vom tatsächlichen Ergebnis abweichen darf. ich häng jetzt an diesem Problem: Ich frage das Ergebnis und die Abweichung ab, also bsp. 12 und 1 Dann connecte ich zur Tabelle wo alle meine Zahlen gelistet werden un gebe diese aus jetzt habe ich folgenden Code: Code:
$ergebnis = safe_query("SELECT ergebnis, toleranz FROM punkteadmin ORDER BY ergebnis");
while ($ds = mysql_fetch_array($ergebnis)) {
$endergebnis = $ds[ergebnis];
$abweichung = $ds[toleranz]; }
$ergebnisminus = ($endergebnis - $abweichung);
$ergebnisplus = ($endergebnis + $abweichung);
(geht, habs per echo ausgeben lassen) Ich möchte nun aber alle userIDs ausgeben lassen, die diese Bedingung liefern. So gehts aber nicht: Code:
safe_query("SELECT userID FROM punktewette WHERE wette='$endergebnis AND $ergebnisminus AND $ergebnisplus'");
__________________
mFg K. R. Eyden |
|
|
|
|
|
#10 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Code:
safe_query("SELECT userID FROM punktewette WHERE wette='$endergebnis' OR wette='$ergebnisminus' OR wette='$ergebnisplus';");
|
|
|
|
|
|
|
#11 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
danke, geht das auch mit einer AND-Funktion?
was verstehst du denn nicht?
__________________
mFg K. R. Eyden |
|
|
|
|
|
#12 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Es gibt definitiv keinen Eintrag, der 3 Werte gleichzeitig annehmen kann
Also ich habe da so verstanden: In der Tabelle mit den Einträgen wette, ergebnis, toleranz, userID speicherst du Wetten ab (Geldwert Wette?). Das Ergebnis ist das letztendliche Ergebnis, auf das bezogen die Platzierung der ersten 3 Besten ermittelt werden soll (ergebnis, toleranz). Wieso speicherst du das Ergebnis für jeden Tabelleneintrag? Wäre es nicht am einfachsten die Werte auszulesen, den Betrag von Wette - Ergebnis zu berechnen und die 3 kleinsten Werte zu ermitteln? also ungetestet Code:
$sql = mysql_query("SELECT userID FROM punktewette ORDER BY abs(wette-ergebnis) LIMIT 0,3;");
while ($x = mysql_fetch_object($sql))
echo $x->userID
Genesis |
|
|
|
|
|
#13 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
ähm ok...ich bin grad noch am php lernen, vllt wirkt deswegen alles sehr unübersichtlich
also wie du schon richtig erraten hast, handelt es sich um ein Wettscript. Der User gibt eine Wette ein, also eine Zahl (zb 12). In einer Tabelle ist das richtige Ergebnis und eine Toleranzgrenze bzw. Abweichung angegeben, also inwieweit die Wette vom Ergebnis abweichen darf, um trotzdem noch richtig zu sein bspweise wäre bei einer Toleranzgrenze von 1 die Werte 11 und 13 immer noch richtig jetzt soll mir mysql halt alle user (sind per userID gespeichert) ausgeben, bei denen in der Spalte Wette entweder der Wert 11, der Wert 12 oder der Wert 13 steht. Das sind dann sozusagen die Gewinner
__________________
mFg K. R. Eyden |
|
|
|
|
|
#14 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
in diesem Falle würde ich das Ergebnis in einer anderen Tabelle speichern, zum Beispiel
Tabelle wetten wID wErgebnis wToleranz wID - Wettidentifier für die Anzeige auf einer Homepage wErgebnis - Das Ergebnis der Wette wToleranz - Die Toleranz für die Wette Tabelle eintraege eUID eWette eUID - Die UserID eWette - Der gewettete Wert Wenn du dann die Wette mit der ID $ID hast: Code:
$sql = mysql_query("SELECT * FROM wetten WHERE wID='$ID';");
$x = mysql_fetch_object($sql);
$toleranz = $x->wToleranz;
$ergebnis = $x->wErgebnis;
$upper = $ergebnis + $toleranz;
$lower = $ergebnis - $toleranz;
$sql = mysql_query("SELECT eUID FROM eintraege WHERE eWette >= $lower AND eWette <= $upper;");
echo "Gewonnen haben: ";
while ($x = mysql_fetch_object($sql)) {
echo $x->eUID;
}
Grüße Genesis |
|
|
|
|
|
#15 (Direktlink) |
|
Stammuser
![]() Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
|
ahh interessant...sobald mein Space mal wieder verfügbar ist werds ichs mal ausprobieren
__________________
mFg K. R. Eyden |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|