Fotoalbum mit Backend

ja, ich ahbe mich getäuscht. mysql_affected_rows() erwartet nicht einen Handle zur Query, sondern die Verbindungs kennung. Da du anscheinend keine hast, nimm aus dem Funktionsaufruf einfach den Parameter raus :wink:

de2.php.net/manual/de/function.m … d-rows.php

:hail: Funktioniert 1A
Dankeschön :slight_smile:

Ich werde mich jetzt an das Bild-upload-verkleiner-umbennen-und-Infos-in-die-Datenbank-pack-Script machen… Hoffentlich pack ich das :ps:

Ich empfehle folgendes zur Lektüre:

de.php.net/manual/de/features.file-upload.php

Vllt hilft dir auch folgende kleine Funktion, um die möglichen Fehler zu managen:

function uploadErrors($files,$maxSize=300000000,$echo_no_file=false,$echo=true){

//pruefe variablen
if(!isset($files) || !isset($files['error']) || !isset($files['name']) || !isset($files['tmp_name']) || !isset($files['size'])){
echo "<br /><strong>Warning: </strong> Invalid Files_Array Input! [function.uploadErrors] in <strong>".__FILE__."</strong><br /><br />\n";
return false;
}
if(!is_numeric($maxSize)){
echo "<br /><strong>Warning: </strong> Invalid MaxFileSize Value! (Parameter 2) (Must be integer) [function.uploadErrors] in <strong>".__FILE__."</strong><br /><br />\n";
return false;
}
if(!is_bool($echo)){
echo "<br /><strong>Warning: </strong> Invalid Echo/Return Value! (Parameter 3) (Must be boolean) [function.uploadDir] in <strong>".__FILE__."</strong><br /><br />\n";
return false;
}

// initialisiere errorvar
$all_ok = true;

//pruefe auf Dateigröße/Dateigrößenfehler
if($files['error'] == 2 || $files['size'] > $maxSize){
if($echo)
echo "Die Datei überschreitet die zulässige Dateigröße (".(($files['size']>$maxSize)? $maxSize : $_POST['MAX_FILE_SIZE'])." Byte)<br />\n";
$all_ok = false;
}

//pruefe auf halb hochgeladene datein
if($files['error'] == 3){
if($echo)
echo "Die Datei würde nicht vollständig hochgeladen. Bitte probieren Sie es erneut!<br />\n";
$all_ok = false;
}

//pruefe ob datei hochgeladen worden ist
if($files['error'] == 4 || $files['size'] == 0){
if($echo && $echo_no_file)
echo "Es wurde keine Datei hochgeladen.<br />\n";
$all_ok = false;
}

//pruefe auf Dateigrößenüberschreitung nach php.ini
if($files['error'] == 1){
if($echo)
echo "Die Dateigröße überschreitet die maximal vom Webserver zugelassene Größe!!!<br />\n";
$all_ok = false;
}

//pruefe auf nicht geuploadedte Datei
if($all_ok){
if(!is_uploaded_file($files['tmp_name'])){
if($echo)
echo "<span class=\"red\">Möglicher Hacking Versuch: Die Datei ist nicht hochgeladen worden!</span><br />\n";
$all_ok = false;
}
}

//
// gebe result zurück
if($all_ok && $files['error'] == 0)
return true;
else
return false;

////
// (C) Copyright 2009 jw-lighting.xe.cx

}// ende funktiondefinition "uploadErrors()";

Es ist ja für ein Backend wo ich und nur ein Kollege Zugriff drauf haben werden - Von daher reicht ein einfaches die(Da isn Fehler!);

Trotzdem danke - für die Entwicklung ist es sicherlich hilfreich.

naja, nun hast du die Funktion ja schon, und zum debuggen ist es auch während des Normalbetriebs sicher praktisch. Ist natürlich deine Entscheidung, aber etwas komfort darf schon sein. :wink:

Sonst musst du dann auch erstmal wieder auf die Suche gehen, so weist gleich was ist (und schlägst dir vllt wegen eines eigenen Fehlers vor die Strin) :ps:

Okay stimmt. Das hat mich überzeugt. Wobei ich erstmal den Upload zum laufen bekommen muss :ps:

Mmh. Sonst gib mal deinen bisherigen Code her. Bei mir siehts ungefähr so aus:

