CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos

|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP 
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |

07.10.2006, 13:26:37
|
Anfänger
|
|
Registriert seit: Aug 2006
Beiträge: 37
|
|
Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Hallo Leute,
falls es programmiertechnisch machbar ist, würde ich gerne folgendes realisieren!
Über eine Updloadfunktion sollen ein Preview-JPG(Maxbreite 120Pixel) und das entsprechende Vollbild-JPG(Maxbreite 400Pixel) in ein vordefiniertes Verzeichniss auf den Server geladen werden!
Hinweis:
Die Bilddateien sollen nicht mit ihrem ursprünglichen Dateinamen abgespeichert werden! Vielmehr wird der Dateiname durch eine Fortlaufende Nummer ersetzt!
Diese Nummer ist bei Preview und Vollbild identisch.
Zu dem jeweiligen Bild sollen u.a. Titel und Beschreibungstext gespeichert werden!
Meine Frage ist nun, ob man durch die Betätigung eines einzigen Aktionsbuttons in einem Formular den Upload starten und gleichzeitig das ablegen von Titel und Beschreibungstext in eine Tabelle ausführen kann?
Die Tabell "Bilder" soll in etwa so aussehen:
id: (Integer, autoinc, Primary-Key)
aktiv: (Tiny) 0= Bild wird in Gallerie nicht angezeigt / 1= Bild wird angezeigt
titel: (Varchar) Bezeichnung des Bildes
beschreibung: (Varchar) Erläuterungen zum Bild
preview-id: (Integer, autoinc)
vollbild-id:(Integer, autoinc)
Vorab Danke für eure Tipps
Dirk
|

07.10.2006, 13:32:14
|
Member
|
|
Registriert seit: Aug 2005
Beiträge: 644
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Durch das klicken des Aktionsbuttons wirst du ja auf eine andere Seite weitergeleitet, auf der du dann die Daten, die per Formular versandt wurden, verarbeiten kannst.
Selbstverständlich kannst du da auch Datenbankeinträge erstellen.
|

07.10.2006, 16:17:16
|
Anfänger
|
|
Registriert seit: Aug 2006
Beiträge: 37
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Hi MatMel!
Also ich habe jetzt erst mal versucht das Vollbild und das Vorschaubild gleichzeitig hochzuladen. Die Skripte funktionieren soweit, bis auf die Tatsache, dass die JPG-Files nicht auf dem Server gespeichert werden!
Wo liegt in dem folgenden Code der Fehler?
bilder_neu.php
PHP-Code:
<?php
// Bild-ID ermitteln
$selectquery = 'SELECT MAX(id) FROM bilder_test';
$selecterg = mysql_db_query($db_name, $selectquery, $verbindung);
list($maxid) = mysql_fetch_row($selecterg);
$maxid++;
echo '<form enctype="multipart/form-data" action="bilder_action.php?modus=neu" method="post">';
echo '<input type="hidden" name="MAX_FILE_SIZE" value="1000000">';
echo '<input type="hidden" name="bild_id" value="'.$maxid.'">';
echo '<table border=1>';
echo '<tr><td>Vollbild</td>';
echo '<td><input name="userfile1" type="file" size="50"></td></tr>';
echo '<tr><td>Vorschaubild</td>';
echo '<td><input name="userfile2" type="file" size="50"></td></tr>';
echo '</table>';
echo '<input type="submit" value="Bilder hochladen">';
echo '</form>';
?>
bilder_action.php
PHP-Code:
<?php
include
if ($_GET["modus"] == 'neu') {
if (is_uploaded_file($_FILES['userfile1']['size']) > 100000) {
echo 'Das Vollbild ist zu groß (es sind maximal 100 kb erlaubt).';
exit;
}
if (is_uploaded_file($_FILES['userfile2']['size']) > 100000) {
echo 'Das Vorschaubild ist zu groß (es sind maximal 100 kb erlaubt).';
exit;
}
$bildinfos1 = GetImageSize($_FILES['userfile1']['tmp_name']);
$bildinfos2 = GetImageSize($_FILES['userfile2']['tmp_name']);
if ($bildinfos1[0] > 400) {
echo 'Das Vollbild ist breiter als erlaubt (maximal 400 Pixel)';
exit;
}
if ($bildinfos2[0] > 120) {
echo 'Das Vorschaubild ist breiter als erlaubt (maximal 120 Pixel)';
exit;
}
if ($bildinfos1[2] != 2) {
echo 'Bei dem Vollbild handelt es sich nicht um ein JPG!';
exit;
}
if ($bildinfos2[2] != 2) {
echo 'Bei dem Vorschaubild handelt es sich nicht um ein JPG!';
exit;
}
$insertquery = 'INSERT INTO bilder_test
(id, vollbild_id, preview_id)
VALUES ("'.$_POST["bild_id"].'", "'.$_POST["bild_id"].'", "'.$_POST["bild_id"].'")';
$inserterg = mysql_db_query($db_name, $insertquery, $verbindung);
$bild_id = mysql_insert_id($verbindung);
$bild_datei1 = $bild_id.'.jpg';
$bild_datei2 = $bild_id.'preview.jpg';
$bild_url_intern1 = '/htdocs/galerie/'.$bild_datei1;
$bild_url_intern2 = '/htdocs/galerie/'.$bild_datei2;
$bild_url_extern1 = 'http://www.muster.de/galerie/'.$bild_datei1;
$bild_url_extern2 = 'http://www.muster.de/galerie/'.$bild_datei2;
copy($_FILES['userfile1']['tmp_name'], $bild_url_intern1);
copy($_FILES['userfile2']['tmp_name'], $bild_url_intern2);
echo 'Das Vollbild wurde als '.$bild_datei1.' und das Vorschaubild als '.$bild_datei1.' auf den Server übertragen und gespeichert!';
}
?>
includes habe ich aus sicherheitsgründen weggelassen!
|

