login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Toevoegen van foto in DATABANK (lukt mij niet!) (Opgelost)

Offline staic - 02/06/2009 12:44 (laatste wijziging 02/06/2009 12:45)
Avatar van staicNieuw lid Beste,

Ik ben een leek in PHP maar kan intussen al gegevens toevoegen/wijzigen/verwijderen in combinatie met SQL/DATABANK.

Hier onder mijn eerste project.

Mijn huidige tabel bevat:

firmaID int(5) auto_increment
firma varchar(50)
straat varchar(50)
huisnummer decimal(5,0)
groep_binnen decimal(1,0)
groep_buiten decimal(1,0)
groep_gordijnstoffen decimal(1,0)
foto1 varchar(255)


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)

Foto toevoegen formulier:

  1. <?php
  2. //replace usernaem,password, and yourdb with the information for your database
  3. mysql_connect("***","***","***") or die(mysql_error());
  4. mysql_select_db("raamdecora_db1");
  5.  
  6. //replace TestTable with the name of your table
  7. //also in a real app you would get the id dynamically
  8. $sql = "select * from klanten where firmaID = '$_GET[firmaID]'";
  9. $query = mysql_query($sql) or die(mysql_error());
  10.  
  11. while ($row = mysql_fetch_array($query)){
  12.  
  13. $firmaID = $row['firmaID'];
  14. //we will echo these into the proper fields
  15.  
  16. }
  17. ?>
  18.  
  19.  
  20. <u>Foto toevoegen: </u>
  21. <form action="fototoevoegen.php" method="post" enctype="multipart/form-data" name="form1">
  22. <table width="95%" border="0" cellspacing="0" cellpadding="0">
  23. <tr>
  24. <td>KlantenID</td>
  25. <td><input type="text" value="<?php echo $firmaID;?>" name="firmaID"></td>
  26. </tr>
  27. <tr>
  28. <td><input type="hidden" name="MAX_FILE_SIZE" value="2048000"></td>
  29. </tr>
  30. <tr>
  31. <td>foto 1 :</td>
  32. <td><input type="file" accept="image/jpeg" name="foto1"></td>
  33. </tr>
  34. <tr>
  35. <td><input type="submit" value="foto toevoegen" name="submit"></td>
  36. </tr>
  37. </table>
  38. </form>


