Hallo Community,
ich habe mich nun doch entschieden das Skript (war Bestandteil einer anderen Frage) für meine Zwecke weiter zu entwickeln.
Ich habe nun Probleme mit dem Update von Bilddateien:
Hier das aendern.php mit dem Änderungsformular:
Hier nochmal eine kleine Zwischenfrage zum alten Thema "[COLOR=#04558c]Bild(name) aus DB[/COLOR]".
Ist es richtig, dass man in einem "type="file" kein value anzeigen lassen kann? (habe dieses mal irgendwo gelesen.
Hier das bes_aendern.php
Fehlermeldung:
Warning: fopen() [[COLOR=#0066cc]function.fopen[/COLOR]]: Filename cannot be empty in C:\xampp\htdocs\event\best_aendern.php on line 31
Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\event\best_aendern.php on line 32
Nur wenn ich das file Feld leer lasse und nur Text ändere.
Und wenn ich ein File update, dann:
Notice: Undefined index: imgdata in C:\xampp\htdocs\event\best_aendern.php on line 42
Notice: Undefined index: imgtype in C:\xampp\htdocs\event\best_aendern.php on line 43
Die Daten wurden erfolgreich geändert
Der Index imgdata und imgtype erstellen sich aus dem Script durch:
ich habe mich nun doch entschieden das Skript (war Bestandteil einer anderen Frage) für meine Zwecke weiter zu entwickeln.
Ich habe nun Probleme mit dem Update von Bilddateien:
Hier das aendern.php mit dem Änderungsformular:
PHP-Code:
[LEFT]<form action = "../event/aendern.php" method = "post">
<?php
$server = 'localhost';
$benutzer = 'root';
$passwort = '';
$datenbank = 'treffpunkt';
$verbindung = @mysqli_connect($server, $benutzer, $passwort);
if ($verbindung){
mysqli_select_db($verbindung, $datenbank);
if(mysqli_error($verbindung)){
echo 'Fehler: ' . mysqli_error($verbindung);
}else{
$sql = "SELECT * from event";
$abfrage = mysqli_query($verbindung, $sql);
//echo $sql;
echo "<table border='1', width='952 px'>";
echo "<tr> <td>Auswahl</td> <td>Ort</td>";
echo "<td>Name</td> <td>Datum</td>";
echo "<td>Beschreibung</td> <td>Bild</td></tr>";
while($event = mysqli_fetch_assoc($abfrage)){
$htmlCode = '<img src="img_get.php?id=' . $event['ID'] . '" width="50" height="50" alt="" />';
echo "<tr> <td><input type='radio' name='auswahl'";
echo " value={$event['ID']}></td> <td>" . $event['ort'] . "</td> <td>" . $event['name'] . "</td>";
echo "<td>" . $event['datum'] . "</td> <td>" . $event['beschreibung'] . "</td> <td>$htmlCode</td> </tr>";
}
}
}
echo "</table>";
mysqli_close($verbindung);
?>
<p>
<input type="submit" value="Datensatz anzeigen" />
</form>
</div>
<div class="erfassen">
<div class="starttext_event">Event ändern:</div>
<div class="eingabe">
<div class="script">
<form action = "../event/best_aendern.php" method = "post" enctype="multipart/form-data">
<?php
$server = 'localhost';
$benutzer = 'root';
$passwort = '';
$datenbank = 'treffpunkt';
$verbindung = @mysqli_connect($server, $benutzer, $passwort);
if ($verbindung){
mysqli_select_db($verbindung, $datenbank);
if(mysqli_error($verbindung)){
echo 'Fehler: ' . mysqli_error($verbindung);
}else{
$auswahl= intval($_POST['auswahl']);
$sql = "SELECT * FROM event WHERE ID = ".$auswahl;
//echo $sql;
$auswahl = mysqli_query($verbindung, $sql);
while($event = mysqli_fetch_assoc($auswahl)){
$id = $event["ID"];
$ort = $event["ort"];
$name = $event["name"];
$datum = $event["datum"];
$beschreibung = $event["beschreibung"];
$bname = $event["imgname"];
}
}
}
mysqli_close($verbindung);
?>
<br>
<input type="text" name="id" size="24" value="<?php echo $id; ?>">
<br>
<input type="text" name="ort" size="24" value="<?php echo $ort; ?>">
<br>
<input type="text" name="name" size="24" value="<?php echo $name; ?>">
<br>
<input type="text" name="datum" size="24" value="<?php echo $datum; ?>">
<br>
<textarea cols="40" rows="5" name="beschreibung"><?php echo $beschreibung; ?></textarea>
<br>
<input type="text" name="imgname" size="24" value="<?php echo $bname; ?>">
<br>
<input type="file" name="img" size="24" >
<br>
<input type="submit" value="ändern" >
<input type="hidden" name="ID" value="<?php echo $id; ?>" />[/LEFT]
</form>
Ist es richtig, dass man in einem "type="file" kein value anzeigen lassen kann? (habe dieses mal irgendwo gelesen.
Hier das bes_aendern.php
PHP-Code:
[LEFT]<?php
/**
* Debugging
*/
error_reporting(E_ALL); #zeig alle Fehler
ini_set('display_errors', '1'); #sorgt dafür, dass überhaupt Fehler angezeigt werden
$server = 'localhost';
$benutzer = 'root';
$passwort = '';
$datenbank = 'treffpunkt';
$verbindung = mysqli_connect($server, $benutzer, $passwort);
if ($verbindung){
mysqli_select_db ($verbindung, $datenbank);
if(mysqli_error($verbindung)){
echo 'Fehler: Keine Verbindung zur Datenbank' . mysqli_error($verbindung);
}else{
if (isset($_POST['id'])) {
if (array_key_exists('img',$_FILES)) {
$tmpname = $_FILES['img']['tmp_name'];
$type = $_FILES['img']['type'];
$bname = $_FILES['img']['name'];
$hndFile = fopen($tmpname, "r");
$data = addslashes(fread($hndFile, filesize($tmpname)));}
$sql = "
UPDATE
event
SET
ort='{$_POST['ort']}',
name='{$_POST['name']}',
datum='{$_POST['datum']}',
beschreibung='{$_POST['beschreibung']}',
imgdata='{$_POST['imgdata']}',
imgtype='{$_POST['imgtype']}',
imgname='{$_POST['imgname']}'
WHERE
ID='{$_POST['id']}'
";
mysqli_query($verbindung, $sql);
echo 'Die Daten wurden erfolgreich geändert';
}else{
echo 'Die Daten wurden nicht geändert' . mysqli_error($verbindung, $sql) . '<br/>';
}
}
$sql = 'SELECT * from event ORDER BY ID';
$abfrage = mysqli_query($verbindung, $sql);
echo '<h1>Sie haben ' . mysqli_num_rows($abfrage) . ' Einträge</h1>';
echo '<ul>';
while ($event = mysqli_fetch_assoc($abfrage)){
echo "<li>[{$event['ID']}] {$event['ort']} {$event['name']} {$event['datum']} {$event['beschreibung']}</li>";
}
echo '</ul>';
mysqli_free_result($abfrage);
}
mysqli_close($verbindung);
echo '<br/><a href="../event/manager.php">Auswahl</a>.';
[/LEFT]
?>
Warning: fopen() [[COLOR=#0066cc]function.fopen[/COLOR]]: Filename cannot be empty in C:\xampp\htdocs\event\best_aendern.php on line 31
Warning: fread() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\event\best_aendern.php on line 32
Nur wenn ich das file Feld leer lasse und nur Text ändere.
Und wenn ich ein File update, dann:
Notice: Undefined index: imgdata in C:\xampp\htdocs\event\best_aendern.php on line 42
Notice: Undefined index: imgtype in C:\xampp\htdocs\event\best_aendern.php on line 43
Die Daten wurden erfolgreich geändert
Der Index imgdata und imgtype erstellen sich aus dem Script durch:
PHP-Code:
[LEFT]if (array_key_exists('img',$_FILES)) {
$tmpname = $_FILES['img']['tmp_name'];
$type = $_FILES['img']['type'];
$bname = $_FILES['img']['name'];
$hndFile = fopen($tmpname, "r");
$data = addslashes(fread($hndFile, filesize($tmpname)));} [/LEFT]
Liegt hier der Fehler, dass das Script nicht zwei Operationen in einem Zug druchführen kann, bzw. ich den Verlauf des Scriptes anders abstimmen muss?
Daraus resultiert wahrscheinlich auch der fehlende Eintrag des Dateinamens in die DB, oder? Er zeigt mir desbezüglich keinen Fehler an, schreibt den Bildnamen aber auch nicht in die DB.
Wie bekomme ich das geregelt?
Gruß
Kommentar