Zufallseintrag mittel "?" - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von Tobias (112 Beiträge) am Sonntag, 29.Juni.2003, 01:49.
    Zufallseintrag mittel "?"

      Hallo Sander,

      <perl>
      get "id == ?", "links";
      out "$links_url";
      <perl>
      

      Meine Datenbank "links" hat 4 Einträge. Mit obigem Code bekomme ich immer nur den ersten Eintrag geliefert. Ich weiss nicht, woran es liegt.

      Mein anderer Versuch:

      <perl>
      

      init "links";
      out "Die Datenbank <i>links</i> enthält $_amount_all Datensätze. <br><br>";
      

      $random_id = int(rand($_amount_all)) + 1;
      out "Die Zufallszahl ist $random_id <br><br>";
      

      @all_ids = ();
      get "id == *", "links";
      while (get_next("links")){
      out "Derzeitige ID ist $_id <br><br>";
      push (@all_ids, $_id);
      }
      $listsize = @all_ids;
      while ($listsize != 0){
      out "$all_ids[listsize-1], ";
      $listsize -= 1;
      }
      

      out "<br><br><br>";

      get "id == $all_ids[$random_id - 1]", "links";
      $randomlink_url = "$links_url";
      out "Gewählter Zufallseintrag: $randomlink_url <br><br>";
      </perl>
      

      Ergebnis ist das hier:

      [schnippschnapp]
      Die Datenbank links enthält 4 Datensätze.

      Die Zufallszahl ist 1

      Derzeitige ID ist 2

      Derzeitige ID ist 3

      Derzeitige ID ist 4

      Derzeitige ID ist 5

      5, 5, 5, 5,

      Gewählter Zufallseintrag: http://www.spiegel.de
      [/schnippschnapp]

      Warum schiebt das push immer nur den Wert "5" in die Liste, wo doch innerhalb der Schleife die IDs richtig durchgezählt werden? Es müsste doch dann "2, 3, 4, 5, " angezeigt werden?

      Hilfe! Ich komme nicht weiter...

      Danke,
      Tobias


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Tobias (112 Beiträge) am Sonntag, 29.Juni.2003, 01:49.
    Zufallseintrag mittel "?"

      Hallo Sander,

      <perl>
      get "id == ?", "links";
      out "$links_url";
      <perl>
      

      Meine Datenbank "links" hat 4 Einträge. Mit obigem Code bekomme ich immer nur den ersten Eintrag geliefert. Ich weiss nicht, woran es liegt.

      Mein anderer Versuch:

      <perl>
      

      init "links";
      out "Die Datenbank <i>links</i> enthält $_amount_all Datensätze. <br><br>";
      

      $random_id = int(rand($_amount_all)) + 1;
      out "Die Zufallszahl ist $random_id <br><br>";
      

      @all_ids = ();
      get "id == *", "links";
      while (get_next("links")){
      out "Derzeitige ID ist $_id <br><br>";
      push (@all_ids, $_id);
      }
      $listsize = @all_ids;
      while ($listsize != 0){
      out "$all_ids[listsize-1], ";
      $listsize -= 1;
      }
      

      out "<br><br><br>";

      get "id == $all_ids[$random_id - 1]", "links";
      $randomlink_url = "$links_url";
      out "Gewählter Zufallseintrag: $randomlink_url <br><br>";
      </perl>
      

      Ergebnis ist das hier:

      [schnippschnapp]
      Die Datenbank links enthält 4 Datensätze.

      Die Zufallszahl ist 1

      Derzeitige ID ist 2

      Derzeitige ID ist 3

      Derzeitige ID ist 4

      Derzeitige ID ist 5

      5, 5, 5, 5,

      Gewählter Zufallseintrag: http://www.spiegel.de
      [/schnippschnapp]

      Warum schiebt das push immer nur den Wert "5" in die Liste, wo doch innerhalb der Schleife die IDs richtig durchgezählt werden? Es müsste doch dann "2, 3, 4, 5, " angezeigt werden?

      Hilfe! Ich komme nicht weiter...

      Danke,
      Tobias

     Antworten

    Beitrag von Tobias (112 Beiträge) am Sonntag, 29.Juni.2003, 02:32.
    Re: Zufallseintrag mittel "?"

      Bezüglich meines Problems:

      http://baseportal.de/baseportal/baseportal/forum&wcheck=1&Pos=8196

      Kann es sein, dass $_id jedesmal innerhalb der while Schleife nur durch eine "shallow copy" in meinem Array abgelegt wird?

      Christoph, wie mache in baseportal eine "deep copy"?

      Geht sowas hier in baseportal?

      use Storable qw(dclone);
      @someArray = dclone(\@anotherExistingArray);
      

      Gruß,
      Tobias

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Sonntag, 29.Juni.2003, 10:20.
    Re: Zufallseintrag mittel "?"

      mhm - so richtig kann ich auf die Schnelle das jetzt nicht gedanklich nachvollziehen - aber ich hab mal vor langer Zeit ein ähnliches Problem mit der Aufeinanderfolge von Ids gehabt (zum Blättern bei gefilterten Datenmengen).
      Das hab ich damals so gelöst:

      $db1 = "meinedb";
      $filter_link = "flk=$flk&fkon=$fkon&fort=$fort&query=$query";
      

      get "feld1~=$flk&feld2~=$fkon&feld3~=$fort", "$db1", "von_bis"; #gefilterte ds-Menge holen (f-vars werden in url bzw. per get übergeben)
      $cnt_ds = 0;
      while (get_next("von_bis")){
      $h_dsnr{$cnt_ds} = $_id; # hash mit Schlüsselwert Zähler - Wert Id
      $cnt_ds++;
      }
      %h_idnr = reverse (%h_dsnr); # hash umkehren, damit Ids als Schlüssel da sind
      

      if ($dsnr ne ""){ # url-bzw. Form-Parameter auswerten und modifizieren
      $dsn = $h_dsnr{$dsnr}; # wenn dsnr übergeben wurde
      }elsif ($dsn ne ""){
      $dsn = $dsn;  # wenn dsn übergeben wurde
      }
      get "Id==!$dsn", "$db1", "einzel"; # Einzeldatensatz holen
      $akt_dsn = $h_idnr{$dsn}; # akt. Datensatznr. belegen
      #
      $l_vor = $akt_dsn-1; # Zahl für dsnr f. Blätterlink belegen zum zurückblättern
      $l_weiter = $akt_dsn+1; # Zahl für dsnr f. Blätterlink belegen zum vorblättern
      #
      
      ....
      Müsstest du doch eigentlich was anfangen können mit, wenn du dann noch ne Zufallszahl als Ganzzahl aus der Menge der gefundenen Datensätze nimmst und dann diesen einen holst
      Vielleicht hilfts ja als Gedankenanstoss....
      Ruben

     Antworten

    Beitrag von Tobias (112 Beiträge) am Sonntag, 29.Juni.2003, 14:17.
    Re: Zufallseintrag mittel "?"

      Hallo an alle fleissigen Helferlein,

      es war gestern vielleicht doch etwas zu spät geworden, so dass ich aus einem Id ein id gemacht habe... Danke Sander!

      mit der zweizeiligen Version klappt's prima.

      Danke an alle :-) baseportal rocks!

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Sonntag, 29.Juni.2003, 13:18.
    Re: Zufallseintrag mittel "?"

      Ich habe mir den Rest jetzt nicht angeschaut, kann dir aber sagen das man so korrekt einen zufälligen Datenasatz aus der DB holt.

      <perl>
      get "Id==?","links";
      out "$links_url";
      </perl> 
      

      Wenn nur das dein Problem ist? ;) (id != Id)

     Antworten

    Beitrag von Tobias (112 Beiträge) am Sonntag, 29.Juni.2003, 14:11.
    Re: Zufallseintrag mittel "?"

      "ouch!" :-) Ich werd's gleich mal probieren...

      Das Problem mit shallow version deep copy beschäftigt mich aber dennoch, vielleicht auch nur aus Interesse. Wie löst man sowas in baseportal? Christoph?

      liebe Sonntagsgrüße,
      Tobias

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Sonntag, 29.Juni.2003, 19:51.
    Re: Zufallseintrag mittel "?"

      Wenn ich nur wüsste was ein "shallow copy" & ein "deep copy" ist, dann könnte ich Dir vielleicht sagen ob es sowas in baseportal gibt ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Sonntag, 29.Juni.2003, 14:12.
    Re: Zufallseintrag mittel "?"

      das ist ganz einfach:
      get "sort=?","dbname";
      

      Sander

     Antworten


     
 Liste der Einträge von 36750 bis 36900:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!