Ankündigung

Einklappen
Keine Ankündigung bisher.

Arrays aus einer Schleife?

Einklappen

Neue Werbung 2019

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

  • Arrays aus einer Schleife?

    Moin Moin, ich bastel grade an einer Schleife, aus der ich Arrays abfragen möchte, bzw die Ausgegebene zahl je Durchgang als Array in die Variable $save einsetzen.

    PHP-Code:
    <?php
    include("con.php"); 

    $count $_POST['count'];
    $sides $_POST['sides'];
    $username $_POST['username'];
    $address $_SERVER['REMOTE_ADDR'];
    // Daten vom User, die noch gebraucht werden :)


    for ($i 1$i <= $count$i++)
     {
       
    $wurf rand(0$sides);
       echo (
    "$i .te Würfel. Du hast eine $wurf geworfen.")
     } 
      
    mysql_query("INSERT INTO Wurfe (Count,Sides,Username,Address) 
                 VALUES (
    $count,$sides,$username,$address)");

    ?>
    wie bekomme ich jetzt also die Ergebnis werte der Jeweiligen Würfe als Abspeicherbare variable bzw. Array?


  • #2
    Hallo,

    meinst du sowas?
    PHP-Code:
    $array = array();

    for (
    $i 1$i <= $count$i++) {
      
    $wurf rand(0$sides);
      echo 
    $i 'te Würfel. Du hast eine ' $wurf ' geworfen.';

      
    $array[] = $wurf;


    echo 
    '<pre>'print_r($array), '</pre>'
    http://hallophp.de

    Kommentar


    • #3
      Hi.

      Ich verstehe nicht genau, was Du willst?! Willst Du bei jedem Schleifendurchgang Werte in einem Array speichern? Oder dauerhaft speichern? Hier hast du erstmal einen link, wie man mit Arrays arbeitet:

      Arrays (PHP-Tutorial)

      Wolf29
      while (!asleep()) sheep++;

      Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

      Kommentar


      • #4
        ich möchte den Array ja nicht Ausgeben, sondern innerhalb der Schleife nur zwischen speichern. Die Ausgabe soll danach mittels einer anderen Datei (die noch nicht existiert) erfolgen.

        Laut deinem Vorschlag würde das ganze dann ja so aus sehen:
        PHP-Code:
        <?php
        include("con.php"); 

        $count $_POST['count'];
        $sides $_POST['sides'];
        $username $_POST['username'];
        $address $_SERVER['REMOTE_ADDR'];
        // Daten vom User, die noch gebraucht werden :)

        $save = array();

        for (
        $i 1$i <= $count$i++)
         {
           
        $wurf rand(0$sides);
           echo (
        "$i .te Würfel. Du hast eine $wurf geworfen."); //danke hab da n Semikolon vergessen :)

           
        $save[] = $wurf;
         } 
          
        mysql_query("INSERT INTO Wurfe (Count,Sides,Username,Address,Save) 
                     VALUES (
        $count,$sides,$username,$address,$save)");

        ?>
        Die Frage ist nun, wenn ich beispeilsweise sage, das die Variablen $count = 4 und $sides = 24 habe, ob die Variable $save['array1,array2,array3,array4'] auch wirklich abgespeichert hat.

        @ Wolf29: danke, werds mir mal durchlesen.

        Kommentar


        • #5
          Was meinst du? Was heißt ob? Natürlich findest du die Werte im Array wieder, wenn du das Script so durchlaufen lässt. Nur, was verstehst du unter abspeichern? Deine Beschreibungen sind leider sehr ungenau.
          http://hallophp.de

          Kommentar


          • #6
            Gomen.
            mit Abspeichern meine ich, das ich die Inhalte so in die Datenbank übernehmen kann, um sie später aus zu lesen.

            Sorry wenn ich ungenau bin.

            Kommentar


            • #7
              Hmm, dann führe die Datenbankabfrage doch gleich innerhalb der Schleife aus:
              PHP-Code:
              for ($i 1$i <= $count$i++)
               {
                 
              $wurf rand(0$sides);
                 echo 
              "$i .te Würfel. Du hast eine $wurf geworfen."//danke hab da n Semikolon vergessen :)

                
              mysql_query("INSERT INTO Wurfe (Count,Sides,Username,Address,Save) 
                           VALUES (
              $count,$sides,'$username','$address',$wurf)") OR die (mysql_error());
               } 
              Oder verstehe ich dich immer noch falsch?
              //danke hab da n Semikolon vergessen
              Keine Ursache, auch die Anderen "Veränderungen" waren Tipps! Zum Beispiel ist es gebräuchlicher, bei echo die runden Klammern wegzulassen. Dies ist nämlich keine Funktion, sondern ein Sprachkonstrukt. Lies dir auch mal Codeoptimierung:Code-Smells - PHP.de Wiki durch und informiere dich außerdem über SQL-Injection!

              Gruß
              http://hallophp.de

              Kommentar


              • #8
                Nunja, die einzelnen Würfe gehören alle zusammen, was heißt, das die in $count beschriebene anzahl anwürfen als eine Variable übergeben werden sollte, heißt $Save sollte die Arrays schon so beinhalten.

                Das ganze ist ja ein Würfel, der mehrfache Würfe zuläßt bzw. Belibig viele Seiten ( $sides ) haben kann udn entsprechend der $count so und so oft geworfen wird.

                Mir hat man beigeputzt dass das in Klammern gehört, wenns auch ohne geht - okai.

                PHP-Code:
                <?php
                include("con.php"); 

                $count $_POST['count'];
                $sides $_POST['sides'];
                $username $_POST['username'];
                $address $_SERVER['REMOTE_ADDR'];
                // Daten vom User, die noch gebraucht werden :)

                $save = array();

                for (
                $i 1$i <= $count$i++)
                 {
                   
                $wurf rand(0$sides);
                   echo 
                $i 'te Würfel. Du hast eine ' $wurf ' geworfen. <br />'
                   
                $save[] = $wurf


                // Ich könnte also jetzt auch die variable Save einfach nochmal samt aller arrays hier echo'n ?

                echo '<pre>' print($save),'</pre>'  ;

                mysql_query("INSERT INTO Wurfe (Count,Sides,Username,Address,Save) 
                             VALUES (
                $count,$sides,$username,$address,$save)") OR die (mysql_error());

                ?>

                Kommentar


                • #9
                  Dann solltest du dein Datenbankdesign noch mal überarbeiten. Du brauchst eine zweite Datenbanktabelle, in der du die einzelnen Ergebnisse der Würfe abspeicherst und über eine ID dem "Wurf" zuordnest. Die Anzahl der Würfe solltest du dann nicht mit abspeichern, da du diese aus der Anzahl der Zeilen in der "Ergebnis"-Tabelle deiner Würfe ermitteln kannst.

                  Normalisierung (Datenbank) – Wikipedia
                  http://hallophp.de

                  Kommentar


                  • #10
                    du könntest auch $var = implode(";",$save) in deine Datenbank speichern. Dann würde Das Feld z.b. so aussehen:
                    Code:
                    5;2;6;6;2;1;2
                    Mit explode(";",$var) kriegst du das dann nachher beim auslesen wieder in die ursprüngliche Form. Das bietet sich aber nur an, falls du keine datenbanksuchen zu den genauen würfeln machen willst, weil mysql mit solchen daten nur indirekt etwas anfangen kann.

                    Kommentar


                    • #11
                      Zitat von Asipak Beitrag anzeigen
                      Dann solltest du dein Datenbankdesign noch mal überarbeiten. Du brauchst eine zweite Datenbanktabelle, in der du die einzelnen Ergebnisse der Würfe abspeicherst und über eine ID dem "Wurf" zuordnest. Die Anzahl der Würfe solltest du dann nicht mit abspeichern, da du diese aus der Anzahl der Zeilen in der "Ergebnis"-Tabelle deiner Würfe ermitteln kannst.

                      Normalisierung (Datenbank) – Wikipedia
                      ephs... okay, der Wikipediaartikel ruft bei mir die Berühmten Fragezeichen überm Kopf hervor.

                      Also laut deinem Vorschlag sollte ich die Ergebnisse der jeweiligen Würfe in die tabelle 'ergebnisse' hauen und jedem wurf dadurch auch eine ID geben (womit ich grade überfragt wäre), die ID dann als referenz zum abruf für ein späteres zugreifen verwenden?



                      Zitat von Buhmann Beitrag anzeigen
                      du könntest auch $var = implode(";",$save) in deine Datenbank speichern. Dann würde Das Feld z.b. so aussehen:
                      Code:
                      5;2;6;6;2;1;2
                      Mit explode(";",$var) kriegst du das dann nachher beim auslesen wieder in die ursprüngliche Form. Das bietet sich aber nur an, falls du keine datenbanksuchen zu den genauen würfeln machen willst, weil mysql mit solchen daten nur indirekt etwas anfangen kann.
                      bedingtnutzbar, da es nachvollziehbar sein soll wieso ein Spieler etwas entsprechendes getan hat, weswegen der Vorschlag mit dem ID-zuteilen mir da doch etwas inniger erscheint, aber danke.

                      Kommentar


                      • #12
                        Zitat von Timestranger Beitrag anzeigen
                        Also laut deinem Vorschlag sollte ich die Ergebnisse der jeweiligen Würfe in die tabelle 'ergebnisse' hauen und jedem wurf dadurch auch eine ID geben (womit ich grade überfragt wäre), die ID dann als referenz zum abruf für ein späteres zugreifen verwenden?
                        Ja!

                        Tabelle: wurf
                        Code:
                        id | seiten | username | ip
                        1  | 6      | ich      | 127.0.0.1
                        2  | ...
                        Tabelle: ergebnisse
                        Code:
                        wurf_id | wurfergebnis
                        1       | 5
                        1       | 4
                        1       | 4
                        2       | 3
                        2       | ...
                        http://hallophp.de

                        Kommentar

                        Lädt...
                        X