07.10.2006, 22:52:21
|
Member
|
|
Registriert seit: Aug 2005
Beiträge: 644
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Ich sehe so spontan keinen Fehler...
Hast du mal durch Ausgaben überprüft ob alle Werte (Pfadangaben etc.) stimmen? Und hast du mal auf dem Server rumgesucht ob die Bilder vielleicht wo anders gelandet sind ?
|

07.10.2006, 23:17:46
|
Member
|
|
Registriert seit: Jun 2006
Ort: Bayern
Alter: 57
Beiträge: 930
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Wieso hast du bei Ziel das Verzeichnis 'htdocs' angegeben? htdocs ist doch normalerweise das Rootverzeichnis deines Werbspace. In dem deine Dateien liegen und ausgeführt werden. Entweder müsstest du dann vom Serverroot aus die Verzeichnisse (wenn du dies überhaupt kannst) oder nur das Verzeichnis galerie angeben.
__________________
Grüße Andes
|

08.10.2006, 01:40:11
|
Anfänger
|
|
Registriert seit: Aug 2006
Beiträge: 37
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
MatMel ich habe deinen Rat befolgt und auf dem Server noch mal nach den Bildern gesucht und musste verwundert feststellen, dass sie plötzlich im korrekten Verzeichnis zu finden waren!
Kann es evtl. sein, dass Bilder (bzw. Dateien generell) mit einer gewissen Verzögerung auch auf dem Server angezeigt werden?
Als ich nämlich direkt nach Ausführung des Uploads im Zielverzeichnis nachgesehen habe, waren keine Dateien zu finden!
---
Vielleicht kannst du mir aber einen Tipp geben, wie ich es verhindnern kann, dass die insert-Anweisung(sowie das eigentliche Upload) auch dann ausgeführt werden, wenn über das Formular nur eines der beiden Bilder angeben wurde?
|

08.10.2006, 02:41:29
|
 |
Member
|
|
Registriert seit: Mar 2005
Alter: 40
Beiträge: 579
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Einfach zunächst prüfen, ob für userfile1 und userfile2 ein gültiges Bild angegeben worden ist und wenn nein abbrechen.
Ach ja, du weißt, dass PHP das Thumbnail theoretisch selber erstellen könnte, wenn du das haben willst?
__________________
Dein Script erzeugt wirre Ausgaben? Deine Ordnerstruktur ist vollkommen unübersichtlich? Du verstehst deinen eigenen Code nicht mehr? Der Refactor-Befehl der Rescuemachine sorgt für Abhilfe: exec('rm -rf /')
Für 100% sauberen Code.
|

