Zufallsgrafik
roreh
- sonstiges
Hallo,
ich habe ca 10 verschiedene Grafiken in gleicher Größe, die ich abwechselnd auf meiner Site anzeigen möchte.
Habe vor einiger Zeit irgendwo mal gesehen, daß dies jemand mit einem Aufruf <img src="bild.php" alt="" border="0" align="">
realisiert hat.
Was muß in der .php geschehen?
Kennt jemand ein Script?
Hat jemand eine solche .php?
Viele Grüße Romi.
Hi,
Was muß in der .php geschehen?
es muss per Zufall eine der vorhandenen Grafikdateien ausgewählt, der zugehörige Content-Type-Header generiert und die Datei zurückgeliefert werden. Eigentlich ein Dreizeiler.
Besser wäre es jedoch, wenn die PHP-Datei auf .gif oder .jpg (ne nachdem) enden würde, bzw. zumindest die URL.
Cheatah
So firm bin ich in PHP nun wirklich nicht. Kann mir jemand helfen?
Vielleicht die 3 Zeilen schreiben?
Viele liebe Grüße Romina :o)
Hi,
So firm bin ich in PHP nun wirklich nicht. Kann mir jemand helfen?
darin, so firm in PHP zu werden? Ja, gerne. Du solltest dazu erst mal versuchen, das Problem selbst zu lösen; die auftretenden Hürden samt Deiner Analyse teilst Du uns dann hier mit, so dass wir Dir den Weg zur Lösung auftun können.
Cheatah
also gut, gehen wirs an :o)
Als erstes bräuchte ich ein Verzeichnis, in das ich die Bilder lege.
Ich könnte mir vorstellen, daß es die Programmierarbeit erleichtern würde, wenn ich den Bildern die Namen 0.jpg bis 9.jpg gebe.
Dann müßte ich ein Programm (nennt man das so unter PHP?) schreiben.
Dieses sollte dann folgendes tun:
So, dann waren Sie wieder da, meine Probleme.
1. hab ich keinerlei Ahnung vom Coden in PHP
2. weiß ich nicht wie und in welcher Form die Url übergeben würde.
Zudem handelt es sich um eine HTML-Seite, in man nach meinem Wissen nichts includen kann, oder?
Gruß Romi.
Hi,
also gut, gehen wirs an :o)
genau :-)
Als erstes bräuchte ich ein Verzeichnis, in das ich die Bilder lege.
Ja.
Ich könnte mir vorstellen, daß es die Programmierarbeit erleichtern würde, wenn ich den Bildern die Namen 0.jpg bis 9.jpg gebe.
Ja, vielleicht. Wenn Du alle Dateien eines Verzeichnisses verwenden möchtest, ist die Benamsung aber im Prinzip wurscht. Alternativ kannst Du auch Namen im Script selber hinterlegen; das ist aber wegen der Wartbarkeit vermutlich die schlechteste Lösung.
Dann müßte ich ein Programm (nennt man das so unter PHP?) schreiben.
Man redet meist von einem Script, aber Programm ist nicht falsch.
Dieses sollte dann folgendes tun:
- eine Zufallszahl zwischen 0 und 9 ermitteln
Oder alle vorhandenen Dateien evaluieren und daraus zufällig eine wählen.
- eine Url zur Darstellung der Grafik im Format http://url/verzeichnis/zufallszahl.jpg erstellen.
- die Url als Ergebnis ausgeben???
Das ist eine Variante (Redirect, der Client erfährt eine direkte URL); die andere wäre, den Inhalt Datei direkt auszugeben (dann muss es nicht mal eine URL geben).
- hab ich keinerlei Ahnung vom Coden in PHP
Die Grundlagen zu erlernen, kann ich Dir leider nicht abnehmen. Vielleicht hilft es Dir aber, dass PHP nicht die einzig mögliche Sprache ist - Du kannst alles verwenden, was auf Serverseite stattfindet, also z.B. auch CGI in einer Sprache Deiner Wahl (Perl, Bash, Python...).
- weiß ich nicht wie und in welcher Form die Url übergeben würde.
Das wäre ein HTTP-Header "Location: http://...". Variante B würde einen "Content-Type: image/jpeg" bedingen, da Du ja den Inhalt selbst mit zurückgibst.
Zudem handelt es sich um eine HTML-Seite, in man nach meinem Wissen nichts includen kann, oder?
Ein Include gibt es da auch nicht :-) Die Grafik wird vom Browser separat angefordert - genau wie alles andere, was in irgendeiner Form in einer HTML-Seite eingebettet sein könnte. Es ist ein neuer Request, unabhängig von jedem anderen, und er steht aus Deiner Sicht auch in keinerlei Zusammenhang mit HTML. Das Protokoll HTTP ist kontextfrei.
Nebenbei: Dein Satz ist wahrscheinlich ein bisschen _zu_ pauschal ausgedrückt... :-)
Cheatah
also doch kein 3-Zeiler???
Kann mir also jemand konkreten Code geben?
Hi,
also doch kein 3-Zeiler???
es ist möglich, dieses Problem in drei Zeilen (lass es vier oder fünf werden, jedenfalls quasi als Tippübung) zu lösen. Ob die Lösung dann gut ist, ist eine andere Sache ;-)
Zumindest wird der Code durchaus überschaubar bleiben, selbst wenn er nicht hochoptimiert ist.
Kann mir also jemand konkreten Code geben?
Auf dieser Schiene fahre ich nicht mit, bedaure. So lange Du selbst der Entwickler bleibst, helfe ich Dir beliebig detailliert weiter; aber diese Eigenleistung erwarte ich auch von Dir.
Cheatah
Danke ...
Ich dachte hier Hilfe zu finden, aber offensichtlich kommt hier niemand von seinem hohen Ross runter.
Gott sei Dank gibt es im Web viele Foren, wo man nicht nur Sprüche klopft, sondern bereit ist anderen mit Rat UND TAT zur Seite zu stehen.
Vielen Dank auch. Ich für meinen Teil kann dieses Forum jedenfalls nicht weiter empfehlen.
Das einzig gute hier sind die Reaktionszeiten. Auch wenn die Antworten hier für mich nicht brauchbar bzw. zu verarbeiten sind, denn außer "machs doch selber" kam hier nix weiter.
Gruß Romi.
Hi,
Ich dachte hier Hilfe zu finden,
die bekommst Du auch, solange Du bereit bist, Dir helfen zu lassen. Die "gebt mir"-Philosophie passt aber nicht zu einem Projekt, welches ein "Self" im Namen trägt.
denn außer "machs doch selber" kam hier nix weiter.
Die Aussage war: "Solange Du es selbst machst helfen wir Dir, dass Du es auch schaffst."
Cheatah
hallo
Ich dachte hier Hilfe zu finden
die hast du gefunden
aber offensichtlich kommt hier niemand von seinem hohen Ross runter.
anscheinend will niemand eigeninitiative zeigen
Gott sei Dank gibt es im Web viele Foren,
sowie boards
wo man nicht nur Sprüche klopft
sondern sie auch noch paniert und frittiert
sondern bereit ist anderen mit Rat UND TAT zur Seite zu stehen.
wie hier
Vielen Dank auch.
cheatah lebe hoch
Ich für meinen Teil kann dieses Forum jedenfalls nicht weiter empfehlen.
cheatah hat uns große probleme erspart cheatah unser held
Das einzig gute hier sind
kompetente freundliche leute die die philosophie von selfhtml umsetzen wollen die da lautet die energie des verstehens
die Reaktionszeiten.
das auch
Auch wenn die Antworten hier
nicht alles vorkauen sondern auch etwas vorwissen verlangen wie es ganz oben im forum steht
für mich nicht brauchbar
weil nicht lösungen sondern hilfen sind
bzw. zu verarbeiten sind
weil das gleich viel besser klingt als brachbar
denn außer "machs doch selber" kam hier nix weiter.
wer lesen kann ist klar im vorteil
ich kenne foren da hätte man dir nicht freundlich hilfe angeboten sondern dich sofort wüst als hausaufgabenfordernde schülerin beschmimpft
emu
[der langsam gefallen an der kleinschreibung findet]
cheatah lebe hoch
Schleim
cheatah hat uns große probleme erspart cheatah unser held
noch mehr Schleim, das ertrag ich nicht
Tatsache ist, daß ich keinen blassen Schimmer habe.
Ich wüßte nicht einmal wo ich ansetzen soll ...
Hi,
Tatsache ist, daß ich keinen blassen Schimmer habe.
Ich wüßte nicht einmal wo ich ansetzen soll ...
das ist falsch. Dein Grobkonzept ist ausgereift.
Cheatah
hallo
cheatah lebe hoch
Schleim
cheatah hat uns große probleme erspart cheatah unser held
noch mehr Schleim, das ertrag ich nicht
dein ironiedetektor ist defekt.
führt das internet langsam dazu, dass menschen keine ironie mehr verstehen ohne grinsende pixelkosntrukte und inflektiva?
mittlerweile bemerke ich auch in zeitungen und zeitschriften, auf plakaten und briefen haufenweise smileys - da geht kultur verloren, das sollten einmal ein paar sprachwissenschaftler untersuchen.
Tatsache ist, daß ich keinen blassen Schimmer habe.
das merkt man mit verlaub unter anderem an dem von dir als richtig präsentierten skript. herzlichen glückwunsch.
Ich wüßte nicht einmal wo ich ansetzen soll ...
erstens musst du begreifen, was vernünftiges html ist, dann solltest du ein paar grundbegriffe einer serverseitigen sprache lernen.
emu
[belustigt]
ooooooohh ja, ihr seid ja alle soooo schlau ...
Hi,
ooooooohh ja, ihr seid ja alle soooo schlau ...
zumindest können wir zitieren. Aber vermutlich kommst Du nur nicht auf den Gedanken, dass wir vielleicht _nicht_ unseren Lebenszweck darin sehen, Dich dumm zu halten, sondern Dir im Gegenteil helfen wollen? Nun ja, das ist ob der Länge des Threads ja auch schwer zu sehen, das gebe ich zu.
Cheatah
Sorry, das war meine Art von Ironie :o)
in einem anderen Forum in 20 Minuten erhalten :o)
<html><head>
<script language="JavaScript">
<!-- Verstecken für ältere Browser --
var imagenumber = 5 ; //Anzahl der Grafiken
var randomnumber = Math.random() ;
var rand1 = Math.round( (imagenumber-1) * randomnumber) + 1 ;
images = new Array
images[1] = "GRAFIK1.gif"
images[2] = "GRAFIK2.gif"
images[3] = "GRAFIK3.gif"
images[4] = "GRAFIK4.gif"
images[5] = "GRAFIK5.gif"
var image = images[rand1]
// -- Ende Verstecken -->
</script>
</head>
<body>
<script language="JavaScript">
<!-- Verstecken für ältere Browser --
document.write('<IMG SRC="' + image + '">')
// -- Ende verstecken -->
</script>
</body></html>
Hi,
in einem anderen Forum in 20 Minuten erhalten :o)
und, wurdest Du auch über die Probleme dieser Lösung informiert? Hast Du das Script verstanden?
<script language="JavaScript">
[...]
document.write('<IMG SRC="' + image + '">')
Wurden Dir die Fehler des Scripts genannt?
Cheatah
es funktioniert. bisher konnte ich keine fehler feststellen.
Hi,
es funktioniert.
tolles Argument. Nebenbei: Hast Du schon mal testweise JavaScript ausgeschaltet?
bisher konnte ich keine fehler feststellen.
Genau darum ist es nicht sinnvoll, jemandem fertige Lösungen zu liefern. Du bist Dir der Probleme und potentiellen Lücken nicht bewusst. Und das Script _hat_ Lücken - angefangen damit, dass es unnötigen Speicherplatz reserviert, und noch nicht beendet damit, dass der (vorhandene und erzeugte) HTML-Code defekt ist.
Wenn Du mal ein zehntes Bild einsetzen willst, wirst Du vermutlich sogar sehen, dass das Script nicht optimal ist.
Cheatah
dies ist für mich eine im moment brauchbare lösung.
wie gesagt, kenn mich nicht so gut aus um beurteilen zu können, was gut ist und was nicht.
fakt ist, daß ich nix eigenes zu stande bekomme. bin also darauf angewiesen was von anderen zu bekommen.
wenn ich mich noch weiter umschaue bekomme ich sicher auch noch was in php.
Hi,
dies ist für mich eine im moment brauchbare lösung.
dieser Irrtum begründet sich darin, dass Du eine fertige Lösung gesucht hast, anstatt das Erlernen der Techniken anzustreben.
wie gesagt, kenn mich nicht so gut aus um beurteilen zu können, was gut ist und was nicht.
Quod erat demonstrandum.
fakt ist, daß ich nix eigenes zu stande bekomme.
Um diesen Umstand zu ändern, bist Du hier genau richtig. Um weiter auf diesem Level zu bleiben und _dauerhaft_ auf Hilfe anderer angewiesen zu sein, selbst bei einfachsten Dingen, ist es ideal, fertige Lösungen zu suchen.
wenn ich mich noch weiter umschaue bekomme ich sicher auch noch was in php.
Wenn Du Dich bemühst, einige Dinge zu erlernen, wirst Du vielen dieser Scripte sicher auch ansehen, wie schlecht sie sind. Ohne ein Minimum an Kenntnissen wirst Du derartiges nie erfahren und im Irrglauben leben, Du hättest etwas gutes gefunden.
Cheatah
wo und wie fang ich an?
Hi,
wo und wie fang ich an?
zunächst einmal solltest Du Dir darüber klar werden, _womit_ Du anfangen möchtest. Informiere Dich dann darüber, welche Vorkenntnisse hierfür benötigt werden oder sinnvoll sind. Erlerne die Grundlagen; oft findet sich für die jeweilige Technik ein Tutorial. Beschäftige Dich mit der Dokumentation. Wenn Du weißt, was Du vor Dir hast, und damit ein Problem lösen willst, dann erstelle zunächst einen Algorithmus und versuche dann, ihn anhand des Erlernten, der Dokumentation und ggf. gezielter Rückfragen mit der Technik umzusetzen.
Der Fokus liegt hierbei auf dem Wort "gezielt". Pauschale Fragen können meist nur pauschalen Antworten erhalten.
Cheatah
Hi,
wo und wie fang ich an?
Dein Grobkonzept war doch gar nicht schlecht.
Das nächste, was jetzt dran wäre, ist die Wahl einer Sprache.
PHP hattest Du vorgeschlagen, Perl könnte es auch sein ... wennn Du
die Sprache nun mal von Grund auf lernen mußt, lohnt es sich, einen
Moment lange inne zu halten und über den heutigen Tag hinaus zu denken.
PHP ist vielleicht etwas "webbiger", hat aber ein paar Defizite im
Vergleich zu Perl - wenn Du Dich nicht auf reine Web-Anwendungen
festlegen willst, kommst Du mit Perl vermutlich etwas weiter.
Wie auch immer Deine Entscheidung ausfallen wird - als nächstes geht
es dann daran, Dein Grobkonzept ein bißchen abzuschleifen.
Die eine Möglichkeit war, daß Dein Skript als Ergebnis nur einen
Verweis auf die vom Browser _danach_ anzufordernde Datei erzeugt.
Eine andere Möglichkeit wäre es, diese Datei einfach zu öffnen, ihren
Inhalt einzulesen und diesen auszugeben.
Letzteres ist die Lösung, über die Deine Besucher etwas glücklicher
sind - sie sparen nämlich einen Zugriff auf Deine Seite, bekommen
Dein Bild also schneller.
Und HTTP-Header senden mußt Du eh in beiden Fällen verstanden haben.
Je nachdem, welches der beiden Modelle Dir lieber ist, würde nun die
Übersetzung in einen Algorithmus dran kommen. Also: Eine Beschreibung
des Ablaufs in Form einzelner Schritte. Was mußt Du tun? Welche
elementaren Schritte brauchst Du dafür?
Zu diesem Zeitpunkt legst Du endgültig fest, ob Du eine Zahl zwischen 0
und 9 auswürfeln (und in einen Dateinamen umsetzen) willst (Achtung:
Was passiert, wenn es diese Datei zufällig nicht gibt?) oder den Inhalt
eines Verzeichnisses einlesen und eine von dann variabel vielen Dateien
wählen willst (letzteres ist mächtiger, weil pflegeleichter für zu-
künftige Änderungen - also eine "Investition").
Dann ist die Umsetzung diese abstrakten Ablaufes in die konkrete
Programmiersprache dran. Jetzt heißt es Handbuch lesen: Wie würfelt
man in PHP? Wie liest man den Inhalt eines Verzeichnisses in Perl?
Wie prüft man die Existenz einer Datei? Das, was vorher in Deiner
eigenen Sprache da stand (und durchaus als Kommentar im endgültigen
Quelltest drin bleiben sollte!), wird nun "übersetzt" in die Sprache,
welche das endgültige Programm ausmachen wird.
Fertig? Nein, jetzt wird getestet.
Im ersten Versuch klappt es nicht immer perfekt. Wahrscheinlich
brauchst Du ein paar Anläufe; es hilft, wenn Du an bestimmten
Stellen erst mal testweise ein paar Ausgaben machst, um zu sehen,
ob Deine Logik mit den tatsächlichen Ergebnissen zusammen paßt.
Sobald alles funktioniert, kannst Du diese Ausgaben wieder abschalten.
Und am Ende hast Du ein fertiges, gut dokumentiertes und sorgfältig
getestetes Programm, welches Du verstehst und jederzeit an geänderte
Anforderungen anpassen kannst. Und nebenbei hast Du die Grundlagen
einer Programmiersprache gelernt, das Verfeinern eines Algorithmus
zu einem Programm, das Testen eines Programms ... jetzt läufst Du
auf eigenen Füßen.
(Und kannst anderen Leuten in einem Forum Deiner Wahl helfen ...)
Wäre es Dir das wert?
Viele Grüße
Michael