Connor: shuffle nur einmal

Ich möchte nur 1x $team1 und $team2 mischen

$team1 = array('eins','zwei','drei','vier');  
$team2 = array('sechs','sieben');

ich versuchte das mit:

  
$max = 4;  
  
while(count($team2) < $max){  
array_push($team2 , 'Freilos');  
}  
  
$mix = 1;  
  
if ($mix == 1){shuffle($team1);}  
  
  
if ($mix == 1){shuffle($team2);}  

Ich hatte da mit select in html so probiert:

  
if ($_POST['submit']) {  
$mix = $_GET['mix']; // da stand die 1 drin  

Nun ist es aber so das beim aktualiesieren meiner Seite immer wieder neu gemischt wird.
Aber es soll nur 1x bei SUBMIT gemischt werden.
Ich hab mich schon doof gesucht

  1. Hi,

    Nun ist es aber so das beim aktualiesieren meiner Seite immer wieder neu gemischt wird.

    Natürlich - weil du dann das Script komplett neu startest, von vorherigen Aufrufen des Scriptes „weiß“ das absolut nichts mehr.

    Aber es soll nur 1x bei SUBMIT gemischt werden.

    Die geshuffleten Daten in einer Session abzulegen, wäre eine Möglichkeit.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Die geshuffleten Daten in einer Session abzulegen, wäre eine Möglichkeit.

      Hallo Chris und danke für deine Antwort zur frühen Stunde :-)

      Mit Sessions hab ich noch nie gearbeitet und betrete damit absolutes Neuland.
      Knannst du mir da weiterhelfen, oder gibt es noch eine andere Möglichkeit die geshuffelten Daten abzuspeichern?

      1. Hi!

        Die geshuffleten Daten in einer Session abzulegen, wäre eine Möglichkeit.
        Mit Sessions hab ich noch nie gearbeitet und betrete damit absolutes Neuland.

        Sessions sind sehr einfach zu handhaben. Das haben schon Millionen vor dir geschafft.

        session_start() an den Script-Anfang stellen (jedenfalls so, dass es vor sämtlichen Ausgaben abgearbeitet wird) und die gewünschten Werte legst du im $_SESSION-Array ab.

        Knannst du mir da weiterhelfen, oder gibt es noch eine andere Möglichkeit die geshuffelten Daten abzuspeichern?

        Jeder Request wird für sich allein abgearbeitet. Er kennt kein Vorher und kein Nachher. Alle benötigten Daten müssen daher aus dem Request zu lesen sein, aus einer externen Datenhaltung abgefragt werden oder beides gemischt werden (Session-ID aus dem Request, Daten dazu aus dem Session-Speicher des Servers).

        Lo!

        1. Erstmal Danke für eure Antworten und Anregungen.

          Leider komme ich mit Sessions nicht zurecht und habe (aus Zeitmangel) mein Problem nun so gelöst:
          Datei: spieler.php

            
          <?php  
          $team1 = array('eins','zwei','drei','vier');  
          $team2 = array('fünf','sechs');  
          ?>  
          
          

          Datei: spieler_mix.php
          Hier include ich die spieler.php und mische die Arrays durch, indem ich diese Datei nur 1x aufrufe.
          Ergänze hier auch $team2 automatisch mit Freilosen wenn kleiner 4 Values.
          Danach schreibe ich alles in eine neue Datei:

          spieler_akt.php

            
          $team1= array('vier','zwei','drei','eins');  
          $team2= array('Freilos','Freilos','fünf','sechs');  
          
          

          Diese benutze ich per include in meinen scripten weiter.

          Vielleicht nicht sehr elegant. Aber es funktioniert.

          Danke nochmal an Euch

          Gruss Connor

          1. Hello,

            Datei: spieler_mix.php
            Hier include ich die spieler.php und mische die Arrays durch, indem ich diese Datei nur 1x aufrufe.
            Ergänze hier auch $team2 automatisch mit Freilosen wenn kleiner 4 Values.
            Danach schreibe ich alles in eine neue Datei:
            Diese benutze ich per include in meinen scripten weiter.

            Dann hast Du Dir ein neues Problem geschaffen, das Du dringend abstellen musst:
            http://aktuell.de.selfhtml.org/artikel/programmiertechnik/dateisperren/

            Und außerdem benötigt diese Datei dann auch noch eine Möglichkeit, mit der Du feststellen kannst, wann sie denn das letzte Mal gemischt wurde.

            Diese Datei steht dann außerdem allen Clients zur Verfügung. Soll das so sein?
            Eine Session-Datei stelt nur dem Client zur Verfügung, der die passende Session-ID dafür hat, also i.d.R. nur einem Client - dem aber ggf. mit mehreren Instanzen.

            Liebe Grüße aus dem schönen Oberharz

            Tom vom Berg

            --
             ☻_
            /▌
            / \ Nur selber lernen macht schlau
            http://bergpost.annerschbarrich.de
            1. Hallo Tom,
              das ganze kann nur ein Admin machen. Das entsprechende Verzeichnis ist mit .htaccess geschützt

              Dann hast Du Dir ein neues Problem geschaffen, das Du dringend abstellen musst:
              http://aktuell.de.selfhtml.org/artikel/programmiertechnik/dateisperren/

              Sorry. aber den Hinweis verstehe ich nicht.

              Und außerdem benötigt diese Datei dann auch noch eine Möglichkeit, mit der Du feststellen kannst, wann sie denn das letzte Mal gemischt wurde.

              Es wird nur 1x gemischt wenn ich einen Button klicke. Hab da auch eine Sicherheitsabfrage

              Diese Datei steht dann außerdem allen Clients zur Verfügung. Soll das so sein?

              Ja. Sehe da keine Probleme da das nur der Admin kann.

              Eine Session-Datei stelt nur dem Client zur Verfügung, der die passende Session-ID dafür hat, also i.d.R. nur einem Client - dem aber ggf. mit mehreren Instanzen.

              Lach. Ich und Sessions. 2 Welten prallen aufeinander

              1. Scheinbar hatte ich einen doppel Post gemacht lt Beat vom 05.11.2010, 23:35. Sorry war mir nicht bewusst.

                Hallöchen. Ich mal wieder :-)

                Ich habe folgendes array das vorher gemischt wurde:

                  
                <?php  
                $player=array(',Freilos',',Freilos',',8',',2',',3',',4','9',',5',',Freilos',',Freilos',',Freilos',',10',',6',',7',',Freilos',',1',)  
                ?>  
                
                

                Nun ist es so das value 0 gegen value 15, value 1 gegen value 14 usw gegenüber gestellt werden.

                Aber: dabei darf es nie dazu kommen das Freilos gegen Freilos spielt.

                Der Name Freilos ist immer gleich.

                Hat jemand eine Idee ?

                1. Hab noch was vergessen :-(

                  im array können 16,32 oder 64 Values drinne sein

                2. Hello,

                  Ich habe folgendes array das vorher gemischt wurde:

                  <?php
                  $player=array(',Freilos',',Freilos',',8',',2',',3',',4','9',',5',',Freilos',',Freilos',',Freilos',',10',',6',',7',',Freilos',',1',)
                  ?>

                  
                  >   
                  > Nun ist es so das value 0 gegen value 15, value 1 gegen value 14 usw gegenüber gestellt werden.  
                    
                  Zeig doch bitte mal, was dabei herauskommen soll.  
                  Was machen die Kommas (Kommata ?) da in den Datenwerten? Hast Du da vielleicht noch Optimierungsbedarf?  
                    
                    
                    
                    
                  Liebe Grüße aus dem schönen Oberharz  
                    
                    
                  Tom vom Berg  
                  ![](http://selfhtml.bitworks.de/Virencheck.gif)  
                    
                  
                  -- 
                   ☻\_  
                  /▌  
                  / \ Nur selber lernen macht schlau  
                  <http://bergpost.annerschbarrich.de>
                  
                  1. Zeig doch bitte mal, was dabei herauskommen soll.
                    Was machen die Kommas (Kommata ?) da in den Datenwerten? Hast Du da vielleicht noch Optimierungsbedarf?

                    Lach. Nein. Ich hab den Fehler auch erst später gesehen. Richtig ist natürlich:

                      
                    $player=array('Freilos','Freilos','8','2','3','4','9','5','Freilos','Freilos','Freilos','10','6','7','Freilos','1',)