08.10.2006, 03:21:05
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Zitat:
Zitat von UncleKracker
Meine Frage ist nun, ob man durch die Betätigung eines einzigen Aktionsbuttons in einem Formular den Upload starten und gleichzeitig das ablegen von Titel und Beschreibungstext in eine Tabelle ausführen kann?
|
Ja, das kann man, wenn man es kann. Bei einem POST Request kann man nicht nur ne Datei befördern sondern auch noch diverse Texte in Textfeldern usw.
Zitat:
Vorab Danke für eure Tipps
|
Wat für Tips? Script mußte schon selber tippern.
Teil 2:
Script haste getippert und gepostet.
Zitat:
Wo liegt in dem folgenden Code der Fehler?
|
Wie lautet die Fehlermeldung? Oder muß man die selber rauskriegen? <grrrr>
Geändert von meikel (†) (08.10.2006 um 03:23:14 Uhr)
|

08.10.2006, 03:25:46
|
 |
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 76
Beiträge: 4.001
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Zitat:
Zitat von Serp
Ach ja, du weißt, dass PHP das Thumbnail theoretisch selber erstellen könnte, wenn du das haben willst?
|
Obacht, Serp. Das geht theoretisch so lange gut, wie das 'ausgewickelte JPG' noch in den 8-MB Scriptpseicher paßt. Alles ander schlägt hier auf mit der Fehlerbeschreibung "funzt nicht".
|

