Bild / Dateiname per onclick...
GELight
- javascript
Guten Morgen alle zusammen,
Ich habe eine Liste an Bildern.
Jedes Bild hat seine eigene ID und wenn ich mit onclick auf ein Bild klicke, dann möchte ich gern den Bildnamen an ein FormularHiddenfeld schicken und dieses damit füllen.
Wenn ich this.src nutze, dann bekomme ich den kompletten Pfad. Ich muss aber ausschließlich das Bild ( bild.jpg oder bild.gif ) speichern, da meine Pfade alle dynamisch angehängt werden bei den Darstellungen.
Hoffe Ihr könnt mir einen Tipp geben.
Mario
hi,
Wenn ich this.src nutze, dann bekomme ich den kompletten Pfad. Ich muss aber ausschließlich das Bild ( bild.jpg oder bild.gif ) speichern, da meine Pfade alle dynamisch angehängt werden bei den Darstellungen.
Hoffe Ihr könnt mir einen Tipp geben.
Tipp: Stringfunktionen, ggf. reguläre Ausdrücke (letztere aber eigentlich nicht nötig, ersteres dürfte reichen).
gruß,
wahsaga
Hi wahsaga,
Ich habs nun so gelöst, dass ich über das Formular den kompletten Pfad sende und dann mit PHP Explode das ganze wieder auseinander nehme, da ich mit Javascript noch nicht mit Stringfunktionen gearbeitet habe. Ging jetzt so einfach schneller. :)
Die JavascriptVariante würde mich aber auch mal interessieren.
Mario
Hi!
Tipp: Stringfunktionen, ggf. reguläre Ausdrücke (letztere aber eigentlich nicht nötig, ersteres dürfte reichen).
Um das noch mal kurz zu erweitern:
Reguläre Ausrücke sind umheimlich mächtig.
Man kann alles damit machen und ein regulärer Ausdruck ist auch alles - nur nicht schnell...
Immer, wenn du vor der Wahl stehst: RegEx oder Stringfunktionen, dann nimm die Stringfunktionen. Die arbeiten deutlich schneller.
Und dann zurück zum eigentlich Problem.
Wenn du den vollen Pfad erhälst, dann hast du da wunderschöne Trennzeichen drin, nämlich die Slashes.
Mit Hilfe von split kannst du den Pfad in verschiedene Teile zerlegen lassen.
var datei = bla.src;
var einzelteile = datei.split( "/" );
Jetzt hast du alle Teile des Pfads/Dateinamens in dem Array "einzelteile".
Mit einzelteile.length bekommst du raus, wie viele Elemente in diesem Array sind.
Das letzte Array-Element enthält deinen Dateinamen.
var anzahl = einzelteile.length;
var dateiname = einzelteile[anzahl-1];
Fertig.
Schöner Gruß und gute Nacht,
rob
Vielen Dank und ebenso gute Nacht,
SPLIT... genau das hab ich gesucht, als ichs mit JS machen wollte.
Jetzt hab ichs mit PHP auf der nächsten Seite, die weiter verarbeitet.
Eventuell bau ichs nochmal auf JS um... mal schauen.
Danke nochmal...
Mario
Moin!
SPLIT... genau das hab ich gesucht, als ichs mit JS machen wollte.
Jetzt hab ichs mit PHP auf der nächsten Seite, die weiter verarbeitet.
Eventuell bau ichs nochmal auf JS um... mal schauen.
Javascript kann abgeschaltet sein. Und du kannst nie sicher sein, ob der Wert, den du kriegst, nicht doch vom Benutzer mutwillig manipuliert wurde.
Insofern ist es immer die bessere Idee, Prüfungen und Bearbeitungen serverseitig durchzuführen - insbesondere dann, wenn dort ohnehin eine serverseitige Programmiersprache zur Verfügung steht.
Allerdings wäre es für die Behandlung von Dateinamen sicherlich nicht verkehrt, dich auf die Funktionen basename() ff. hinzuweisen. Die machen vieles mehr oder weniger von allein, was man mit normalen Stringfunktionen nur aufwendiger haben kann.
- Sven Rautenberg
Hi!
Javascript kann abgeschaltet sein.
Ja. Man sollte möglichst darauf achten, daß alle wichtigen Funktionen der Seite auch ohne Javascript funktionieren.
Man kann mit JS tolle Sachen anstellen. Aber die Seite sollte so gestaltet sein, daß ein User ohne JS keine Probleme bei deren Nutzung hat.
Im Idealfall ist die Seite so gestaltet, daß ein User mit deaktiviertem JS gar nicht merkt, daß irgendwas fehlt.
Insofern hast du schon eine gute Wahl getroffen, wenn du jetzt PHP für deine Bildnamen-Funktion einsetzt.
Das würde ich an deiner Stelle also gar nicht mehr ändern, auch wenn du jetzt weißt, wie du es mit JS bewerkstelligen kannst.
Insofern ist es immer die bessere Idee, Prüfungen und Bearbeitungen serverseitig durchzuführen - insbesondere dann, wenn dort ohnehin eine serverseitige Programmiersprache zur Verfügung steht.
Ja. Das halte ich allerdings nicht nur für "die bessere Idee", sondern für eine absolute Notwendigkeit.
Man kann natürlich auch problemlos beides einsetzen: Client- und serverseitige Prüfung.
Wenn es z.B. um das Ausfüllen von irgendwelchen Formularen geht, dann kann man erst eine Prüfung mit JS einsetzen.
Da kann man eventuell mit hübschen Einblendungen auf falsch ausgefüllte Felder hinweisen - oder natürlich mit nervigen Alert-Boxen... ;)
Bevor die Daten dann aber serverseitig weiterverarbeitet werden (in eine Datenbank schreiben oder sonstwas) ist die serverseitige Prüfung zwingend erforderlich, wenn man nur ein wenig auf Sicherheit bedacht ist.
Schöner Gruß,
rob