Antworten auf deine Fragen:
Neues Thema erstellen

Bilder für die NewsDatenbank

M

mEjicobAndido

Guest

Hallo Zusammen,

ich versuche gerade eine Newspage zu bauen. Die Seite soll ein Bild pro News und einen entsprechenden Text fortlaufend anzeigen. Mir ist nur nicht so richtig klar, wie ich es am besten anstelle. Sollten die Bilder in einer Datenbank liegen (sollten relativ klein sein) oder lieber in einem Verzeichnis mit fortlaufender Nummer zugehörig zur News. Kann mir einer hilfreich unter die Arme greifen? Vielen Dank für Eure Bemühungen!

THX mEjicobAndido
 

ChrisvA

Aktives Mitglied

AW: Bilder für die NewsDatenbank

Ich würde die Bilder in ein extra Verzeichnis packen und in der Datenbank dann jeweils nur den Pfad zur Datei eintragen. Ansonsten währe die Datenbank nur unnötig groß. Die fortlaufende Nummer muss gar nicht sein. Ein Pfad zum Bild macht jeden Namen möglich. Ich würde im Dateinamen eher noch Information unterbringen, die es auch später noch möglich macht, dass Bild im FTP zuzuordnen. z.B. das dateum, oder der Titel des Themas, oder ganz einfach, was das Bild enthält.
 
M

mEjicobAndido

Guest

AW: Bilder für die NewsDatenbank

Hallo ChrisvA,

vielen Dank für Deine Antwort. Gib es vielleicht das eine oder andere Script wo ich mir sowas anschauen kann?
Vielen Dank für Deine Hilfe!

THX mEjicobAndido
 

JPS

Nicht mehr ganz neu hier

AW: Bilder für die NewsDatenbank

Ich habe sowas zu Hause, bin aber bis Mittwoch unterwegs.

Ich wüprde es so machen:
1) Newsformular ausflüllen und abschicken
2) Bild per upload im Formular mithochladen.

3) Jetzt per PHP Newseintrag in die DB machen
4.1) Bild verarbeiten (skalieren usw.)
4.2) Bild nach der ID des Newseintrag umbenennen

Einfacher geht es nicht, da Bild 6.jpg auch zum Newseintrag mit der ID 6 gehört.
 

FredFuchs94

Allrounder...

AW: Bilder für die NewsDatenbank

Würde es genauso machen wie mein Vorgänger.
Dann kann in der Datenbank ja noch sowas wie der ALT-Eintrag gespeichert werden und vielleicht noch nen kleinen Text, also sowas wie ne Beschreibung unter das Bild. Was dir beliebt. Aber das mit 6.jpg -> Newseintrag NR.6 ist wirklich das einfachste. So können sich auch keine Bilder doppeln.
 
M

mEjicobAndido

Guest

AW: Bilder für die NewsDatenbank

Hallo Zusammen,

vielen vielen Dank für eure Hilfe.

@JPS: Wenn Du noch ein Scriptbeispiel hast würde ich mich sehr freuen.

THX mEjicobAndido
 

JPS

Nicht mehr ganz neu hier

AW: Bilder für die NewsDatenbank

Hier mal ein Beispiel wie die PHP-Datei ausehen könnte, die die News einträgt.

PHP:
// Bildfunktion
function bilder_anlegen ($file, $id_eintrag)
{
$type=$_FILES['file']['type'];
//if ($type=="image/pjpeg")
//{
$bilddir = '../images/news/';
move_uploaded_file($_FILES['file']['tmp_name'], $bilddir.$id_eintrag.".jpg"); 
$foto=$id_eintrag.".jpg";
 
// Bilddaten feststellen 
$size=getimagesize("$bilddir"."$foto"); 
$breite=$size[0]; 
$hoehe=$size[1]; 
// Hoch- oder Querformatsdaten feststellen 
if ($hoehe>=$breite)
{
$tn_hoehe=100; 
$tn_breite=intval($breite*$tn_hoehe/$hoehe);
$neue_hoehe=400; 
$neue_breite=intval($breite*$neue_hoehe/$hoehe); 
}
else 
{
$tn_hoehe=100; 
$tn_breite=intval($breite*$tn_hoehe/$hoehe);
$neue_breite=500; 
$neue_hoehe=intval($hoehe*$neue_breite/$breite);
}
// Bilder generieren 
$altesBild=ImageCreateFromJPEG("$bilddir"."$foto"); 
$neuesBild=ImageCreateTrueColor($neue_breite,$neue_hoehe); 
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$neue_breite,$neue_hoehe,$breite,$hoehe); 
ImageJPEG($neuesBild,$bilddir.$id_eintrag.".jpg");
 
$altesBild=ImageCreateFromJPEG("$bilddir"."$foto"); 
$neuesBild=ImageCreateTrueColor($tn_breite,$tn_hoehe); 
ImageCopyResized($neuesBild,$altesBild,0,0,0,0,$tn_breite,$tn_hoehe,$neue_breite,$neue_hoehe); 
ImageJPEG($neuesBild,$bilddir.$id_eintrag."_tn.jpg"); 
}
//}
 
// Datenbankeintrag machen
// String zusammenbauen 
$eintrag="INSERT INTO newstable (date, titel, subheadline, text) VALUES ('$timestamp', '$titel', '$subheadline', '$text')";
 
$result = mysql_query($eintrag);
$id_eintrag=mysql_insert_id(); 
 
bilder_anlegen($file, $id_eintrag);

Zur Funktionsweise:
1) $timestamp, $titel, $subheadline, $text (oder wie immer die Dinge auch heißen mögen, die Du eintragen möchtest) kommen natürlich vom Formular und werden z.b. durch POST übergeben.
2) id_eintrag wird ermittelt
3) Funktion wird aufgerufen, mit hochgeladenem Bild und der Eintragsnummer

Innerhalb der Funktion:
Die Funktion baut ein Bild mit dem Namen {eintragnr}.jpg mit 400 px Höhe bei einem Hochformat oder 500px Breite bei einem Querformat
und ein Thumbnail mit dem Namen {eintragnr}_tn.jpg mit immer gleicher Höhe von 100px (Macht sich halt besser wenn mehrere nebeneinander stehen)

Die Werte solltest Du entsprechend anpassen und wenn Du keine Thumbs haben mags, kannst Du die Funktion ja noch ausdünnen.
Wichtig wäre noch zu sagen, dass dein Server ne aktive GDLib haben muss.

Ich hoffe, ich habe keine Gedankenfehler gemacht, aber klappen sollte es



Edit --- Noch zur Erklärung: Ich habe diese if ($type=="image/pjpeg")-Abfrage auskommentiert. Sie sollte sicherstellen, dass die Funktion nur mit JPGs ausgeführt wird. So wie sie dort aber war, hätte das Skript nur noch auf dem IE funktioniert, da die Bedinung für Firefox irgendwie anders lauten muss.
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben