Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo Leute,

ich hoffe man kann mir hier den richtigen weg weisen. es ist so, dass ich eigentlich keine ahnung vom programmieren habe, aber für mein problem gerne leitfaden hätte, somit danke ich für alle beiträge im voraus.

also fürs erste will ich nen zufallsgenerator erstellen, der aus einem bildervorrat (können bis zu paar tausend sein) einige auswählt und dann auf der site darstellt. da ich nur begrenztes wissen bezüglich html, php und sql habe, wollte ich fragen mit welchen sprachen so etwas am effizientesten bewältigt werden könnte?? in welche sprachen soll ich mich einarbeiten (außer html, ist ja voraussetzung ) ??

funktioniert sowas mit einem einfachen html-zufallsgenerator???

oder soll ich eine datenbank anlegen (sql), wo die bilder verwaltet werden und über php zufällige ausgewählt werden?? hab leider mal gehört, dass in sql keine bilddateien verwaltet werden können.

oder kann ich einfach über php zufällig bilder aus einem verzeichniss rauslesen (selbst bei einer derartigen bilderanzahl)??

sollte natürlich möglichst effizient sein???

Ich danke an alle Poster im Voraus.

eugen_2k

Geschrieben

Also einen einfachen HTML-Zufallsgenerator kann es nicht geben da HTML eine Beschreibungssprache ist.

Also wirst du dich wohl in eine Serverseitige Sprache einarbeiten müssen. Welche dir da jetzt gefällt bleibt dir überlassen.

Für eine zufällige Auswahl an Bildern ist erstmal zu überlegen wie werden die Bilder abgelegt? Haben die Bilder eine eindeutige Nummer brauchst du nur Zahlen ermitteln und diese Bilder dann laden(<img src=“zufallszahl.jpg“/>), das würde auch ohne Datenbank gehen. Ich sehe auch nicht unbedingt den nutzen Bilder in Datenbanken zu speichern wenn sie auch in einem Verzeichnis liegen können.

Geschrieben
oder kann ich einfach über php zufällig bilder aus einem verzeichniss rauslesen (selbst bei einer derartigen bilderanzahl)??

sollte natürlich möglichst effizient sein???

Bei mir funktioniert diese Lösung am besten. Du brauchst ja die Bilder nicht alle auslesen.

Mit Nummern muss man gar nichts lesen.

Mit unterschiedlichen Dateinamen (und unterschiedlichen Verzeichnissen) arbeite ich mit einem Verwaltungarray, wobei dort Verzeichnis, Bildnummer, Bildbeschreibung etc. abgelegt ist.

Und natürlich ähnlich strukturiert einen Ordner mit Thumbnails, der dann nur eine kleine Vorschau bietet.

IMo läuft eine Datenbank nicht besser, da du genauso die aktuellen Bilder irgendwie bestimmen musst. Es ist nur manchmal von der Verwaltung einfacher.

Geschrieben

prinzipiell macht es (wie schon selbst erkannt) sinn, erstmal die grundprinzipien zu verstehen.

wie schon geschrieben ist html nur eine auszeicnungssprache.

man kann bilder tatsächlich in mysql-datenbanken abspeichern, macht aber in diesem fall wohl eher keinen sinn.

wieviele bilder das sind spielt keine rolle.

du brauchst weder eine datenbank noch müssen die bilder zahlen als namen haben.

du kannst mit php den inhalt eines verzeichnisses in ein array einlesen, aus diesem dann zufällig werte aussuchen und damit dann die bilder darstellen.

eine komplettlösung zu posten macht imho keinen sinn, davon lernst du nix.

tipp: les mal quakenet:#php , damit hast du gute grundlagen für php.

falls du noch kein html kannst, solltest du dich erstmal damit beschäftigen. SELFHTML 8.1.2 (HTML-Dateien selbst erstellen)

falls du konkrete probleme oder fragen hast, wird dir hier sicher geholfen.

edit:

beim posten war der kleine schneller ;)

Geschrieben

Weshalb ich die Bilder mit Zahlen versehen würde, ist weil es in meinen Augen herzlich wenig sinn macht bei jedem Seitenaufruf/ bei jeder Änderung ein Array mit allen Bildern zu füllen. Das kann bei einigen tausend Bildern schon mal seine Zeit dauern und ist dazu noch völlig unnötig.

