afbeelding via formulier uploaden naar DB

Status
Niet open voor verdere reacties.

Triksken59

Gebruiker
Lid geworden
6 dec 2008
Berichten
33
ik heb een tabel foto
met daarin een:
id begint ai prim key
naam varchar 50
bericht text
datum timestamp current timestamp
img varchar 5

Ik zou via een formulier hier bovengenoemde informatie willen inkrijgen, maar dat lukt me nu al dagen niet.
Ik had het eerst gedaan via twee tabellen, en dat werkt (via het complete boek php5 en de hulp van uw forum)

maar de gegevens in 1 tabel krijgen gaat niet.
ik krijg de insert into maar niet goed.
PHP:
if(isset($_POST['insert'])) {
$naam=$_POST['naam'];
$omschrijving=$_POST['omschrijving'];
$type=$_POST['type'];
$pad = "/wamp/www/wzh/pics_fie/oost/";

if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
//Controleer groote
if ($_FILES['afbeelding']['size'] > 60000) {
echo "Het bestand is te groot!";
exit;
}
//Controleer extentie
if (!ereg("((.gif|.jpg)$)", $_FILES['afbeelding']['name'], $extensie)) {
echo "Het bestand is niet van het juiste type";
exit;
}
$extensie = $extensie[0];


$sql='INSERT into foto (naam,omschrijving,type) VALUES ("'.addslashes($naam).'","'.addslashes($omschrijving).'","'.addslashes($type).'","'.addslashes($extensie).'")';
if (!mysql_query($sql)) {
echo "Het bijwerken van de database is mislukt!";
					}
$doelbestandsnaam = mysql_insert_id().$extensie; // naam bestaat uit sleutel en extensie.

if (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $pad.$doelbestandsnaam)) {
echo "Het bestand kan niet verplaatst worden!";
}
echo "Uw bestand ".$_FILES['afbeelding']['name']." is geupload";
} else {

echo $_FILES['afbeelding']['error'];


echo "Het uploaden is mislukt!";

}


} else {



$res=mysql_db_query("$db","$sql",$mysql_id);
$fout=mysql_errno($mysql_id);
if ($fout != 0) {
$fout=mysql_error($mysql_id);
echo '<font color="#FF2306">' . $fout . '</font>';
mysql_close($mysql_id);
echo '</body></html>';
exit;
}
else {
echo '<div align="center"><h3>De gegevens werden correct weggeschreven naar de database</h3></div>';
}
}
			
?>
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
<h2>Afbeelding invoegen</h2>
<table>
<tr><td>Naam :</td><td><input type="text" name="naam"></td></tr>
<tr><td>Omschrijving:</td><td><input type="text" name="omschrijving"></td></tr>
<tr><td>Type :</td><td><input type="text" name="type"></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="60000">
<tr><td>Upload afbeelding:</td><td> <input name="afbeelding" type="file"></td>
<tr><td><input type="reset" name="reset" value="Reset"></td><td><input type="submit" name="insert" value="Submit"></td></tr>
</table>
</form>
Hopelijk kunnen jullie me nog eens helpen.
Wanneer ik op de knob submit klik, wordt de foto wel geplaatst in de juiste directory, wanneer ik dat een tweede maal doe overschrijft hij de eerste foto.
En in mijn tabel komt er al helemaal niets.
 
Je Insert query heeft 3 velden opgegeven ( naam,omschrijving,type ) en probeert 4 dingen erin te zetten ( $naam, $omschrijving, $type, $extensie )

