Wertung: Wer ist näher dran???

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wertung: Wer ist näher dran???

    Ich habe mir heute die Frage gestellt wie ich eine Art NAhe bei Abfrage schreiben könnte? Weiß aber nicht wie, würde mich dennoch sehr interessieren!


    Also folgendes!

    Jemand:
    Person a gibt meinetwegen 5000.34 als zahl ein!
    Person b gibt 5000.12 als zahl ein!

    das progi soll mir nun sagen wer näher an meiner zahl dran ist!
    zb hier 5000.17!

    weiß jemand rat?



  • #2
    $meine_zahl = 1000;

    PHP-Code:
    $karl 300;
    $karla 400;

    $differenz1 $meine_zahl $karl;
    $differenz2 $meine_zahl $karla;

    if(
    $differenz1 $differenz2) {
    echo 
    "Karla war näher dran";
    } else {
    echo 
    "Karl ist näher dran"; } 
    h.a.n.d.
    Schmalle

    http://impressed.by
    http://blog.schmalenberger.it



    Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
    ... nur ohne :-)

    Kommentar


    • #3
      Ich würde im Else-Zweig noch ne Gegenabfrage machen, um zu checken ob nicht beide User die gleiche Zahl eingegeben haben. - Vielleicht so:
      PHP-Code:
      function naeher($wertA,$wertB,$referenz)
      {
        
      $differenzA $wertA $referenz;
        
      $differenzB $wertB $referenz;
        if (
      abs($differenzA) < abs($differenzB))
          echo 
      "A ist naeher dran!";
        elseif (
      abs($differenzA) > abs($differenzB))
          echo 
      "B ist naeher dran!";
        else
          echo 
      "Beide sind gleich weit entfernt!";

      Kommentar


      • #4
        man könnte sich aber auch n knopf anne backe nähen, und n klavier dranhängen
        h.a.n.d.
        Schmalle

        http://impressed.by
        http://blog.schmalenberger.it



        Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
        ... nur ohne :-)

        Kommentar


        • #5
          hmm soweit so gut!

          klasse!!!! das hilft schon ein wenig! nur wie mache ich das nun wenn ich mehrere user habe? so um die hundert?

          habe hier mal die tabellen reingepackt!


          dax_user :
          laufnr int(11) NOT NULL default '0',
          user varchar(10) NOT NULL default '',
          spielwoche varchar(60) NOT NULL default '',
          tipp varchar(60) NOT NULL default '',
          tippgesamt tinyint(5) NOT NULL default '1',
          PRIMARY KEY (laufnr)

          INSERT INTO dax_user VALUES (2, 'toby', 'testwochen', '6666,55', 1);
          INSERT INTO dax_user VALUES (1, 'oli', 'testwochen', '2434,44', 1);
          INSERT INTO dax_user VALUES (3, 'mario', 'testwochen', '4434,54', 1);


          [COLOR=red]das ergebnis kommt hier her:[/COLOR]
          dax_spielwoche:
          laufnr int(11) NOT NULL default '0',
          spielwoche varchar(100) NOT NULL default '',
          daxstand varchar(7) NOT NULL default '',
          PRIMARY KEY (laufnr)

          INSERT INTO dax_spielwoche VALUES (1, 'testwochen', '2222,22');

          Kommentar


          • #6
            moin

            also für heute gebe ich auf

            ich möchte doch lediglich erreichen das mir die besten 5 angezeigt werden! also die 5 user die am dichtesten am ergebnis sind! habe wohl irgendwo einen denkfehler!

            hier nochmal die funktion ind er ich grad rumprobiere:

            function naeher($user){
            $result = mysql_query("SELECT spielwoche FROM dax_spielwoche_aktivieren where aktiv='1'");
            list($spielwochea)=mysql_fetch_row($result);


            $result = mysql_query("SELECT tipp FROM dax_user where ((user='$user') AND (spielwoche='$spielwochea')");
            list($tipp)=mysql_fetch_row($result);
            $result = mysql_query("SELECT daxstand FROM dax_spielwoche where spielwoche='$spielwochea'");
            list($daxstand)=mysql_fetch_row($result);



            $differenzA==($tipp - $daxstand);

            echo "$differenzA";
            }

            Kommentar


            • #7
              Hier der Dump und die Lösung:

              Code:
              #
              # Tabellenstruktur für Tabelle `dax_spielwoche`
              #
              
              CREATE TABLE dax_spielwoche (
                laufnr int(11) NOT NULL auto_increment,
                spielwoche varchar(80) NOT NULL default '',
                daxstand double NOT NULL default '0',
                PRIMARY KEY  (laufnr)
              ) TYPE=MyISAM;
              
              #
              # Daten für Tabelle `dax_spielwoche`
              #
              
              INSERT INTO dax_spielwoche VALUES (1, 'testwochen', '2222.22');
              # --------------------------------------------------------
              
              #
              # Tabellenstruktur für Tabelle `dax_user`
              #
              
              CREATE TABLE dax_user (
                laufnr int(11) unsigned NOT NULL auto_increment,
                user varchar(80) NOT NULL default '',
                spielwoche varchar(80) NOT NULL default '',
                tipp double NOT NULL default '0',
                tippgesamt tinyint(5) default '1',
                PRIMARY KEY  (laufnr)
              ) TYPE=MyISAM;
              
              #
              # Daten für Tabelle `dax_user`
              #
              
              INSERT INTO dax_user VALUES (2, 'toby', 'testwochen', '6666.55', 1);
              INSERT INTO dax_user VALUES (1, 'oli', 'testwochen', '2434.44', 1);
              INSERT INTO dax_user VALUES (3, 'mario', 'testwochen', '4434.54', 1);
              Code:
              SELECT u.user,abs(w.daxstand-u.tipp) as differenz FROM dax_user as u LEFT JOIN dax_spielwoche as w ON w.spielwoche=u.spielwoche WHERE u.spielwoche=w.spielwoche AND w.spielwoche='testwochen' ORDER BY differenz ASC LIMIT 5;
              Liefert die besten 5 User des Spiels 'testwochen' und die Differenz.
              [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
              [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
              [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

              © Harald Schmidt

              Kommentar


              • #8
                sorry aber

                kannst du mir sagen wie ich das in den code einbaue??? ich habe so etwas noch nie gesehen! ;-)

                habe schon versucht das einzubauen aber immer fehlermeldung!

                danke schonmal!

                Kommentar


                • #9
                  wenn

                  ich das so mache kommt schließlich nur der name der am dichtesten ist!!!

                  $result = mysql_query("
                  SELECT u.user,abs(w.daxstand-u.tipp) as differenz FROM dax_user as u LEFT JOIN dax_spielwoche as w
                  ON w.spielwoche=u.spielwoche WHERE u.spielwoche=w.spielwoche AND w.spielwoche='testwochen' ORDER BY differenz ASC LIMIT 5");
                  list($tipp)=mysql_fetch_row($result);

                  echo"$tipp";

                  Kommentar


                  • #10
                    Ja, du wertest das ergebnis vollkommen falsch aus.
                    Mit list($tipp)=mysql_fetch_row($result); bekommst du

                    1) nur den 1. Datensatz
                    2) hat das Ergebnis 2 Spalten.

                    Also:
                    PHP-Code:
                    $result mysql_query("SELECT u.user,abs(w.daxstand-u.tipp) as differenz FROM dax_user as u LEFT JOIN dax_spielwoche as w 
                    ON w.spielwoche=u.spielwoche WHERE u.spielwoche=w.spielwoche AND w.spielwoche='testwochen' ORDER BY differenz ASC LIMIT 5"
                    ); 
                    $i=1;
                    while(list(
                    $user,$differenz)=mysql_fetch_array($result)) {
                    echo 
                    "$i) User: $user ; Differenz: $differenz <br>";
                    $i++;

                    PS: Hast du den Datentyp auch auf Double gestellt bzw. meinen Dump ausgeführt ?
                    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
                    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
                    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

                    © Harald Schmidt

                    Kommentar


                    • #11
                      klasse

                      vielen dank, sehr nett von dir!

                      Kommentar


                      • #12
                        %

                        bekommt man da auch noch einen prozentuale abweichungsanzeige rein? also 0,06 % abweichung??

                        reines interesse?

                        Kommentar


                        • #13
                          das sollte funktionieren:
                          Code:
                          SELECT u.user,abs(w.daxstand-u.tipp) as differenz,
                            100*(differenz/w.daxstand) as abweichung
                          FROM dax_user as u
                          LEFT JOIN dax_spielwoche as w ON w.spielwoche=u.spielwoche
                          WHERE u.spielwoche=w.spielwoche
                            AND w.spielwoche='testwochen' ORDER BY differenz ASC LIMIT 5
                          wenn nicht:
                          Code:
                          SELECT u.user,abs(w.daxstand-u.tipp) as differenz,
                            100*(abs(1-u.tipp/w.daxstand)) as abweichung
                          FROM dax_user as u
                          LEFT JOIN dax_spielwoche as w ON w.spielwoche=u.spielwoche
                          WHERE u.spielwoche=w.spielwoche
                            AND w.spielwoche='testwochen' ORDER BY differenz ASC LIMIT 5
                          PS@Troublegum: Auch Du darfst Dir Zeilenumbrüche
                          in Code-Postings angewöhnen - erhöht die Übersicht ungemein!
                          mein Sport: mein Frühstück: meine Arbeit:

                          Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                          Kommentar

                          Lädt...
                          X