 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
03.07.2003, 16:31
|
#1
|
|
TP-Veteran
Registriert seit: Mar 2001
Ort: wein4tel (ö)
|
mehrere zufallsbilder ohne wiederholung
hi, leute,
ich möchte auf einer seite drei verschiedene bilder zufällig aus einem verzeichnis aufrufen lassen. es soll aber kein bild zwei-/dreimal angezeigt werden.
ich hab ein brett vorm kopf und komm net ganz weiter
so weit bin ich:
PHP-Code:
$verz = opendir ('blabla');
$i = "0";
while ($file = readdir ($verz)) {
if (!is_dir($file)) {
$i++;
}
}
closedir($verz);
$bild1 = rand(1,$i);
$bild2 = rand(1,$i);
// in diesem fall kann bild2 schon dasselbe sein wie bild1
danke für eure hilfe
|
|
|
03.07.2003, 17:23
|
#2
|
|
Registered User
Registriert seit: Feb 2002
|
.
Geändert von Radoo.de (16.10.2003 um 04:56 Uhr).
|
|
|
03.07.2003, 17:44
|
#3
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
öm. ohne ins philosophische abschweifen zu wollen:
bilder in ein array lesen,
dann in einer schleife die als abbruchkriterium deine max angezeigten Bilder beinhalten soll...
array zählen,
randomizen
bild aus array mit der random-nummer holen
die array-zelle löschen.
also
PHP-Code:
while($i < $anzahl)
{
$num = count(bildarray);
(den seed vorher - hab den befehl grad net zur hand)
$randnr = rand(1,$num);
tuwas mit... $bild[$randnr];
unset($bild[$randnr];
$i++;
}
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
03.07.2003, 17:57
|
#4
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
@LF: ohne ins rechthaberische abweichen zu wollen  :
Er möchte ein Zufallsbild, nicht alle Bilder in zufälliger Reihenfolge...
EDIT
ARRGGH! Vergiss es. Falsch gelesen...
[edit2]Wäre nicht $randnr=-1;while( ! bild[randnr] ) $randnr = rand(1,$num); besser?[/edit2]
Geändert von webmichl (03.07.2003 um 18:02 Uhr).
|
|
|
03.07.2003, 18:32
|
#5
|
|
TP-Specialist
Registriert seit: Jan 2002
Ort: TP/Dynamik
|
deine lösung versteh ich jetzt aber net...
tu - solang es das bild mit der zufälligen nummer nicht gibt - eine neue nummer generieren?
verhindert ja wieder nicht, dass zufällig ein bild doppelt angezeigt wird. oder gehört da noch mehr dazu?
__________________
Gehelft? Hier kannst du dich bedanken.
mike
|
|
|
03.07.2003, 18:58
|
#6
|
|
TP-Special Mod
Registriert seit: Jun 2001
Ort: 8°21' O 49°1' N
|
Sollte ne Ergänzung zu deinem Script sein...sorry
Das unset löscht doch den Array-Eintrag. Bei deinem Script würde zwar nix doppelt, aber evtl bei einem Bild gar nix angezeigt
|
|
|
03.07.2003, 22:33
|
#7
|
|
TP-Senior
Registriert seit: Mar 2001
Ort: Cottbus
|
ich hatte dasselbe problem. bei wenigen bildern (bei vielen liesse die geschwindigkeit drastisch nach, es wäre zu umständlich) lässt sich ganz einfach eine schleife einrichten, die bei wiederholung einfach nochmal ein zufallsbild zieht.
mein beispiel, direkt übernommen (hab bilder mit dem namen 1 bis 27.jpg im verzeichnis). du müsstest das system dann auf deine automatisch ausgelesenen dateinamen ausweiten:
PHP-Code:
<?
mt_srand((double)microtime()*1000000);
$bild1= mt_rand(1, 27);
mt_srand((double)microtime()*1000000);
$bild2= mt_rand(1, 27);
while($bild2==$bild1){
mt_srand((double)microtime()*1000000);
$bild2= mt_rand(1, 27);
}
mt_srand((double)microtime()*1000000);
$bild3= mt_rand(1, 27);
while($bild3==$bild1 || $bild3==$bild2){
mt_srand((double)microtime()*1000000);
$bild3= mt_rand(1, 27);
}
?>
ist sicherlich nicht die beste möglichkeit, aber für diesen kleinen zweck war es für mich als php-anfänger das einfachste.
tommy-p
__________________
Phantasie ist wichtiger als Wissen,
denn Wissen ist begrenzt.
Geändert von tommy-p (03.07.2003 um 22:37 Uhr).
|
|
|
04.07.2003, 11:45
|
#8
|
|
TP-Veteran
Registriert seit: Mar 2001
Ort: wein4tel (ö)
|
danke für eure antworten. die idee mit dem array wars, die mich auf die richtige spur gebracht hat.
hier nun das funktionierende script:
PHP-Code:
$verz = opendir ('blabla');
$bildarray = array();
while ($file = readdir ($verz)) {
if (!is_dir($file)) {
array_push($bildarray, $file);
}
}
closedir($verz);
$rand_var = array_rand($bildarray, 3);
for($x = 0; $x < count($rand_var); $x++){
echo "<img src=\"blabla/$bildarray[$rand_var[$x]]\"><p>;
}
thx nochmals 
|
|
|
15.07.2003, 01:07
|
#9
|
|
Registered User
Registriert seit: Feb 2002
|
.
Geändert von Radoo.de (17.10.2003 um 22:38 Uhr).
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:16 Uhr.
|
 |