Zumal die Bilder ja eh alle einen Eindeutigen Namen haben müssen da es in einem Verzeichnis nicht zwei oder mehr Bilder mit dem gleichen Namen geben kann. Deshalb würde ich alle Bilder mit eine fortlaufenden Zahl versehen und immer nur die letzte Zahl speichern und dann eben eine Zufallszahl aus dem möglichen Bereich bestimmen.

Geschrieben
Weshalb ich die Bilder mit Zahlen versehen würde, ist weil es in meinen Augen herzlich wenig sinn macht bei jedem Seitenaufruf/ bei jeder Änderung ein Array mit allen Bildern zu füllen. Das kann bei einigen tausend Bildern schon mal seine Zeit dauern und ist dazu noch völlig unnötig.
Verzeichnisse jedesmal neu auslesen ist sicher falsch. Aber eine zusätzlich gepflegte Datei, die bei bedarf aktualisiert wird (also bei neuen Bildern) läuft imo schnell genug.

Mit nur Zahlen ist die Pflege manchmal sehr aufwendig, besonders bei speziellen Kundenwünschen (jedes einzelne Bild zu beschreiben etc.)

Geschrieben
Weshalb ich die Bilder mit Zahlen versehen würde, ist weil es in meinen Augen herzlich wenig sinn macht bei jedem Seitenaufruf/ bei jeder Änderung ein Array mit allen Bildern zu füllen. Das kann bei einigen tausend Bildern schon mal seine Zeit dauern...

Naja, ist ja schon komisch was hier als "riesig" angesehen wird. Für den Computer sind "paar tausend" eher was, was nichtmal ein Schulterzucken hervorruft ;)

Und zum Auslesen des Verzeichnisses:

1: Lesen in ein Array geht nur mit php >= 5

2: Auch mit php 4 braucht das keine Zeit über die man sich groß Sorgen machen müsste (mit php4 geht es sogar schneller).

Ich hab ein Script geschrieben, was mit 3000 Dateien anlegt:


#!/bin/sh

i=0

while [ $i -lt 3001 ]; do

 touch ./pics/image$i.jpg

 i=$((i+1))

done

Danach liegen 3000 Dateien mit Namen image0.jpg, image1.jpg etc im Ordner pics. Dann hab ich (einmal mit php5.x und einmal mit php 4.x, auf 2 versch. Rechnern, Debian Woody und Debian Sid) die Zeit gemessen, die php braucht um das einzulesen. hier das php 4.x Skript:

#!/usr/bin/php

<?php

$startZeit = microtime();

if ($dir = opendir("./pics"))

{

  while (false !== ($file = readdir($dir)))

  {

    $dirArray[] = $file;

  }

}

$endZeit = microtime();

echo "Start: $startZeit\n";

echo "Ende: $endZeit\n";

$dauer = $endZeit - $startZeit;

echo "gelesen - Zeit: $dauer Mikro-Sekunden\n";

?>

Ausgabe

Start: 0.41911100 1174296180

Ende: 0.43586700 1174296180

gelesen - Zeit: 0.016756 Mikro-Sekunden

und hier php5:

#!/usr/bin/php

<?php

$startZeit = microtime();

$dir = "./pics";

$dirArray = scandir($dir);

$endZeit = microtime();

echo "Start: $startZeit\n";

echo "Ende: $endZeit\n";

$dauer = $endZeit - $startZeit;

echo "gelesen - Zeit: $dauer Mikro-Sekunden";

?>

Ausgabe:

Start: 0.00575200 1174295956

Ende: 0.04864500 1174295956

gelesen - Zeit: 0.042893 Mikro-Sekunden

Dann auf dem Rechner mit php5 nochmal das Skript in der 4er Version:

Start: 0.44822900 1174296425

Ende: 0.46755300 1174296425

gelesen - Zeit: 0.019324 Mikro-Sekunden

Und ich würde sagen, 0.016 oder 0.019 Mikrosekunden sind keine lange Zeit :D

EDIT:

Laut wikipedia dauert ein Wimpernschlag ca. 100ms (Millisekunden). 100ms = 100000 Mikrosekunden. Mal zum Vergleich, was hier "seine Zeit" ist.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...