Paules-PC-Forum.de Anzeige:

Microsoft Windows Intune: PC-Verwaltung und -Sicherheit in der Cloud: Updateverwaltung, Anti-Virus und vieles mehr!


Zurück   Paules-PC-Forum.de > Programmierung > PHP/MySQL

PHP/MySQL Alles rund um die Programmiersprache PHP sowie MySQL.

EM-Tippspiel

Paule bei Facebook


Paule bei Twitter


Letzte Forenthemen
Gehe zum ersten neuen Beitrag PPF - Spiel "Wörter weiter...
Aufrufe: 26895, Antworten: 4218
Gehe zum ersten neuen Beitrag Algorithmen Teil IV...
Aufrufe: 3323, Antworten: 122
Gehe zum ersten neuen Beitrag Von Live CD Windowspfad...
Aufrufe: 302, Antworten: 19
Gehe zum ersten neuen Beitrag Bundesliga-Tippspiel Saision...
Aufrufe: 7639, Antworten: 185
Gehe zum ersten neuen Beitrag Captur 2.2 (Snow Leo)
Aufrufe: 19, Antworten: 0
Gehe zum ersten neuen Beitrag Captur 2.3 (Lion)
Aufrufe: 21, Antworten: 0
Gehe zum ersten neuen Beitrag Acer Aspire 8745ZG fährt...
Aufrufe: 55, Antworten: 6
Gehe zum ersten neuen Beitrag Rechner fährt herunter,...
Aufrufe: 144, Antworten: 9
Gehe zum ersten neuen Beitrag avs4you_com Lizenz oder Abo?
Aufrufe: 69, Antworten: 4
Gehe zum ersten neuen Beitrag PPF - Shoppingwahn
Aufrufe: 50941, Antworten: 1395
Zeige:





Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20.02.2008, 21:38   #1 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard Nächste Zahl zu einem Wert ermitteln

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
K. R. Eyden ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 20.02.2008, 21:50   #2 (Direktlink)
Stammuser
 
Registriert seit: 22.07.2006
Beiträge: 260
Standard

... hmmm http://www.office-loesung.de/ftopic118274_0_0_asc.php
TEAMWOLF ist offline   Mit Zitat antworten
Alt 20.02.2008, 22:06   #3 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard

ööööh...das ist php
und der Link führt mich auf ne Excel-Seite
__________________
mFg
K. R. Eyden
K. R. Eyden ist offline   Mit Zitat antworten
Alt 20.02.2008, 23:07   #4 (Direktlink)
Stammuser
 
Registriert seit: 22.07.2006
Beiträge: 260
Standard

Zitat:
Zitat von K. R. Eyden
ööööh...das ist php
und der Link führt mich auf ne Excel-Seite
... dann frag mal Lehrer oder Google.
TEAMWOLF ist offline   Mit Zitat antworten
Alt 21.02.2008, 12:14   #5 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Genesis
 
Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
Standard

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;
}
Aufruf in deinem Beispiel mit

Code:
$pos = getNextIndex($array, 12, 5);
Müsste 15 ergeben.

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
Genesis ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 21.02.2008, 14:05   #6 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard

ah alles klar, danke schön ich werds mal probieren
__________________
mFg
K. R. Eyden
K. R. Eyden ist offline   Mit Zitat antworten
Alt 21.02.2008, 14:33   #7 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard

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;
da gibt er mir -1 aus, wenn ich guggn will, welche Zahl im array der 376 am nächsten ist (insgesamt 7 Zahlen zw. 240 und 500)
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
K. R. Eyden ist offline   Mit Zitat antworten
Alt 22.02.2008, 11:53   #8 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Genesis
 
Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
Standard

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;
heißen um die Position zu ermitteln. Sorry
Genesis ist offline   Mit Zitat antworten
Alt 24.02.2008, 17:53   #9 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard

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);
Damit bekomme ich ja die Werte 11, 12 und 13
(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'");
wie muss ich das schreiben?
__________________
mFg
K. R. Eyden
K. R. Eyden ist offline   Mit Zitat antworten
Alt 25.02.2008, 13:51   #10 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Genesis
 
Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
Standard

Code:
safe_query("SELECT userID FROM punktewette WHERE wette='$endergebnis' OR wette='$ergebnisminus' OR wette='$ergebnisplus';");
Ich verstehe deine Datenstruktur nicht wirklich
Genesis ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Alt 25.02.2008, 16:38   #11 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard

danke, geht das auch mit einer AND-Funktion?
was verstehst du denn nicht?
__________________
mFg
K. R. Eyden
K. R. Eyden ist offline   Mit Zitat antworten
Alt 25.02.2008, 18:34   #12 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Genesis
 
Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
Standard

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
Grüße
Genesis
Genesis ist offline   Mit Zitat antworten
Alt 25.02.2008, 19:09   #13 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard

ä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
K. R. Eyden ist offline   Mit Zitat antworten
Alt 25.02.2008, 19:30   #14 (Direktlink)
Forenmaskottchen
 
Benutzerbild von Genesis
 
Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
Standard

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;
}
So vermeidest du unnötige Redundanz in den Tabellen. Wenn du weitere Informationen zur Wette benötigst, kannst du diese mit in die Tabelle wetten eintragen.

Grüße
Genesis
Genesis ist offline   Mit Zitat antworten
Alt 25.02.2008, 20:15   #15 (Direktlink)
Stammuser
 
Registriert seit: 19.04.2006
Ort: Adelsheim
Beiträge: 286
Standard

ahh interessant...sobald mein Space mal wieder verfügbar ist werds ichs mal ausprobieren
__________________
mFg
K. R. Eyden
K. R. Eyden ist offline   Mit Zitat antworten
Werbung

Windows 7 Tipps und Tricks in Bildern

Antwort

  Paules-PC-Forum.de > Programmierung > PHP/MySQL

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an




Alle Zeitangaben in WEZ +2. Es ist jetzt 02:58 Uhr.


Powered by vBulletin® Version 3.8.7 (Deutsch)
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Powered by vBCMS® 2.7.0 ©2002 - 2012 vbdesigns.de
(c) Paules-PC-Forum.de

::: Impressum :::

Search Engine Optimization by vBSEO 3.3.2