Dat is reden 1 dat ie et niet doet. Reden 2 is dat 'type' een gereserveerd woord is, en als je het als kolomnaam wilt gebruiken moet je er backticks omheen zetten ( het ` teken )

Beter nog is om type gewoon niet als veldnaam te gebruiken, dan loop je niet tegen dit soort problemen aan :)


De reden dat ze elkaar overschrijven is omdat je query faalt, want je probeert het ID van de query als filename te nemen, maar dat werkt niet omdat er geen IDs gegeneert worden als je query mislukt. Als je de query goed krijgt zal de rest ook vanzelf gaan werken.
 
Hartelijk dank om me terug op het juiste spoor te zetten. Ik denk dat ik gisteren een beetje te lang zitten zoeken heb en te veel verschillende zaken uitgeprobeert heb.
Ik heb alles nog eens overgedaan nu met een frisse kop en ik zit al een heel stuk verder.
Maar ik heb nog een probleem,
Nog even de verbetering van mijn tabel foto:
id begint ai prim key
naam varchar 30
bericht text
datum timestamp current_timestamp
bestandstype varchar 5

PHP:
include("con_db.php");
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");

if(isset($_POST['insert'])) {
$naam= $_POST['naam'];
$bericht= $_POST['bericht'];
$pad = "/wamp/www/wzh/pics_fie/oost/";

if (is_uploaded_file($_FILES['afbeelding']['tmp_name'])) {
//Controleer groote
if ($_FILES['afbeelding']['size'] > 60000) {
echo "Het bestand is te groot!";
exit;
}
//Controleer extentie
if (!ereg("((.gif|.jpg)$)", $_FILES['afbeelding']['name'], $extensie)) {
echo "Het bestand is niet van het juiste type";
exit;
}
$extensie = $extensie[0];

$sql='INSERT into foto (naam,bericht,bestandstype) VALUES ("'.addslashes($naam).'","'.addslashes($bericht).'","'.addslashes($extensie).'")';
if (!mysql_query($sql)) {
echo "Het bijwerken van de database is mislukt!";
}
$doelbestandsnaam = mysql_insert_id().$extensie; // naam bestaat uit sleutel en extensie.

if (!move_uploaded_file($_FILES['afbeelding']['tmp_name'], $pad.$doelbestandsnaam)) {
echo "Het bestand kan niet verplaatst worden!";
}
echo "Uw bestand ".$_FILES['afbeelding']['name']." is geupload";
} else {

echo $_FILES['afbeelding']['error'];

echo "Het uploaden is mislukt!";
}
} else {
$res=mysql_db_query("$db","$sql",$mysql_id);
$fout=mysql_errno($mysql_id);
if ($fout != 0) {
$fout=mysql_error($mysql_id);
echo '<font color="#FF2306">' . $fout . '</font>';
mysql_close($mysql_id);
echo '</body></html>';
exit;
}
else {
echo '<div align="center"><h3>De gegevens werden correct weggeschreven naar de database</h3></div>';
}
}
?>

HTML:
<form action="upl_afb1.php" method="post" enctype="multipart/form-data"><h2>Afbeelding invoegen</h2>
<table>
<tr><td>Naam :</td><td><input type="text" name="naam"></td></tr>
<tr><td>Bericht:</td><td><textarea name="bericht" rows=4 cols=30></textarea></td></tr>
<input type="hidden" name="MAX_FILE_SIZE" value="60000">
<tr><td>Upload afbeelding:</td><td> <input name="afbeelding" type="file"></td>
<tr><td>&nbsp;</td><td><input type="reset" name="reset" value="Reset">&nbsp;&nbsp;&nbsp;<input type="submit" name="insert" value="Submit"></td></tr>
</table>
</form>					
</div>

Het uploaden werkt zoals het moet, de afbeelding komt in mijn map "oost" en de naam, bericht, datum en bestandstype worden ingevuld in mijn tabel foto.

Ik heb intussen mijn php en html gescheiden.

De bedoeling is dat ik dit voor mijzelf gebruik om op mijn home pagina de laatste 5 items weer te geven die ik op mijn site plaats.

Ik heb ondertussen ook mijn code voor het tonen van mijn afbeelding, maar hier loopt het nog even mis.
als ik de limit instel op 1 is alles ok. Ik krijg dan de naam en de omschrijving (bericht) en ook de foto die hierbij hoort, maar als ik de limit op 2 instel dan krijg ik bij de eerste rij de naam + het bericht + beide foto's en in de tweede rij krijg ik ook de twee foto's.
Op welke manier kan ik verkrijgen dat er per rij slechts 1 foto weergegeven wordt?
PHP:
include("con_db.php");
$mysql_id=mysql_connect("$dbhost","$dbuser","$dbpass");
					
$sitepad = "/wzh/pics_fie/oost/";
$sql = "SELECT id,naam,bericht,bestandstype FROM foto ORDER BY datum DESC LIMIT 2";
$resultaat  = mysql_query($sql); // voer SQL code uit
if (mysql_num_rows($resultaat) > 0) {
echo "<table border=1>";
echo "<tr><td><b>Naam</b></td><td><b>Omschrijving</b></td><td>Afbeeldingen</td></tr>"; // bovenste regel
while ($rij = mysql_fetch_array($resultaat)) {
echo "<tr>";
echo "<td>".$rij["naam"]."</td>";
echo "<td>".$rij["bericht"]."</td>";
echo "<td>";
$afbeeldingen = mysql_query($sql);
if (mysql_num_rows($afbeeldingen) > 0) {
while ($afb_rij = mysql_fetch_array($afbeeldingen)) {
	$bestandsnaam = $sitepad.$afb_rij["id"].$afb_rij["bestandstype"];
	echo "<img src=\"$bestandsnaam\">&nbsp;";
}
} else {
							
echo "Geen afbeeldingen voor deze categorie";
}
echo "</td></tr>";

}
echo "</table>";
}

mysql_close($mysql_id);
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan