ilch Forum » Ilch Clan 1.1 » Fehlersuche und Probleme » Userprofil - Berechnung und denkfehler

Geschlossen
  1. #1
    User Pic
    orsnipe Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    425
    Beitragswertungen
    11 Beitragspunkte
    Ich teste jetzt schon eine ganze weile aber komme nicht weiter.
    Entweder ist es ein Denkfehler oder ich bin völlig auf dem Holzweg und das was ich mache ist falsch.
    In unseren Userprofilen gibt es eine Skillabfrage, die jeder User von Hand und eigener einschätzung ausfüllen kann, siehe hier: externer Link unter dem Punkt SKILL.

    Ich versuche die ganze Zeit vergeblich alle Skills zusammen zu rechnen und damit einen "durchschnitt" zu erhalten und der sollte dann bei den Shooterskills bei "Gesamt" zu sehen sein, nur kommt da immer 0 raus.

    Und so habe ich das ganze versucht:
    $skillzusammena = array($skill1, $skill2, $skill3, $skill4, $skill5, $skill6, $skill7);
    $skillzusammenb = array_sum($skillzusammena);
    $skillzusammen  = round(100 * $skillzusammenb ,2);


    skillzusammen währe dann das ergebniss, sollte es zumindest traurig
    Ob das jetzt alles so richtig ist weis ich nicht, habe das aus einer anderen berechnung aber es zeigt halt immer 0 wie man sieht.
    Ich hoffe das mir jemand helfen kann.

    Danke im voraus und noch einen schönen So. Abend

    betroffene Homepage: externer Link
    Schau mich nicht in diesem Ton an, ich hab nen Tinnitus im Auge, ich seh nur Pfeifen.
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Revolution Hall Of Fame
    Registriert seit
    14.08.2006
    Beiträge
    1.688
    Beitragswertungen
    109 Beitragspunkte
    Durchschnitt ist ja bekanntlich Summe durch Anzahl, also so:


    $skillzusammena = array($skill1, $skill2, $skill3, $skill4, $skill5, $skill6, $skill7);
    $skillzusammenb = array_sum($skillzusammena);
    $skillzusammen  = round(($skillzusammenb/count($skillzusammena)) ,2);



    Was steht in den Variablen $skillX, nur eine Zahl oder ein String?
    Kreativ, modern, Conversion und Usability optimiert
    individuelles Webdesign für ein optimales Erscheinungsbild
    404studios
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    google.de Mitglied
    Registriert seit
    26.01.2012
    Beiträge
    352
    Beitragswertungen
    33 Beitragspunkte
    naja erstmal ist das Syntaktisch so Korrekt. Einziges Manko was ich habe ist das du so keinen Durchschnitt berechnest sondern eine Summe ohne Hintergrund. Für den Durschnitt müsstest du noch durch die Gesamtanzahl teilen. Danach dann runden und das Ergebnis müsste richtig sein. Warum du aber * 100 rechnst kann ich dir leider nicht sage, könnte ich mir höchstens erklären wenn du den User Eingaben von 1-10 machen lässt und das dann auf 100 % Hochrechnen willst.

    Um dir bei deiner Fehlersuche ein wenig unter die Arme zu greifen.
    Lass dir alles ausgeben auch zwischenergebnisse.
    Werden die $skill1 - $skill7 richtig asugegeben, wie siehts mit $skillzusammenb aus, zeigt er das richtige Ergebniss an und lass dir ruihg auch mal das komplette $skillzusammena Array ausgeben.

    Noch ein letzter Tipp der dir später bei etwas größeren Sachen helfen wird, benutze eindeutige Namen. Ich habe mir da die Kamelnotation angewöhnt und kann sie jedem nur empfehlen.
    Bsp.:
    $SkillGesamtArray = $skillzusammena;
    $SkillGesamtSum = $skillzusammenb;
    $SkillGesamtRoundet = $skillzusammen;

    ab das ist jedem selbst überlassen.
    Schönen Abend noch.
    Kein Support per PN!
    Wenn ich zitiere ist dies KEIN Angriff auf die Person!
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    orsnipe Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    425
    Beitragswertungen
    11 Beitragspunkte
    Ich danke für eure Antworten.
    Bin schon mal ungemein beruhigt das ich nicht zu falsch war lächeln

    Jeder User kann in der Profiledit in entsprechendem Feld eine Zahl zwischen 1 und 100 eingeben, wobei die Zahl den selbst geschäzten wert in % angibt.
    zb: Sniperskill: 85 = 85%
    Die Zahl die der User im edit eingibt und speichert wird im Profil wiedergegeben (Zahlen stimmen, hab ich schon getestet) und ergeben dann die vielen Balken da.
    Nun sollten die Eingegebenen werte zusammen gezählt werden um aus den verschiedenen % sowas wie einen durchschnitt zu ermitteln, und genau dies schlug bis jetzt fehl.
    Ob man das jetzt mit deer 100 rechnet weis ich nicht, wie gesagt, ich hatte mich an einer anderen aber ähnlichen berechnung orientiert.

    also:
    skill1, skill2, und so weiter sind die werte die man einträgt und welche auch korekt angezeigt werden (siehe Profil)
    aus diesen werten sollte skillzusammen werden um einen durchschnitt zu erhalten.

    @ Revolution
    werd das gleich mal testen.

    EDIT:
    geht immernoch nicht, es steht wie man bei gesamt sieht immernoch eine 0 da


    Zuletzt modifiziert von 0rsn1p3*dlx* am 15.04.2012 - 22:06:24
    Schau mich nicht in diesem Ton an, ich hab nen Tinnitus im Auge, ich seh nur Pfeifen.
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    Revolution Hall Of Fame
    Registriert seit
    14.08.2006
    Beiträge
    1.688
    Beitragswertungen
    109 Beitragspunkte
    Dann geh mal Schritt für Schritt vor, lass dir z.B.
    die Array Summe per Print oder echo wiedergeben.

    Überprüf ggf. ob deine Skill Variablen vorhanden sind, und auch einen Inhalt haben.
    Kreativ, modern, Conversion und Usability optimiert
    individuelles Webdesign für ein optimales Erscheinungsbild
    404studios
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    orsnipe Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    425
    Beitragswertungen
    11 Beitragspunkte
    so, dann auf ein neues :/
    Hab jetzt mal bisl rumgetestet und gefummelt aber nur mit geringem erfolg.

    Ob alle richtig ist weis ich nicht und ob die abfragen stimmen ... hmm ... bin ich Überfragt, bin da eher leihe aber ich versuch mein bestes lächeln

    in der user_details.php frage ich ab:

    $sniperskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);
    $medicskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);
    $engineerskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);
    $reconskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);
    $teamplayskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);
    $taktikskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);
    $komandoskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);


    diese wiederum versuche ich durch die oben gezeigte berechnung zu addieren und zu teilen (ob das so geht oder stimmt weis ich nicht) um einen durchschnitt zu erhalten.
    das sieht dann so aus:

    $skillzusammena = array($sniperskill, $medicskill, $engineerskill, $reconskill, $teamplayskill, $taktikskill, $komandoskill);
    $skillzusammenb = array_sum($skillzusammena);
    $skillzusammen  = round(($skillzusammenb/count($skillzusammena)) ,2);


    im array der php gebe ich dann alles so aus:

    'SNIPERSKILL' => $sniperskill,
    'MEDICSKILL' => $medicskill,
    'ENGINEERSKILL' => $engineerskill,
    'RECONSKILL' => $reconskill,
    'TEAMPLAYSKILL' => $teamplayskill,
    'TAKTIKSKILL' => $taktikskill,
    'KOMANDOSKILL' => $komandoskill,
    	
    'SKILLZUSAMMEN' => $skillzusammen,


    Nach eurer Hilfe und mit ein wenig testen und so weiter Zeigt er jetzt bei Gesamt eine Summe an: 71%
    Das aber stimmt nicht ganz, denn wenn man alle Werte addiert und dann durch die 7 Skillpunkte teilt, erhällt man ein anderes Ergebnis. (oder sehe ich das falsch?)
    Ohne die abfrage des 1. Codeschnipsels oben erhalte ich immer nur 0, daher, ich weis nicht ob die abfrage da so stimmt.
    Schau mich nicht in diesem Ton an, ich hab nen Tinnitus im Auge, ich seh nur Pfeifen.
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    google.de Mitglied
    Registriert seit
    26.01.2012
    Beiträge
    352
    Beitragswertungen
    33 Beitragspunkte
    nocheinmal bitte lasse dir die Zwischenergebnisse ausgeben nur so Debuggt man richtig.

    Wir können dir nicht sagen ob die 77% richtig sind da wir nicht Wissen aus welchen Werten er diesen Wert zusammen setzt.


    Edit: hab ebend mir die Mysql Abfragen mal angeguckt. Die sind humbuck. Was möchtest du damit aussagen.

    $sniperskill = db_result(db_query("SELECT COUNT(*) FROM prefix_user"),0);


    Damit zählst du die alle Einträge in prefix_user.

    Wie heißen die SPalten die deine Werte beinhalten?


    Zuletzt modifiziert von google.de am 16.04.2012 - 15:40:34
    Kein Support per PN!
    Wenn ich zitiere ist dies KEIN Angriff auf die Person!
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    orsnipe Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    425
    Beitragswertungen
    11 Beitragspunkte
    Steht oben, alles mit skill ist jeweils eine spalte in die man was eintragen kann (zahlen von 0 - 100) diese stehen dann auch so in der datenbank.

    Wie oben geschrieben habe ich nicht wirklich den totalen plan von dem was ich da abgefragt habe, habe aber nun gesehen das er mir die Useranzahl angezeigt hat.

    Die Spalten: sniperskill, medicskill ... und so weiter, stehen alle genauso wie du sie hier siehst in der DB in der ic1_user

    Aus den Zahlen die die User da Eintragen möchte ich pro User den Durchschnitt errechnen bzw. Anzeigen lassen.
    Ich denke das die berechnung selber stimmt siehe:
    $skillzusammena = array($sniperskill, $medicskill, $engineerskill, $reconskill, $teamplayskill, $taktikskill, $komandoskill);
    $skillzusammenb = array_sum($skillzusammena);
    $skillzusammen  = round(($skillzusammenb/count($skillzusammena)) ,2);


    Was mir fehlt ist die Abfrage die der Berechnung sagt:
    sniperskill = 85
    medicskill = 80

    Wenn ich die Abfrage habe sollte es denke ich alles gehen.
    Sorry das ich auf dem gebiet der PHP nicht so bewandert bin aber ich versuche so viel wie möglich selbst zu machen und mich nicht einfach nur hier hin zu setzen und zu sagen: he, schreibt mir mal den CODE.
    Aber ich danke trozdem für Deine Hilfe und ich Teste weiter lächeln werde die richtige Abfrage schon noch finden lächeln
    Schau mich nicht in diesem Ton an, ich hab nen Tinnitus im Auge, ich seh nur Pfeifen.
    0 Mitglieder finden den Beitrag gut.
  9. #9
    User Pic
    google.de Mitglied
    Registriert seit
    26.01.2012
    Beiträge
    352
    Beitragswertungen
    33 Beitragspunkte
    deine Abfrage müste wie folgt lauten:

    $sniperskill = db_query('Select SNIPERSKILL,MEDICSKILL, from prefix_user where id="'.$UserId.'"');
    $sniperskill = mysql_fetch_assoc($sniperskill);


    $UserId beinhaltet die Userid die müsstest du natürlich Wissen um den User auch die richtigen Werte zuweisen zu können bzw. diese abzufragen.
    Die Spalten müssen aber genau so geschreiben werden wie sie in der DB stehen also mit beachtung der Groß und Kleinschreibung.

    oder du Fragst gleich alles ab:
    $Skills = db_query('Select SNIPERSKILL, MEDICSKILL, ENGINEERSKILL, RECONSKILL, TEAMPLAYSKILL, TAKTIKSKILL, KOMANDOSKILL from prefix_user where id="'.$UserId.'"');
    $row = db_fetch_object($Skills );


    Die Werte fragst du dann in der Form ab:
    $row->SNIPERSKILL;
    $row->MEDICSKILL;
    etc..


    Zum Thema db_result hab noch nie was davon gehört und habe ebend mal in php.net nachgeschaut diese Funktion gibt es nicht. Deshalb wunderst es mich woher du das hast.


    Zuletzt modifiziert von google.de am 16.04.2012 - 17:12:52
    Kein Support per PN!
    Wenn ich zitiere ist dies KEIN Angriff auf die Person!
    0 Mitglieder finden den Beitrag gut.
  10. #10
    User Pic
    orsnipe Mitglied
    Registriert seit
    19.06.2008
    Beiträge
    425
    Beitragswertungen
    11 Beitragspunkte
    Muss Dich leider Enttäuschen, hab das so nicht hinbekommen traurig
    Konnte es aber anders (vieleicht nicht ganz so sauber) lösen.
    siehe:

    'SKILLS' => @db_result(db_query("Select (SNIPERSKILL + MEDICSKILL + ENGINEERSKILL + RECONSKILL + TEAMPLAYSKILL + TAKTIKSKILL + KOMANDOSKILL) /7,0 as foo from prefix_user where id ='".$uid."'"),0),



    So Funktioniert es ganz gut und bis jetzt auch ohne Probleme (sehe zumindest keine).
    Einziges Problem, ich finde keine möglichkeit die Kommastelle auf max. 2 Stellen zu kürzen.
    Schau mich nicht in diesem Ton an, ich hab nen Tinnitus im Auge, ich seh nur Pfeifen.
    0 Mitglieder finden den Beitrag gut.
  11. #11
    User Pic
    Lord|Schirmer Administrator
    Registriert seit
    21.03.2007
    Beiträge
    7.634
    Beitragswertungen
    1193 Beitragspunkte
    number_format


    $formatierte_nummer = number_format($alte_nummer, 2, '.', '');
    rules :: doku :: faq :: linkus
    0 Mitglieder finden den Beitrag gut.
  12. #12
    User Pic
    IRvD Mitglied
    Registriert seit
    30.03.2010
    Beiträge
    460
    Beitragswertungen
    31 Beitragspunkte
    Ich steig hier irgendwie kaum durch!
    Sorry wenn ich das nochmal aufmische hier!

    In der user_details.php habe ich im array dieses hier gemacht:

    'GESAMTSKILL' => $gesamtskill,


    Addiert und Geteilt sollen 5 Skills:
    'SNIPERSKILL' => $sniperskill,
    'MEDICSKILL' => $medicskill,
    'RECONSKILL' => $reconskill,
    'TAKTIKSKILL' => $taktikskill,
    'TEAMPLAYSKILL' => $teamplayskill,


    Wo genau muss ich die Befehle nun einfügen ? Bin grad total verwirrt sry!

    In der userdetails.htm habe ich das bereits so:

      <tr>
        <td width="114" class="Pnorm" style="color:#0078FF;" height="25" align="left" valign="middle"><img src="include/images/userdetails/skill.png" border="0" height="16" width="16" align="absmiddle"> Gesamt</td>
        <td width="298" class="Pmite" height="25" align="left" valign="middle" background="include/images/userdetails/prozentbg.png" style="padding-left:7px; padding-right:4px;"><div style="min-width: 1px; width:{GESAMTSKILL}; height:7px; background:#232323 url(include/images/userdetails/skillbalken.png) repeat scroll 0% 0% ; text-align: right";></div></td>
        <td width="38" class="Pnorm" height="25" align="center" valign="middle"><div style="color:#ccc; height:16px; text-align:center";>{GESAMTSKILL}</div></td>
      </tr>



    Betroffene Homepage: u360.irvd-website.de/index.php?user-details-2
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu Fehlersuche und Probleme

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten