mysql-abfrage oder while verkehrt?

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

  • mysql-abfrage oder while verkehrt?

    hiho, bin eben über etwas suche zu diesem geilen forum gelangt.
    hab auch schon paar probs die ich hatte nachgelesen, nur das eine kann ich nicht finden.
    und ich bin auf php auch noch son richtig blutiger anfänger und weis auch nicht so richtig, wonach ich da suchen sollte. also net boese sein wenn das prob schonmal da war.

    ich habe 2 tabellen ('kasse','users').
    in der 'users' stehn halt persönliche daten drin, unter anderem
    halt sein 'nick' und die 'id'.
    in der 'kasse' steht 'id','am'(ist als date),'wert' und die 'uid'.

    ich habe vor, das jeder 'nick', der etwas bezahlt hat in der 'kasse' eingetragen wird.
    ergo wann er('am') was, wieviel('wert') bezahlt hat.
    es soll dann alles in einer tabelle ausgegeben werden,
    links nick|monate....., und eben unter nick, der nick der was bezahlt hat und in den spalten von den monaten die werte.
    der bisherige code sieht so aus.

    PHP-Code:
    <?require"config.php";
    echo "<TABLE border=3>
    <TR><TD width=50><b>Member</b></TD>
    <TD width=50>Januar</TD>
    <TD width=50>Februar</TD>
    <TD width=50>März</TD>
    <TD width=50>April</TD>
    <TD width=50>Mai</TD>
    <TD width=50>Juni</TD>
    <TD width=50>Juli</TD>
    <TD width=50>August</TD>
    <TD width=50>September</TD>
    <TD width=50>Oktober</TD>
    <TD width=50>November</TD>
    <TD width=50>Dezember</TD></TR>";

    $befehl="SELECT users.id,nick,uid,am,wert FROM users,kasse where uid=users.id";
    $ergebnis=mysql_query($befehl);
       while ($row=mysql_fetch_array($ergebnis))
              {echo"<TR>";
              $ex = explode("-", $row[am]);
      echo"<TD width=50>$row[nick]</TD>";
      echo"<TD width=50>"; if($ex[1] == "01"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "02"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "03"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "04"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "05"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "06"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "07"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "08"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "09"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "10"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "11"){echo$row[wert];}echo"</TD>";
      echo"<TD width=50>"; if($ex[1] == "12"){echo$row[wert];}echo"</TD>";
      echo"   </TR>";
      }
      echo"</TABLE>";
    ?>
    so nun habe ich aber das prob, dass er mir jedesmal wenn der benutzer mehere werte in der 'kasse' stehn hat,
    für jeden wert einen neuen <tr> macht.
    er sollte aber für jeden benutzer nur einen <tr> verwenden.
    Zuletzt geändert von Raiser; 17.01.2004, 04:24.

  • #2
    dann solltest du das <tr> einfach aus der while schleife rauslassen. wenn ich dass auf die schnelle richtig gelesen habe, durchlaeufst du die schleife einmal pro wert, oder anders gesacht ist in deiner datenbank pro wert ein row, dass heisst, wenn einer zweimal eingezahlt hat, bekommt $ergebniss auch zwei werte und laueft zweimal durch. also:

    $ergebnis=mysql_query($befehl);
    echo"<TR>";
    while ($row=mysql_fetch_array($ergebnis))
    {
    $ex = explode("-", $row[am]);
    echo"<TD width=50>$row[nick]</TD>";
    echo"<TD width=50>"; if($ex[1] == "01"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "02"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "03"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "04"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "05"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "06"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "07"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "08"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "09"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "10"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "11"){echo$row[wert];}echo"</TD>";
    echo"<TD width=50>"; if($ex[1] == "12"){echo$row[wert];}echo"</TD>";
    }
    echo"</TR></TABLE>";
    ?>

    so sollte es dann gehen.
    hoffe es klappt
    **********
    arkos
    **********

    Kommentar


    • #3
      hmm,

      OffTopic:

      schade, daß mein 'dein code ist suboptimal'-smilie noch nicht fertig ist


      drei tips für dich:
      - du kannst html-code, der nicht wirklich php-code enthält, auch als html-code schreiben, brauchst ihn also nicht per echo ausgeben ... spart vielleicht arbeit und schafft übersicht
      - du kannst sich ähnelnde, sich wiederholende strukturen zusammenfassen, soetwas nennt sich schleife (zb. while, for, ) ... spart vielleicht arbeit und schafft übersicht
      - du kannst viele dinge schon in der datenbank erledigen lassen, in deiner query, so daß du außerhalb nicht mehr an den daten rumbasteln mußt

      dein problem sollte aber schon gelöst sein, oder?

      btw: willkommen in
      diesem geilen forum
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        also wenn ich den <tr></tr> aus der while nehme, was ich auch schon vorher probiert habe,
        bringt er mir den 2. wert aus der 'kasse' ja nicht mehr in den spalten, sonder macht den 2., 3. wert einfach ninten drann.
        ich bin immer noch der meinung, dass entweder die abfrage oder die bedingung der while anders sein muss, nur wie gesagt, ich weiss nicht nach was ich suchen soll, damit ich ans ziel komme.

        Kommentar


        • #5
          Re: mysql-abfrage oder while verkehrt?

          Original geschrieben von Raiser
          er sollte aber für jeden benutzer nur einen <tr> verwenden.
          du möchtest einen gruppenwechsel (in bezug auf den benutzer) programmieren.

          suche danach hier im forum.
          I don't believe in rebirth. Actually, I never did in my whole lives.

          Kommentar


          • #6
            thx wahsaga,

            wahsaga
            du möchtest einen gruppenwechsel (in bezug auf den benutzer) programmieren.
            hab danach gesucht und auch nuetzliche sachen gefunden, die ich noch nicht wusste. nur leider komme ich damit bei mir nicht weiter.

            hatte das mit ner doppelten while(do) und auch mit if´s probiert,
            nur leider komme ich nicht zu dem ergebnis was ich will.

            wenn sich jemand meiner erbarmen koennte und mir das anhand von meinem vorhaben erklaeren wuerde......,

            waere bestimmt auch nen schoenes tut fuer die seite.

            ich mache php/mysql erst seid paar monaten(2)
            und bin bei der sache echt am verzweifeln. fuer jeden andren code hab ich tuts gefunden, bei diesem vielleicht auch (hier im forum), aber da komm ich irgendwie nicht mit klar.

            thx das ich euch so nerve, tut mir auch leid!
            Zuletzt geändert von Raiser; 18.01.2004, 02:36.

            Kommentar


            • #7
              nen nachtrag dzum vorhaben.

              ich denke das der anfangscode schon daneben ist, denn ist gibt ja noch mehr bedingungen.
              fals ich das jetz nicht richtig zerlege nicht gleich schlagen.

              also es muss bei jedem durchlauf geprueft werden, ob der es der selbe
              nick ist (id), wenn ja bedeutet das, selbe zeile(<tr>).
              jetzt muss noch die richtige spalte(am) gefunden werden, wo der eintrag in der tabelle erfolg(wert).
              wenn es mehere eintraege gibt, muesste ja die while schon vorher wissen, welche spalten sie fuellen muss und welche frei bleiben.($ex)

              so jetz hab ich, glaub alles hingeschieben, was noetig ist.
              in sps war ich immer sehr gut, nicht lachen, hab ich mal gelernt.
              nur bei der sache komme ich nicht zum ergebnis, was ich will.
              sorry nochmal wegen nerven, hab aber auch ne absolute blockade
              im kopf.

              Kommentar

              Lädt...
              X