Patrick: Shuffle in PHP

Was habe ich hier falsch gemacht. Möchte in meiner Navigation die Elemente in einer Zufälligen Reihenfolge ausgeben, bekomme aber immer eine Fehlermeldung.

$abf=mysql_query("SELECT * from [...]",$link);
$anzahl=mysql_num_rows($abf);
while ($anz=mysql_fetch_array($abf))
shuffle($abf);
{
print"[...]";
}

Danke.

  1. Hi,

    Was habe ich hier falsch gemacht. Möchte in meiner Navigation die Elemente in einer Zufälligen Reihenfolge ausgeben, bekomme aber immer eine Fehlermeldung.

    und die sollen wir jetzt erraten?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      Was habe ich hier falsch gemacht. Möchte in meiner Navigation die Elemente in einer Zufälligen Reihenfolge ausgeben, bekomme aber immer eine Fehlermeldung.

      und die sollen wir jetzt erraten?

      Cheatah

      »»
      Hmm, komisch, hatte den Code mit eingegeben, jetzt taucht er hier nicht auf, also nochmal:
      $abf=mysql_query("SELECT * from blabla",$link);
      shuffle($abf);
      $anzahl=mysql_num_rows($abf);
      while ($anz=mysql_fetch_array($abf))
      {
      $teil=explode(" ",$anz[typ]);
      print"...";
      }

      1. Hi,

        Hmm, komisch, hatte den Code mit eingegeben, jetzt taucht er hier nicht auf, also nochmal:

        den Code hatten wir schon in Deinem ersten Posting, nur die Fehlerbeschreibung war unvollständig. Du hast beispielsweise gesagt, es käme eine Fehlermeldung, diese aber nicht angegeben.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Fehler der kommt ist der folgende:
          Warning: shuffle() expects parameter 1 to be array, resource given

          1. Hi,

            Fehler der kommt ist der folgende:
            Warning: shuffle() expects parameter 1 to be array, resource given

            siehst Du, schon wird's einfach:

            | while ($anz=mysql_fetch_array($abf))
            | shuffle($abf);

            Du fütterst die Funktion mit der falschen Variable.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
  2. Hi,

    $abf=mysql_query("SELECT * from [...]",$link);
    shuffle($abf);

    Was shufflest Du denn da?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    1. Also ich komme nicht weiter, hier mal das Original ohne Shuffle:

      $abf=mysql_query("SELECT * from profil where kfz='skoda'and aktivierung='0' and freigabe='ja'",$link);
      while ($anz=mysql_fetch_array($abf))
      {
      print"
      ...

      Hier werden jetzt Profile Selektiert, und diese sollen eben Gewürfelt werden.

      Jedes Profil enthält Daten wie Name, Typ, Datum etc.

      Es werden eben z.B. die Profile 1,5,6,8,9 ausgewählt und ausgegeben sollen Sie eben nicht in dieser Reihenfolge, sondern z.B. 5,9,8,1,6

      Vielen Dank

      1. Hi,

        Also ich komme nicht weiter,

        das wirst Du, wenn Du MudGuards Frage beantwortest. Und antworte nicht, was Du glaubst, sondern was wirklich der Fall ist.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Also ich komme nicht weiter,

          das wirst Du, wenn Du MudGuards Frage beantwortest. Und antworte nicht, was Du glaubst, sondern was wirklich der Fall ist.

          Cheatah

          Das erste Feld im Datensatz ist wie üblich eine ID und die ausgegebene Reihenfolge ist immer die Selbe. Da ändert sich gar nichts.

          1. Hi,

            Also ich komme nicht weiter,
            das wirst Du, wenn Du MudGuards Frage beantwortest. Und antworte nicht, was Du glaubst, sondern was wirklich der Fall ist.
            Das erste Feld im Datensatz

            ... hat mit der Frage nicht das geringste zu tun. Ändere das Statement in ein beliebiges anderes (gültiges); Dein Problem bleibt identisch, die Lösung hängt von Deiner Antwort auf MudGuards Frage ab. Und davon, dass Du diese Antwort erst einmal selbst suchst - es handelt sich nämlich um die Frage, die Du Dir selbst stellen musst.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Ich weiß ja nicht wo dein Problem liegt? Manchmal habe ich das Gefühl das sich hier einge Leute besonders Toll fühlen?!?!

              Ich habe einfach nur ein paar datensätze und um es einfach zu machen

              Datensatz 1 [1,eee,fff,ttt]
              Datensatz 2 [2,ggg,ttt,zzz]
              Datensatz 3 [3,zzz,lll,ooo]

              usw.

              und ich wil die Dinger einfach nur jedes mal in verschiedener Reihenfolge ausgegeben bekommen. Also nicht jedes mal Nummer 1, dann 2 und dann 3, sondern zufällig 3,1,2 oder 2,1,3 usw.

              1. Hi,

                Ich weiß ja nicht wo dein Problem liegt?

                ich habe kein Problem, sondern Du, und ich versuche Dich dazu zu bringen, dass Du es löst.

                Manchmal habe ich das Gefühl das sich hier einge Leute besonders Toll fühlen?!?!

                Hast Du irgendwie noch weitere Probleme, über die Du reden möchtest?

                Ich habe einfach nur ein paar datensätze und um es einfach zu machen

                Du machst es nicht einfach, sondern komplizierter. Das genaue Aussehen der Datensätze ist *absolut irrelevant* in Deinem Problem. Vergiss wie sie aussehen, und beantworte einfach nur MudGuards Frage. Nicht mehr. *Wir* haben Dein Problem verstanden, Du brauchst es also nicht immer und immer wieder zu erklären. Du bist der einzige, der noch etwas verstehen muss - und zwar indem Du MudGuards Frage beantwortest. Es ist ganz einfach.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
      2. Hi,

        $abf=mysql_query("SELECT * from profil where kfz='skoda'and aktivierung='0' and freigabe='ja'",$link);

        Du wolltest doch eine zufällige Reihenfolge.
        Die hast Du doch schon.
        Du gibst beim SELECT keine Ordnung vor, also sind die Datensätze in zufälliger Reihenfolge.

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        Schreinerei Waechter
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi,

          $abf=mysql_query("SELECT * from profil where kfz='skoda'and aktivierung='0' and freigabe='ja'",$link);

          Du wolltest doch eine zufällige Reihenfolge.
          Die hast Du doch schon.
          Du gibst beim SELECT keine Ordnung vor, also sind die Datensätze in zufälliger Reihenfolge.

          cu,
          Andreas

          Ich weiß ja nicht wie genau ich es noch erklären soll. Sag mir einfach wie ich eine Ordnung vorgeben soll. Die Ausgabe der Datensätze erfolgt bei mir immer in der selben Reihenfolge und sonst nichts.

          1. Hi,

            BTW: TOFU muß auch nicht sein, oder?

            Ich weiß ja nicht wie genau ich es noch erklären soll. Sag mir einfach wie ich eine Ordnung vorgeben soll. Die Ausgabe der Datensätze erfolgt bei mir immer in der selben Reihenfolge und sonst nichts.

            Warum hörst Du nicht auf die Dir gegebenen Empfehlungen? Oder sammelst die Stichworte und schaust im Archiv? Wenn ich es mit den hier verteilten Stichworten probiere kommt bereits beim zweitem Versuch ein Fund hier im Archiv raus und im zweitem Hit steht sogar schon in der _Zusammenfassung_ Deine Lösung!
            Hör' also gefälligst auf zu quengeln und fang' an selber zu denken!

            so short

            Christoph Zurnieden

      3. Hallo Patrick,

        $abf=mysql_query("SELECT * from profil where kfz='skoda'and aktivierung='0' and freigabe='ja'",$link);
        Hier werden jetzt Profile Selektiert, und diese sollen eben Gewürfelt werden.

        neben der Bemerkung von Cheatah -  warum lässt du das würfeln nicht MySql selbst machen? RAND() hilft dir dabei.

        Grüße aus Nürnberg
        Tobias

        1. Hi,

          $abf=mysql_query("SELECT * from profil where kfz='skoda'and aktivierung='0' and freigabe='ja'",$link);
          neben der Bemerkung von Cheatah -  warum lässt du das würfeln nicht MySql selbst machen?

          Macht er doch schon. ;-)

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          Schreinerei Waechter
          Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
          1. Hallo Andreas,

            neben der Bemerkung von Cheatah -  warum lässt du das würfeln nicht MySql selbst machen?
            Macht er doch schon. ;-)

            natürlich - aber der jetzige Query gibt doch immer die gleiche Reihenfolge, oder? Aber vielleicht reicht Patrick das ja auch?

            Grüße aus Nürnberg
            Tobias

            1. Hi,

              natürlich - aber der jetzige Query gibt doch immer die gleiche Reihenfolge, oder?

              nur, wenn sich die Daten nicht ändern.

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. Hi,

                natürlich - aber der jetzige Query gibt doch immer die gleiche Reihenfolge, oder?

                nur, wenn sich die Daten nicht ändern.

                Cheatah

                Genau, der jetzige Query gibt immer die selbe Reihenfolge und genau das soll sich ändern. Randomize bringt meiner ansicht nichts, da ich nicht einen zufälligen Datensatz ausgeben will, sondern natürlich weiterhin alle, eben nur jedesmal in einer anderen Reihenfolge.

                Ich wäre sehr dankbar, wenn mir jemand anhand meines Codefragmentes ein funktionierendes Beispiel für den Shuffel geben könnte. Irgendwie bekomme ich das nicht hin.

                Vielen Dank.

                1. Hi,

                  Randomize bringt meiner ansicht nichts, da ich nicht einen zufälligen Datensatz ausgeben will, sondern natürlich weiterhin alle, eben nur jedesmal in einer anderen Reihenfolge.

                  wo ist der Zusammenhang? Eine Randomisierung hat nichts mit der Anzahl der selektierten Datensätze zu tun.

                  Ich wäre sehr dankbar, wenn mir jemand anhand meines Codefragmentes ein funktionierendes Beispiel für den Shuffel geben könnte. Irgendwie bekomme ich das nicht hin.

                  Deswegen wärst Du sicher noch dankbarer, wenn Du es hinbekommen würdest. Wer immer Dir eine Lösung postet, schadet Dir.

                  Cheatah

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes
              2. Hallo Cheatah,

                natürlich - aber der jetzige Query gibt doch immer die gleiche Reihenfolge, oder?
                nur, wenn sich die Daten nicht ändern.

                ja, natürlich - davon war ich ausgegangen :-)

                Grüße aus Nürnberg
                Tobias

            2. Hi,

              neben der Bemerkung von Cheatah -  warum lässt du das würfeln nicht MySql selbst machen?
              Macht er doch schon. ;-)
              natürlich - aber der jetzige Query gibt doch immer die gleiche Reihenfolge, oder? Aber vielleicht reicht Patrick das ja auch?

              Nicht notwendigerweise.
              Wenn z.B. mal "optimize" angewendet wird, könnte sich das ändern. Oder durch Löschen/Wiedereinfügen.

              cu,
              Andreas

              --
              Warum nennt sich Andreas hier MudGuard?
              Schreinerei Waechter
              Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  3. hallo patrick,

    davon abgesehen dass es als unhöflich angesehen wird, ein posting ohne begrüssung zu starten, wieso machst du es dir so schwer und willst php bemühen? mysql kann dir die ergebnisse schon zufällig ausgeben:

    SELECT * FROM tabelle ORDER BY RAND();

    gruss aus berlin, volker

    1. hallo patrick,

      davon abgesehen dass es als unhöflich angesehen wird, ein posting ohne begrüssung zu starten, wieso machst du es dir so schwer und willst php bemühen? mysql kann dir die ergebnisse schon zufällig ausgeben:

      SELECT * FROM tabelle ORDER BY RAND();

      gruss aus berlin, volker

      Schon einmal Vielen Dank für die Hilfe.

      Ich habe jetzt folgendes Konstrukt,
      bekomme dann aber folgende Fehler:

      $abf=mysql_query("SELECT * from mtm_profil ORDER BY RAND() where kfz='skoda'and aktivierung='0' and freigabe='ja' and premium='ja'",$link);
      $anzahl=mysql_num_rows($abf);
      while ($anz=mysql_fetch_array($abf))
      {
      $teil=explode(" ",$anz[typ]);
      print" ...

      Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource ...
      Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource ...

      1. Hallo Patrick,

        $abf=mysql_query("SELECT * from mtm_profil ORDER BY RAND() where kfz='skoda'and aktivierung='0' and freigabe='ja' and premium='ja'",$link);

        *grmpf* ist es denn sooo schwer einfach mal in das Handbuch zu schauen und mal nachzuschauen, in welcher Reihenfolge die Bestandteile von SELECT stehen müssen?

        Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource ...

        bei einem solchen Fehler ist *immer* mysql_error() zu befragen.

        Grüße aus Nürnberg
        Tobias