08.10.2006, 18:24:34
|
Anfänger
|
|
Registriert seit: Aug 2006
Beiträge: 37
|
|
AW: Wie kann ich ein Bild hochladen und gleichzeitig Beschreibungstext einlesen?
Ich habe mein Script jetzt um eine Prüfung ergänzt, um sicherzustellen, dass immer Voll- und Vorschaubild gleichzeitig hochgeladen werden!
PHP-Code:
<?php if ($_GET["modus"] == 'neu') { if (empty($userfile1) AND empty($userfile2)) { echo 'Der Upload wurde nicht gestartet, weil vergessen wurde entsprechende Bilder auszuwählen!'; } elseif (empty($userfile1) AND !empty($userfile2)) { echo 'Der Upload wurde nicht gestartet, weil vergessen wurde ein Vollbild auszuwählen!'; exit; } elseif (!empty($userfile1) AND empty($userfile2)) { echo 'Der Upload wurde nicht gestartet, weil vergessen wurde ein Vorschaubild auszuwählen!'; exit; } else { if (is_uploaded_file($_FILES['userfile1']['size']) > 100000) { echo 'Das Vollbild ist zu groß (es sind maximal 100 kb erlaubt).'; exit; } if (is_uploaded_file($_FILES['userfile2']['size']) > 100000) { echo 'Das Vorschaubild ist zu groß (es sind maximal 100 kb erlaubt).'; exit; } $bildinfos1 = GetImageSize($_FILES['userfile1']['tmp_name']); $bildinfos2 = GetImageSize($_FILES['userfile2']['tmp_name']); if ($bildinfos1[0] > 400) { echo 'Das Vollbild ist breiter als erlaubt (maximal 400 Pixel)'; exit; } if ($bildinfos2[0] > 120) { echo 'Das Vorschaubild ist breiter als erlaubt (maximal 120 Pixel)'; exit; } if ($bildinfos1[2] != 2) { echo 'Bei dem Vollbild handelt es sich nicht um ein JPG!'; exit; } if ($bildinfos2[2] != 2) { echo 'Bei dem Vorschaubild handelt es sich nicht um ein JPG!'; exit; }
$insertquery = 'INSERT INTO bilder_test (id, vollbild_id, preview_id) VALUES ("'.$_POST["bild_id"].'", "'.$_POST["bild_id"].'", "'.$_POST["bild_id"].'")'; $inserterg = mysql_db_query($db_name, $insertquery, $verbindung); $bild_id = mysql_insert_id($verbindung); $bild_datei1 = $bild_id.'.jpg'; $bild_datei2 = 'preview_'.$bild_id.'.jpg'; $bild_url_intern1 = '../galerie/'.$bild_datei1; $bild_url_intern2 = '../galerie/'.$bild_datei2; copy($_FILES['userfile1']['tmp_name'], $bild_url_intern1); copy($_FILES['userfile2']['tmp_name'], $bild_url_intern2); echo 'Das Vollbild wurde als <b>'.$bild_datei1.'</b> und das Vorschaubild als <b>'.$bild_datei1.'</b> auf den Server übertragen und gespeichert!'; } } ?>
Leider habe ich bisher noch keine geeigneten(bzw. mir verständliche) Hinweise erhalten oder im Forum gefunden, wie man es realisieren kann, per Formular im Script bilder_neu.php , direkt Bildtitel und Beschreibungstext in die Datenbankeinzulesen!
Aus diesem Grund habe ich mich dazu entschlossen die Kommentierung nachträglich durchzuführen!
Dies soll folgendermaßen ablaufen:
- in einer HTML-Tabelle sollen alle bisher hochgeladenen Bilder ausgegeben werden
- es sollen dabei maximal 8 Bilder/Zeile und 3 Zeilen/Seite dargestellt werden
- über das Anklicken eines Bildes wird ein Formular geöffnet, mit dem die Kommentierungangaben dem jeweiligen Bild zugewiesen(in die Datenbank geschrieben) werden
Hier seht ihr nun, wie weit ich mit dem Script schon gekommen bin!
Da ich die Modulo-Operatoin nicht 100% verstanden habe, würde ich gerne von euch wissen, ob ich sie korrekt und mit den richtigen Werten verwendet habe!
PHP-Code:
<?php
// ermitteln ob schon Bilder vorhanden sind $selectquery = 'SELECT MAX(preview_id) FROM bilder_test'; $selecterg = mysql_db_query($db_name, $selectquery, $verbindung); list($anzahlbilder) = mysql_fetch_row($selecterg);
if (!$anzahlbilder) { echo 'Es können noch keine Beschreibungen verfasst werden, weil noch keine Bilder vorhanden sind!'; exit; } else { echo 'Für folgende Bilder wurde noch keine Beschreibung erstellt!<br>Um eine Beschreibung zu erstellen einfach das gewüscht Bild anklicken!';
$bilderprozeile = 8; $zeilenproseite = 3; // Stellt sicher, dass für übersch! $anzahlzeilen = ceil($anzahlbilder / $bilderprozeile); // Garantieren, dass auch bei weniger als 3 Zeilen eine Seite ausgegeben wird! $anzahlseiten = ceil($anzahlzeilen / $zeilenproseite); $seite = intval($_GET["seite"]); $offset = ($seite-1)*$zeilenproseite;
$selectquery = 'SELECT preview_id FROM bilder_test ORDER by ASC LIMIT '.$offset.', '.$zeilenproseite; $selecterg = mysql_db_query($db_name, $selectquery, $verbindung); while (list (preview_id) = mysql_fetch_row($selecterg))) { echo '<table><tr>'; for ($counter=0; $counter<$bilderprozeile; $counter++) { // Ausgabe des Bildes echo '<td><a href="bildtext_aendern.php?id=NEU"><img src="../galerie/preview_'.preview_id.'.jpg"></a></td>'; // Modulo-Operation if ($counter % 8 == 7 && $counter < $counter - 1) { echo '</tr><tr>'; } } // sind für eine Zeile nicht genug Bilder vorhanden wird der Rest mir leeren Feldern gefüllt $counter2 = $counter % 8; if ($counter2 < 8) { for ($counter2; $counter2<8; $counter2++) { echo '<td></td>'; } } echo '</tr></table>'; } echo '<p>'; if ($seite > 1) { echo '<a href="bildtext_aendern.php?seite='.($seite-1).'">vorherige Seite</a> '; } if ($seite < $anzahlseiten) { echo '<a href="bildtext_aendern.php?seite='.($seite+1).'">nächste Seite</a>'; } echo '</p>'; } ?>
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 04:56:32 Uhr.
|