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:
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 "?"
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 "?"
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:
Sander
Antworten