Foto toevoegen:

  1. <?php
  2. $con = mysql_connect("***","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10. $sql="INSERT INTO klanten (foto1)
  11. VALUES
  12. ('$_FILES[foto1][name]')";
  13.  
  14. if (!mysql_query($sql,$con))
  15. {
  16. die('Error: ' . mysql_error());
  17. }
  18. echo "Werd toegevoegd!";
  19.  
  20. ?>


64 antwoorden

Gesponsorde links
Offline Wim - 02/06/2009 13:09
Avatar van Wim Crew algemeen 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.
Offline staic - 02/06/2009 13:17
Avatar van staic Nieuw lid
wimmarien schreef:
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.

Wat doe ik verkeerd? Wat heb ik te kort?

Ik hoor het graag van jullie. 
Offline jaronneke - 02/06/2009 13:33
Avatar van jaronneke MySQL interesse Er wordt alleen de foto naam in een database neer gezet gebruik eens

PHP.net: move_uploaded_file
Offline staic - 02/06/2009 14:21
Avatar van staic Nieuw lid
jaronneke schreef:
Er wordt alleen de foto naam in een database neer gezet gebruik eens

PHP.net: move_uploaded_file


Zelfs de naam van de foto in de database zetten lukt niet.
Offline ArieMedia - 02/06/2009 14:54 (laatste wijziging 02/06/2009 14:57)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
staic schreef:
[..quote..]

Zelfs de naam van de foto in de database zetten lukt niet.

Voor uit uitvoeren van de query typ je :

  1. //$sql bevat de query die je opbouwt
  2. die($sql);


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
  1. $sql="INSERT INTO klanten (foto1)
  2. VALUES
  3. ('$_FILES[foto1][name]')";

Niet zo?
  1. $sql = 'INSERT INTO klanten (foto1)
  2. VALUES ("'.$_FILES['foto1']['name'].'")';
Offline staic - 03/06/2009 10:03 (laatste wijziging 03/06/2009 10:04)
Avatar van staic Nieuw lid
Arie2Zero schreef:
[..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)


klanten_toevoegen.php
  1. <u>Klanten toevoegen: </u>
  2. <form action="klantentoevoegen.php" method="post" ENCTYPE="multipart/form-data">
  3. <table width="95%" border="0" cellspacing="0" cellpadding="0">
  4. <tr>
  5. <td>Firma :</td>
  6. <td><input type="text" name="firma"></td>
  7. </tr>
  8. <tr>
  9. <td>Straat :</td>
  10. <td><input type="text" name="straat"></td>
  11. </tr>
  12. <tr>
  13. <td>Huisnummer :</td>
  14. <td><input type="text" name="huisnummer"></td>
  15. </tr>
  16. <tr>
  17. <td>Groep binnenzonwering :(ja=1 / neen=0)</td>
  18. <td><input type="text" name="groep_binnen"></td>
  19. </tr>
  20. <tr>
  21. <td>Groep buitenzonwering :(ja=1 / neen=0)</td>
  22. <td><input type="text" name="groep_buiten"></td>
  23. </tr>
  24. <tr>
  25. <td>Groep gordijnstoffen :(ja=1 / neen=0)</td>
  26. <td><input type="text" name="groep_gordijnstoffen"></td>
  27. </tr>
  28. <tr>
  29. <td>Foto1</td>
  30. <td><input type="file" name="foto1"></td>
  31. </tr>
  32. <tr>
  33. <td><input type="submit" value="Klanten toevoegen" name="submit"><input type="reset" value="Wis velden" name="reset"></td>
  34. </tr>
  35. </table>
  36. </form>


klantentoevoegen.php
  1. <?php
  2. $con = mysql_connect("***","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10.  
  11.  
  12. $sql="INSERT INTO klanten (firma, straat, huisnummer, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  13. VALUES
  14. ('$_POST[firma]','$_POST[straat]','$_POST[huisnummer]','$_POST[groep_binnen]','$_POST[groep_buiten]','$_POST[groep_gordijnstoffen]','$_FILES[foto1][name]')";
  15.  
  16. if (!mysql_query($sql,$con))
  17. {
  18. die('Error: ' . mysql_error());
  19. }
  20. echo "Werd toegevoegd!";
  21.  
  22. ?>


Mijn databank:

<img src="http://www.raamdecoratie.be/databank.jpg">

Kan iemand mijn code aanvullen of wijzigen aub? Ik geraak er echt niet uit ivm. die foto.
Offline Wim - 03/06/2009 10:32
Avatar van Wim Crew algemeen Variabelen plaats je BUITEN quotes!

  1. $sql="INSERT INTO klanten (firma, straat, huisnummer, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  2. VALUES
  3. ('".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'])."')";
Offline staic - 03/06/2009 10:53
Avatar van staic Nieuw lid
wimmarien schreef:
Variabelen plaats je BUITEN quotes!

[..code..]


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?

  1. <?php
  2. $con = mysql_connect("***","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10.  
  11.  
  12. $sql="INSERT INTO klanten (firma, straat, huisnummer, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  13. VALUES
  14. ('".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'])."')";
  15.  
  16. if (!mysql_query($sql,$con))
  17. {
  18. die('Error: ' . mysql_error());
  19. }
  20. echo "Werd toegevoegd!";
  21.  
  22. ?>
Offline Wim - 03/06/2009 11:33
Avatar van Wim Crew algemeen Bij de tutorials....
http://www.site..._bestanden

op php.net vind je ook een hele hoop voorbeelden...
Offline staic - 03/06/2009 12:37
Avatar van staic Nieuw lid
wimmarien schreef:
Bij de tutorials....
http://www.site..._bestanden

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?

Hieronder mijn laatste code:

formulier:
  1. <u>Klanten toevoegen: </u>
  2. <form action="klantentoevoegen.php" method="post" ENCTYPE="multipart/form-data" id="upload">
  3. <table width="95%" border="0" cellspacing="0" cellpadding="0">
  4. <tr>
  5. <td>Firma :</td>
  6. <td><input type="text" name="firma"></td>
  7. </tr>
  8. <tr>
  9. <td>Straat :</td>
  10. <td><input type="text" name="straat"></td>
  11. </tr>
  12. <tr>
  13. <td>Huisnummer :</td>
  14. <td><input type="text" name="huisnummer"></td>
  15. </tr>
  16. <tr>
  17. <td>Groep binnenzonwering :(ja=1 / neen=0)</td>
  18. <td><input type="text" name="groep_binnen"></td>
  19. </tr>
  20. <tr>
  21. <td>Groep buitenzonwering :(ja=1 / neen=0)</td>
  22. <td><input type="text" name="groep_buiten"></td>
  23. </tr>
  24. <tr>
  25. <td>Groep gordijnstoffen :(ja=1 / neen=0)</td>
  26. <td><input type="text" name="groep_gordijnstoffen"></td>
  27. </tr>
  28. <tr>
  29. <td>Foto1</td>
  30. <td><input type="hidden" name="MAX_FILE_SIZE" value="1000">
  31. <input type="file" name="foto1"></td>
  32. </tr>
  33. <tr>
  34. <td><input type="submit" value="Klanten toevoegen" name="submit"><input type="reset" value="Wis velden" name="reset"></td>
  35. </tr>
  36. </table>
  37. </form>


klantentoevoegen.php:
  1. <?php
  2. $con = mysql_connect("***","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10. $sql="INSERT INTO klanten (firma, straat, huisnummer, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  11. VALUES
  12. ('".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'])."')";
  13.  
  14. if (!mysql_query($sql,$con))
  15. {
  16. die('Error: ' . mysql_error());
  17. }
  18. ?>
  19.  
  20. <?
  21. //kijken of er een bestand is geselecteerd
  22. if(isset($_FILES['foto1'])) {
  23. //als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
  24. if($_FILES['foto1']['size'] > 102400) {
  25. echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
  26. } else {
  27. //kijken of het bestand wel een gif, png of jpg is
  28. if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {
  29. //kijken of er een nieuwe naam aan het bestand is gegeven
  30. if(empty($_POST['firma'])) {
  31. $naam = $_FILES['foto1']['name'];
  32. } else {
  33. //strip de extensie om die achter de nieuwe bestandsnaam te plakken
  34. $x = strrchr($_FILES['foto1']['name'], ".");
  35. $naam = $_POST['firma'] . $x;
  36. }
  37. //het bestand uploaden met de nieuwe of oude naam
  38. move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
  39. //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
  40. chmod("uploads/" . $naam, 0777);
  41. } else {
  42. echo "Het bestand is geen png, jpg of gif";
  43. }
  44. }
  45. } else {
  46. echo "Selecteer een plaatje";
  47. }
  48. ?>
  49.  
  50. <?
  51. echo "Werd toegevoegd!";
  52.  
  53. ?>
Offline Wim - 03/06/2009 12:54
Avatar van Wim Crew algemeen Heeft de directory naar waar je upload de correcte rechten? (schijf-rechten)

Anders chmod je de folder "uploads" even naar 766
Offline staic - 03/06/2009 12:57
Avatar van staic Nieuw lid
wimmarien schreef:
Heeft de directory naar waar je upload de correcte rechten? (schijf-rechten)

Anders chmod je de folder "uploads" even naar 766


De directory "uploads" staat op 777. En toch zit er niks in die map...
Offline Wim - 03/06/2009 13:00
Avatar van Wim Crew algemeen 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...
Offline staic - 03/06/2009 13:24
Avatar van staic Nieuw lid
wimmarien schreef:
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.
  1. //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
  2. chmod("uploads/" . $naam, 0777);


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:
  1. <?php
  2. $con = mysql_connect("***","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10. $sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  11. VALUES
  12. ('".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'])."')";
  13.  
  14. if (!mysql_query($sql,$con))
  15. {
  16. die('Error: ' . mysql_error());
  17. }
  18. ?>
  19.  
  20. <?
  21. //kijken of er een bestand is geselecteerd
  22. if(isset($_FILES['foto1'])) {
  23. //als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
  24. if($_FILES['foto1']['size'] > 102400) {
  25. echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
  26. } else {
  27. //kijken of het bestand wel een gif, png of jpg is
  28. if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {
  29. //kijken of er een nieuwe naam aan het bestand is gegeven
  30. if(empty($_POST['firma'])) {
  31. $naam = $_FILES['foto1']['name'];
  32. } else {
  33. //strip de extensie om die achter de nieuwe bestandsnaam te plakken
  34. $x = strrchr($_FILES['foto1']['name'], ".");
  35. $naam = $_POST['firma'] . $x;
  36. }
  37. //het bestand uploaden met de nieuwe of oude naam
  38. move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
  39. } else {
  40. echo "Het bestand is geen png, jpg of gif";
  41. }
  42. }
  43. } else {
  44. echo "Selecteer een plaatje";
  45. }
  46. ?>
  47.  
  48. <?
  49. echo "Werd toegevoegd!";
  50.  
  51. ?>
Offline ArieMedia - 03/06/2009 13:45 (laatste wijziging 03/06/2009 13:48)
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
staic schreef:
[..quote..]

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:

  1. // $image bevat de afbeelding
  2. $toegestaan = array('jpg', 'gif', 'png', 'jpeg');
  3. $ext = array_pop(explode('.', $image));
  4. if(in_array($ext, $toegestaan)) {
  5.  
  6. } else die('niet toegestaan');


Het ziet er heel iets anders uit bij mij (Omdat ik OO werk). Maar het komt kortweg op hetzelfde neer. (mist hier alleen enkel wat controles)

Misschien kan je dit proberen?

Verder vind ik het raar dat je de afbeelding al in de database propt, voordat hij ook maar daadwerkelijk word toegelaten..
Offline Wim - 03/06/2009 13:48 (laatste wijziging 03/06/2009 13:50)
Avatar van Wim Crew algemeen Dat komt door deze lijn:
if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {

Dit wil zeggen dat het mime-type van je bestand geen gif/jpg/jpeg of png is. Welk bestand probeer je te uploaden?

Je kan debuggen door $_FILES['foto1']['type'] te echo'en en te kijken naar de waarde.

Meer informatie vindt je hier: http://be.php.n...upload.php

@Arie: zo controleer je enkel de extentie. Veiliger is om het mime-type te controleren, zo ben je tenminste zeker dat het écht een figuur is.
Offline ArieMedia - 03/06/2009 14:09
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
wimmarien schreef:
@Arie: zo controleer je enkel de extentie. Veiliger is om het mime-type te controleren, zo ben je tenminste zeker dat het écht een figuur is.


  1. $toegestaan = array('jpg', 'gif', 'png', 'jpeg');
  2. $ext = $_FILES['bestand']['type'];
  3. if(in_array($ext, 'image/'.$toegestaan)) {
  4.  
  5. } else die('niet toegestaan');


Maargoed klopt dat mime veilger is.
Offline staic - 03/06/2009 14:12 (laatste wijziging 03/06/2009 14:19)
Avatar van staic Nieuw lid
wimmarien schreef:
Dat komt door deze lijn:
if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {

Dit wil zeggen dat het mime-type van je bestand geen gif/jpg/jpeg of png is. Welk bestand probeer je te uploaden?

Je kan debuggen door $_FILES['foto1']['type'] te echo'en en te kijken naar de waarde.

Meer informatie vindt je hier: http://be.php.n...upload.php

@Arie: zo controleer je enkel de extentie. Veiliger is om het mime-type te controleren, zo ben je tenminste zeker dat het écht een figuur is.


Het zijn telkens '.jpg' die ik wil uploaden. Dat is nu net wat ik niet snap, het zijn nochtans echte JPG's. En hij doet het niet?

indien je het formulier wilt testen -> http://www.raamdecoratie.be/klanten_toevoegen.php

  1. <?php
  2. $con = mysql_connect("***","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10. $sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  11. VALUES
  12. ('".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'])."')";
  13.  
  14. if (!mysql_query($sql,$con))
  15. {
  16. die('Error: ' . mysql_error());
  17. }
  18. ?>
  19.  
  20. <?
  21. //kijken of er een bestand is geselecteerd
  22. if(isset($_FILES['foto1'])) {
  23. //als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
  24. if($_FILES['foto1']['size'] > 102400) {
  25. echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
  26. } else {
  27. //kijken of het bestand wel een gif, png of jpg is
  28. if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/jpeg") {
  29. //kijken of er een nieuwe naam aan het bestand is gegeven
  30. if(empty($_POST['firma'])) {
  31. $naam = $_FILES['foto1']['name'];
  32. } else {
  33. //strip de extensie om die achter de nieuwe bestandsnaam te plakken
  34. $x = strrchr($_FILES['foto1']['name'], ".");
  35. $naam = $_POST['firma'] . $x;
  36. }
  37. //het bestand uploaden met de nieuwe of oude naam
  38. move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
  39. //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
  40. //chmod("uploads/" . $naam, 777);
  41. } else {
  42. echo "Het bestand is geen png, jpg of gif";
  43. }
  44. }
  45. } else {
  46. echo "Selecteer een plaatje";
  47. }
  48. ?>
  49.  
  50. <?
  51. echo "Werd toegevoegd!";
  52.  
  53. ?>


Indien het anders kan mag dit ook. Zou alleen willen dat het werkt  
Offline ArieMedia - 03/06/2009 14:42
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Citaat:
Indien het anders kan mag dit ook. Zou alleen willen dat het werkt
Dan moet je het doen zoals ik zei in de post hiervoor;
Het is alleen een stukje minder veilig.
Offline staic - 03/06/2009 14:53
Avatar van staic Nieuw lid
Arie2Zero schreef:
[..quote..]Dan moet je het doen zoals ik zei in de post hiervoor;
Het is alleen een stukje minder veilig.


Waar zet je dan juist die code? Of met wat vervang ik deze code? Kun jij deze integreren in mijn bovenstaande code?

Sorry hoor..

  1. // $image bevat de afbeelding
  2.  
  3. $toegestaan = array('jpg', 'gif', 'png', 'jpeg');
  4.  
  5. $ext = array_pop(explode('.', $image));
  6.  
  7. if(in_array($ext, $toegestaan)) {
  8.  
  9. } else die('niet toegestaan');


Offline Koen - 03/06/2009 14:55
Avatar van Koen PHP expert Probeer het mimetype 'image/pjepg' toe te voegen, in Internet Explorer wordt een jpg-afbeelding namelijk met dit mimetype doorgestuurd.
Offline staic - 03/06/2009 15:00
Avatar van staic Nieuw lid
Koen schreef:
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.

Mijn map 'uploads' heeft nochtans rechten 777.
Offline Koen - 03/06/2009 15:17
Avatar van Koen PHP expert Wat is je huidige code? (na het toevoegen van het mimetype)
Offline staic - 03/06/2009 15:30
Avatar van staic Nieuw lid
Koen schreef:
Wat is je huidige code? (na het toevoegen van het mimetype)


  1. <?php
  2. $con = mysql_connect("localhost","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10. $sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  11. VALUES
  12. ('".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'])."')";
  13.  
  14. if (!mysql_query($sql,$con))
  15. {
  16. die('Error: ' . mysql_error());
  17. }
  18. ?>
  19.  
  20. <?
  21. //kijken of er een bestand is geselecteerd
  22. if(isset($_FILES['foto1'])) {
  23. //als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
  24. if($_FILES['foto1']['size'] > 102400) {
  25. echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
  26. } else {
  27. //kijken of het bestand wel een gif, png of jpg is
  28. if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/pjepg") {
  29. //kijken of er een nieuwe naam aan het bestand is gegeven
  30. if(empty($_POST['firma'])) {
  31. $naam = $_FILES['foto1']['name'];
  32. } else {
  33. //strip de extensie om die achter de nieuwe bestandsnaam te plakken
  34. $x = strrchr($_FILES['foto1']['name'], ".");
  35. $naam = $_POST['firma'] . $x;
  36. }
  37.  
  38. //het bestand uploaden met de nieuwe of oude naam
  39. move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
  40. //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
  41. //chmod("uploads/" . $naam, 777);
  42. } else {
  43. echo "Het bestand is geen png, jpg of gif";
  44. }
  45. }
  46. } else {
  47. echo "Selecteer een plaatje";
  48. }
  49. ?>
  50.  
  51. <?
  52. echo "Werd toegevoegd!";
  53.  
  54. ?>
Offline Wim - 03/06/2009 16:40
Avatar van Wim Crew algemeen Je hebt nog steeds niet geantwoord wat het resultaat is als je $_FILES['foto1']['type'] echo'ed.... Zo weet je waar het script in de fout gaat...
Offline Koen - 03/06/2009 16:52
Avatar van Koen PHP expert
  1. echo "Het bestand van het type ".$_FILES['foto1']['type']." is geen png, jpg of gif";
Offline staic - 04/06/2009 08:04
Avatar van staic Nieuw lid Hier het resultaat met $_FILES['foto1']['name']

Toevoegen: http://www.raamdecoratie.be/klanten_toevoegen.php
Uitlezen: http://www.raamdecoratie.be/uitlezen.php

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!

Aangepaste code met $_FILES['foto1']['name']
  1. <?php
  2. $con = mysql_connect("localhost","***","***");
  3. if (!$con)
  4. {
  5. die('Could not connect: ' . mysql_error());
  6. }
  7.  
  8. mysql_select_db("raamdecora_db1", $con);
  9.  
  10. $sql="INSERT INTO klanten (firma, straat, postcode, stad, tel, email, website, groep_binnen, groep_buiten, groep_gordijnstoffen, foto1)
  11. VALUES
  12. ('".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'])."')";
  13.  
  14. if (!mysql_query($sql,$con))
  15. {
  16. die('Error: ' . mysql_error());
  17. }
  18. ?>
  19.  
  20. <?
  21. //kijken of er een bestand is geselecteerd
  22. if(isset($_FILES['foto1'])) {
  23. //als het bestand groter is dan 102400 bytes(100kb) word hij niet toegelaten
  24. if($_FILES['foto1']['size'] > 102400) {
  25. echo "Het bestand is <b>" . $_FILES['foto1']['size'] . "</b>, het maximale toegstaan is <b>102400</b>";
  26. } else {
  27. //kijken of het bestand wel een gif, png of jpg is
  28. if($_FILES['foto1']['type'] == "image/gif" || $_FILES['foto1']['type'] == "image/png" || $_FILES['foto1']['type'] == "image/jpg" || $_FILES['foto1']['type'] == "image/pjepg") {
  29. //kijken of er een nieuwe naam aan het bestand is gegeven
  30. if(empty($_POST['firma'])) {
  31. $naam = $_FILES['foto1']['name'];
  32. } else {
  33. //strip de extensie om die achter de nieuwe bestandsnaam te plakken
  34. $x = strrchr($_FILES['foto1']['name'], ".");
  35. $naam = $_POST['firma'] . $x;
  36. }
  37.  
  38. //het bestand uploaden met de nieuwe of oude naam
  39. move_uploaded_file($_FILES['foto1']['tmp_name'], "uploads/" . $naam);
  40. //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien
  41. //chmod("uploads/" . $naam, 777);
  42. } else {
  43. echo "Het bestand is geen png, jpg of gif";
  44. echo "Het bestand van het type ".$_FILES['foto1']['name']." is geen png, jpg of gif";
  45. }
  46. }
  47. } else {
  48. echo "Selecteer een plaatje";
  49. }
  50. ?>
  51.  
  52. <?
  53. echo "Werd toegevoegd!";
  54.  
  55. ?>
Offline ArieMedia - 04/06/2009 09:14
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Even een lijstje voor je...

Citaat:
Notice: Undefined index: foto1 in /home/raamdecora/domains/raamdecoratie.be/public_html/klantentoevoegen.php on line 13

(En nog 4 a 5 andere undefined's)
Selecteer een plaatje Werd toegevoegd!


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
  1. <select name="groep">
  2. <option value="0">Nee</option>
  3. <option value="1">Ja</option>

Dit staat veel netter IMO
Offline staic - 04/06/2009 09:49
Avatar van staic Nieuw lid
Arie2Zero schreef:
Even een lijstje voor je...

[..quote..]

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.

Wie kan mij helpen?
Offline ArieMedia - 04/06/2009 09:58
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
staic schreef:
[..quote..]

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.

Wie kan mij helpen?
Ik kan je mijn upload class geven. deze valt gemakkelijk toe te passen..

Ik raad je enkel wel aan om zo af en toe de scripts sectie te bezoeken, want de versie die ik heb is nog niet officieel af, maar het werkt zeker wel!

Het maakt een thumbnail aan als je wil. kleine uitleg ontbreekt nog maar als je interesse hebt zal ik er snel 1tje in elkaar zetten.

De test valt te zien op: test.arie2zero.nl/verkleinen

Wachtwoord: 1234hoedjevan
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.526s