if(isset($_FILES['file2'])){
if(uploadErrors($_FILES['file2'],300000000)){
$dateipfad = uploadDir($_FILES['file2']['type']).str_replace(" ","_",$_FILES['file2']['name']);
if(move_uploaded_file($_FILES['file2']['tmp_name'], $dateipfad)){
echo "Datei 2 erfolgreich hochgeladen: <a href=\"".$dateipfad."\">".$dateipfad."</a><br />\n";
$dateianhaenge[] = $dateipfad;
}
else
echo "<span class=\"red blink bold\">Fehler beim hochladen (Datei 2)!</span>";
//echo "<hr /><br />\n";
}
}

Ich löse das ganze über 2 Dateien, weil gleichzeitig noch die Möglichkeit bestehen soll anderes mit dem selben Formular durchzuführen. Und damit ich Übersicht über die Scripts behalte.

Das verkürzte Formular, ohne die Sachen die in die Datenbank rutschen sollen.

[code]

Datei: Übertragen: [/code]

Der 1. Code-Schnipsel für die upload2.php.
Ich habe es bisher soweit. Allerdings kann ich nix hochladen. Ich weiß noch net warum und bin noch beim debuggen.

[code]

$bildverzeichnis = '../bilder/'; if (move_uploaded_file($_FILES['datei']['tmp_name'], $bildverzeichnis . $_FILES['datei']['name'])) { echo "Das Foto wurde hochgeladen!"; } else { echo "Es ist ein Fehler aufgetreten."; }

So, bisher funktioniert alles wunderbar. Die Daten aus dem Formular werden ordnungsgemäß in die DB geschmissen und das Bild auf den Webspace geladen.

Allerdings hapert es momentan an den letzten zwei Justierungen.
Ich möchte die Datei noch mit einem unique Dateinamen versehen (am einfachsten denke ich per timestamp)
Ich möchte die Bildgröße auslesen lassen und das Bild (wenn es zu groß ist) verkleinern lassen.

In welcher Reihenfolge wäre das empfehlenswert?
Was muss ich hier umschreiben, damit es funktioniert? Kann ich einfach ‚name‘ durch eine Variable ersetzen, die den aktuellen Timestamp enthält?

$dateiname = $dateiname . basename( $_FILES['datei']['name']) ; if(move_uploaded_file($_FILES['datei']['tmp_name'], $dateiname))

Besten Dank vorab :wink2:

[quote=“kerbination”]Ich möchte die Datei noch mit einem unique Dateinamen versehen (am einfachsten denke ich per timestamp)
Ich möchte die Bildgröße auslesen lassen und das Bild (wenn es zu groß ist) verkleinern lassen.

In welcher Reihenfolge wäre das empfehlenswert?[/quote]
Na in umgekehrter …

Wenn du das Original nach dem Verkleinern nicht mehr brauchst - dann wäre es doch unsinnig, es erst umzubenennen.
Dann kannst du gleich mit der Datei aus dem Upload-Temp-Verzeichnis arbeiten. Daraus erstellst du eine verkleinerte Version, und die speicherst du dann unter eindeutigem Namen im Zielverzeichnis ab.

Den Timestamp kannst du als Namen benutzen, wenn du willst - dass du zwei Bilder zur gleichen Sekunden hochlädst, dürfte ja wohl nicht vorkommen (wenn es bei einem einzelnen Nutzer bleibt).
Ansonsten könntest du auch bspw. tempnam benuzten, um einen eindeutigen Dateinamen zu erhalten.

Hi,

stimmt - das klingt plausibel. Werde ich gleich mal ausprobieren.

Und ja, es bleibt bei einem (bzw 2) Benutzer(n) - Ich bin nur der Progger, der andere soll das Formular benutzen.

Vielen Dank :slight_smile:

Hui, es ist geglückt :slight_smile:

Vielen Dank nochmal an alle die mich hier unterstützt haben.

Cybermage - für die Denkanstöße und Motivation
aschachinger - für den ersten Schritt in SQL
windofbastler - für den Link zum iditotensicheren SQL-Tutorial
chrisb - für die kleinen Zusatzinfos, die meine Arbeit erheblich erleichtert haben
jw-lighting - fürs umfangreiche Debugging
fishi - für die Unterstützung bei der Gestaltung des Logos

Anbei habe ich mal einen Screenshot genagelt, der das momentane Ergebnis dessen zeigt, was ich durch eure Hilfe in den letzten Wochen/Monaten bewerkstelligen konnte. Euer Werk :ps: