Het enigste wat ik nu nog zou willen kunnen is een foto uploaden.(en liefst meerdere fotos) Ik zou willen beginnen met de foto in de tabel te stoppen en deze dan ook uiteindelijk uit te lezen.
Dit lukt mij niet. Wanneer ik onderstaande code laat uitvoeren krijg ik de melding 'Werd toegevoegd', als ik dan kijk in veld 'foto1' zie ik een '0' staan. Ook vind ik dan nergens de foto terug op de hosting.
Ik zou willen dat mijn foto1 die ik zal uploaden de naam krijgt foto1-firmaID.jpg, voor meerdere foto's zal dit dan foto2-firmaID.jpg, foto3-firmaID.jpg,.. worden. (dus via het uniek veld firmaID)
<?php
error_reporting(E_ALL);
//replace usernaem,password, and yourdb with the information for your database
mysql_connect("***","***","***") or die(mysql_error());
mysql_select_db("raamdecora_db1");
//replace TestTable with the name of your table
//also in a real app you would get the id dynamically
$sql = "select * from klanten where firmaID = '$_GET[firmaID]'";
$query = mysql_query($sql) or die(mysql_error());
while ($row = mysql_fetch_array($query)){
$firmaID = $row['firmaID'];
//we will echo these into the proper fields
}
mysql_free_result($query);
?>
<u>Foto toevoegen: </u>
<form action="fototoevoegen.php" method="post" enctype="multipart/form-data" name="form1">
<table width="95%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>KlantenID</td>
<td><input type="text" value="<?php echo $firmaID;?>" name="firmaID"></td>
</tr>
<tr>
<td><input type="hidden" name="MAX_FILE_SIZE" value="2048000"></td>
</tr>
<tr>
<td>foto 1 :</td>
<td><input type="file" accept="image/jpeg" name="foto1"></td>
</tr>
<tr>
<td><input type="submit" value="foto toevoegen" name="submit"></td>
</tr>
</table>
</form>
Enkel de naam in je database bewaren is zeker niet voldoende; je zal de foto ook naar je server moeten uploaden.
Om het id van de ingevoerde rij te verkrijgen (welk je dan kan gebruiken als naam van de foto, zodat het aan je database gelinkt is) kan je gebruik maken van PHP.net: mysql_insert_id.
Enkel de naam in je database bewaren is zeker niet voldoende; je zal de foto ook naar je server moeten uploaden.
Om het id van de ingevoerde rij te verkrijgen (welk je dan kan gebruiken als naam van de foto, zodat het aan je database gelinkt is) kan je gebruik maken van PHP.net: mysql_insert_id.
Kun jij mij helpen hier mee? Of vertellen wat ik precies moet doen? Ik zou u dankbaar zijn. :-) Ik begrijp het niet goed meer... Ik dacht dat via deze code mijn foto werd upgeload en dat de naam werd opgeslagen in de tabel. Wat blijkt dus niet te zijn. Had ergens gelezen dat dit op dezelde manier moet zoals gegevens met POST, maar dan uiteraard met FILES.
[..quote..]
Voor uit uitvoeren van de query typ je :
[..code..]
Daarna krijg je je SQL op je scherm te zien en deze plak voer je handmatig uit..
Krijg je een error? Hoe ziet de query eruit? Veld is Varchar?
Edit:
Moet
[..code..]
Niet zo?
[..code..]
Nu krijg ik via uw methode al iets te zien in de tabel zelf namelijk -> Array[name]
Wat nu? Zou zo graag een foto willen toevoegen aan mijn rijen. Snapt niet dat dit op geen enkele manier wilt werken bij me. Ik zal nochmaals mijn code plaatsen. Ik wil dus dat we voor iedere klant een foto kunnen uploaden die de volgende naam draagt -> 'foto1-firmaID.jpg' (firmaID = moet uit de databank komen, zodat ik steeds weet welke foto bij welke klant horen)
thnx!!! Ik krijg nu eindelijk mijn fotonaam in mijn databank. SUPER!!! Is blijkbaar al een heuse stap voor mij. (vond tekst makkelijker dan fotos) Nu zou ik enkel nog de foto moeten kunnen opladen en de naam veranderen in IDnr. Iemand een voorbeeldje?
op php.net vind je ook een hele hoop voorbeelden...
Hoi wimmarien,
Bedankt voor de documentatie. Echter krijg ik steeds de melding 'Werd toegevoegd! Het bestand is geen png, jpg of gif'. De naam van de foto staat wel in het veld. Maar de foto zelf wordt niet opgeladen. Wat doe ik verkeerd?
<?php
error_reporting(E_ALL);
$con = mysql_connect("***","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("raamdecora_db1", $con);
$sql="INSERT INTO klanten (firma, straat, huisnummer, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
VALUES
('".mysql_real_escape_string($_POST['firma'])."','".mysql_real_escape_string($_POST['straat'])."','".mysql_real_escape_string($_POST['huisnummer'])."','".mysql_real_escape_string($_POST['groep_binnen'])."','".mysql_real_escape_string($_POST['groep_buiten'])."','".mysql_real_escape_string($_POST['groep_gordijnstoffen'])."','".mysql_real_escape_string($_FILES['foto1']['name'])."')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<?
//kijken of er een bestand is geselecteerd
if(isset($_FILES['foto1'])) {
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['foto1']['size'] > 102400) {
echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
} else {
//kijken of het bestand wel een gif, png of jpg is
if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {
//kijken of er een nieuwe naam aan het bestand is gegeven
if(empty($_POST['firma'])) {
$naam = $_FILES['foto1']['name'];
} else {
//strip de extensie om die achter de nieuwe bestandsnaam te plakken
$x = strrchr($_FILES['foto1']['name'], ".");
$naam = $_POST['firma'] . $x;
}
//het bestand uploaden met de nieuwe of oude naam
move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
//voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
chmod("uploads/" . $naam, 0777);
} else {
echo "Het bestand is geen png, jpg of gif";
}
}
} else {
echo "Selecteer een plaatje";
}
?>
<?
echo "Werd toegevoegd!";
mysql_close($con)
?>
lijn 39 en 41: je moet chmodden voordat je het plaatje upload
Voor mij krijgt het trouwens de voorkeur om die chmod handmatig te doen en uit je script te verwijderen. Als je dit namelijk 1x doet blijft de mode zo staan tot je ze zelf terug veranderd...
lijn 39 en 41: je moet chmodden voordat je het plaatje uploadÂ
Voor mij krijgt het trouwens de voorkeur om die chmod handmatig te doen en uit je script te verwijderen. Als je dit namelijk 1x doet blijft de mode zo staan tot je ze zelf terug veranderd...
Ik had van te voren al de map 'uploads' handmatig op 777 gezet. Heb voor de zekerheid het volgende uit mijn code gehaald.
Toch krijg ik nog steeds geen afbeelding in de map te zien. LET OP: ik krijg wel steeds voglende melding wanneer ik een plaatje wil uploaden -> 'Het bestand is geen png, jpg of gif'
<?php
error_reporting(E_ALL);
$con = mysql_connect("***","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("raamdecora_db1", $con);
$sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
VALUES
('".mysql_real_escape_string($_POST['firma'])."','".mysql_real_escape_string($_POST['straat'])."','".mysql_real_escape_string($_POST['postcode'])."','".mysql_real_escape_string($_POST['stad'])."','".mysql_real_escape_string($_POST['tel'])."','".mysql_real_escape_string($_POST['email'])."','".mysql_real_escape_string($_POST['website'])."','".mysql_real_escape_string($_POST['groep_binnen'])."','".mysql_real_escape_string($_POST['groep_buiten'])."','".mysql_real_escape_string($_POST['groep_gordijnstoffen'])."','".mysql_real_escape_string($_FILES['foto1']['name'])."')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<?
//kijken of er een bestand is geselecteerd
if(isset($_FILES['foto1'])) {
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['foto1']['size'] > 102400) {
echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
} else {
//kijken of het bestand wel een gif, png of jpg is
if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {
//kijken of er een nieuwe naam aan het bestand is gegeven
if(empty($_POST['firma'])) {
$naam = $_FILES['foto1']['name'];
} else {
//strip de extensie om die achter de nieuwe bestandsnaam te plakken
$x = strrchr($_FILES['foto1']['name'], ".");
$naam = $_POST['firma'] . $x;
}
//het bestand uploaden met de nieuwe of oude naam
move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
} else {
echo "Het bestand is geen png, jpg of gif";
}
}
} else {
echo "Selecteer een plaatje";
}
?>
<?
echo "Werd toegevoegd!";
mysql_close($con)
?>
Ik had van te voren al de map 'uploads' handmatig op 777 gezet. Heb voor de zekerheid het volgende uit mijn code gehaald.
[..code..]
Toch krijg ik nog steeds geen afbeelding in de map te zien. LET OP: ik krijg wel steeds voglende melding wanneer ik een plaatje wil uploaden -> 'Het bestand is geen png, jpg of gif'
Mijn code:
[..code..]
Om de extensie te bekijken en kijken of het toegestaan is doe ik dit:
<?php
error_reporting(E_ALL);
$con = mysql_connect("***","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("raamdecora_db1", $con);
$sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
VALUES
('".mysql_real_escape_string($_POST['firma'])."','".mysql_real_escape_string($_POST['straat'])."','".mysql_real_escape_string($_POST['postcode'])."','".mysql_real_escape_string($_POST['stad'])."','".mysql_real_escape_string($_POST['tel'])."','".mysql_real_escape_string($_POST['email'])."','".mysql_real_escape_string($_POST['website'])."','".mysql_real_escape_string($_POST['groep_binnen'])."','".mysql_real_escape_string($_POST['groep_buiten'])."','".mysql_real_escape_string($_POST['groep_gordijnstoffen'])."','".mysql_real_escape_string($_FILES['foto1']['name'])."')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<?
//kijken of er een bestand is geselecteerd
if(isset($_FILES['foto1'])) {
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['foto1']['size'] > 102400) {
echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
} else {
//kijken of het bestand wel een gif, png of jpg is
if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {
//kijken of er een nieuwe naam aan het bestand is gegeven
if(empty($_POST['firma'])) {
$naam = $_FILES['foto1']['name'];
} else {
//strip de extensie om die achter de nieuwe bestandsnaam te plakken
$x = strrchr($_FILES['foto1']['name'], ".");
$naam = $_POST['firma'] . $x;
}
//het bestand uploaden met de nieuwe of oude naam
move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
//voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
//chmod("uploads/" . $naam, 777);
} else {
echo "Het bestand is geen png, jpg of gif";
}
}
} else {
echo "Selecteer een plaatje";
}
?>
<?
echo "Werd toegevoegd!";
mysql_close($con)
?>
Probeer het mimetype 'image/pjepg' toe te voegen, in Internet Explorer wordt een jpg-afbeelding namelijk met dit mimetype doorgestuurd.
heb ik net even gedaan en krijg de melding 'Het bestand is geen png, jpg of gif Werd toegevoegd! '
Als ik kijk in de databank dan zie ik dat "hallo.jpg" werd ingevuld. alleen is "hallo.jpg" niet opgeladen :-( Dat is het hem nu net, ik vind in geen 100 jaar hoe ervoor te zorgen dat deze ook online gaat.
<?php
error_reporting(E_ALL);
$con = mysql_connect("localhost","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("raamdecora_db1", $con);
$sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
VALUES
('".mysql_real_escape_string($_POST['firma'])."','".mysql_real_escape_string($_POST['straat'])."','".mysql_real_escape_string($_POST['postcode'])."','".mysql_real_escape_string($_POST['stad'])."','".mysql_real_escape_string($_POST['tel'])."','".mysql_real_escape_string($_POST['email'])."','".mysql_real_escape_string($_POST['website'])."','".mysql_real_escape_string($_POST['groep_binnen'])."','".mysql_real_escape_string($_POST['groep_buiten'])."','".mysql_real_escape_string($_POST['groep_gordijnstoffen'])."','".mysql_real_escape_string($_FILES['foto1']['name'])."')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<?
//kijken of er een bestand is geselecteerd
if(isset($_FILES['foto1'])) {
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['foto1']['size'] > 102400) {
echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
} else {
//kijken of het bestand wel een gif, png of jpg is
if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/pjepg") {
//kijken of er een nieuwe naam aan het bestand is gegeven
if(empty($_POST['firma'])) {
$naam = $_FILES['foto1']['name'];
} else {
//strip de extensie om die achter de nieuwe bestandsnaam te plakken
$x = strrchr($_FILES['foto1']['name'], ".");
$naam = $_POST['firma'] . $x;
}
//het bestand uploaden met de nieuwe of oude naam
move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
//voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
//chmod("uploads/" . $naam, 777);
} else {
echo "Het bestand is geen png, jpg of gif";
}
}
} else {
echo "Selecteer een plaatje";
}
?>
<?
echo "Werd toegevoegd!";
mysql_close($con)
?>
Zoals je kan zien bij het uitlezen is de foto niet zichtbaar omdat hij niet wordt opgeladen. Test gerust zelf even het toevoegen uit.
Ik wil dus dat per klant een foto kan opgeladen worden. Graag zou ik willen hebben dat de foto de naam krijgt van het uniek veld firmaID. Wanneer het lukt om een foto op te laden zou ik graag hebben dat er per klant 3 foto's kunnen opgeladen worden, telkens met de naam foto1-firmaID.jpg, foto2-firmaID.jpg, foto3-firmaID.jpg. Vooraleer dit te kunnen doen moeten ik eerst vinden wat het probleem is dat hij de foto momenteel niet oplaad. Suggesties welkom!!!! Vragen? Shoot!
<?php
error_reporting(E_ALL);
$con = mysql_connect("localhost","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("raamdecora_db1", $con);
$sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
VALUES
('".mysql_real_escape_string($_POST['firma'])."','".mysql_real_escape_string($_POST['straat'])."','".mysql_real_escape_string($_POST['postcode'])."','".mysql_real_escape_string($_POST['stad'])."','".mysql_real_escape_string($_POST['tel'])."','".mysql_real_escape_string($_POST['email'])."','".mysql_real_escape_string($_POST['website'])."','".mysql_real_escape_string($_POST['groep_binnen'])."','".mysql_real_escape_string($_POST['groep_buiten'])."','".mysql_real_escape_string($_POST['groep_gordijnstoffen'])."','".mysql_real_escape_string($_FILES['foto1']['name'])."')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
?>
<?
//kijken of er een bestand is geselecteerd
if(isset($_FILES['foto1'])) {
//als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
if($_FILES['foto1']['size'] > 102400) {
echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
} else {
//kijken of het bestand wel een gif, png of jpg is
if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/pjepg") {
//kijken of er een nieuwe naam aan het bestand is gegeven
if(empty($_POST['firma'])) {
$naam = $_FILES['foto1']['name'];
} else {
//strip de extensie om die achter de nieuwe bestandsnaam te plakken
$x = strrchr($_FILES['foto1']['name'], ".");
$naam = $_POST['firma'] . $x;
}
//het bestand uploaden met de nieuwe of oude naam
move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
//voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
//chmod("uploads/" . $naam, 777);
} else {
echo "Het bestand is geen png, jpg of gif";
echo "Het bestand van het type ".$_FILES['foto1']['name']." is geen png, jpg of gif";
}
}
} else {
echo "Selecteer een plaatje";
}
?>
<?
echo "Werd toegevoegd!";
mysql_close($con)
?>
Ik neem aan dat je hiermee bezig bent?
Verder moet ik zeggen dat de controle wel heel zwak is.
ik raad je aan om bij numerieke velden de functie PHP.net: is_numeric toepast, en de laatste 3 is een ja/nee functie..
maak dit in een dropbox
[..code..]
Dit staat veel netter IMO
Dag Arie2Zero,
Ik ben er niet mee bezig. Ik ben momenteel het noorden kwijt en weet niet meer wat te doen hier mee..
Dat van die Ja/neen functie snap ik, dit zou ik achteraf wel wijzigen. Wou het eerst testen met gewone textvelden.
Ik snap gewoon niet waarom die foto niet opgeladen wordt...
Het is niet de bedoeling dat iemand rechtstreeks naar klantentoevoegen.php gaat, maar wel naar klanten_toevoegen.php.