login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Uploads in db voegen

Offline Ronstert - 10/01/2006 21:55
Avatar van RonstertMySQL interesse hoi

Ik heb volgend upload script uit de scripts weggehaald en een beetje aangepast!. het is de bedoling dat elke foto die hij upload hij ook in de db plaatst!.,. ik heb verschillende dingen geprobeerd. met resultaat dat hij of niks erin zet of "Array" erin zet!..

wat moet ik dien om elke naam vd foto erin te krijgen?...


  1. <?
  2. $sql1 = "SELECT * FROM projecten WHERE link = '".$_GET['project']."'";
  3. $result1 = mysql_query($sql1);
  4. $proj1 = mysql_fetch_array($result1);
  5. $map = "../projecten/".$_GET['project']."/"; // Map waar alles geupload wordt
  6.  
  7. function upload_file($fTmp, $fNew) {
  8. if(file_exists($fNew)) {
  9. return false;
  10. } else {
  11. copy($fTmp, $fNew);
  12. return true;
  13. }
  14. }
  15.  
  16. if(IsSet($_POST['submit'])) {
  17. for($i = 0; $i < count($_FILES['bestand']['name']); $i++) {
  18. if(IsSet($_FILES['bestand']['name'][$i]) && is_uploaded_file($_FILES['bestand']['tmp_name'][$i])) {
  19. if(!upload_file($_FILES['bestand']['tmp_name'][$i], $map.$_FILES['bestand']['name'][$i])) {
  20. $error = true;
  21. }
  22. }
  23. }
  24.  
  25. if(IsSet($error)) {
  26. echo "<table width=95% cellpadding=0 cellspacing=0 border=0 style=\"BORDER: rgb(0,0,0) 1px solid;\">";
  27. echo "<tr>";
  28. echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\"BORDER-BOTTOM: rgb(0,0,0) 1px solid;\"><b>Upload proces</b></td>";
  29. echo "</tr>";
  30. echo "<tr>";
  31. echo "<td>Fotos zijn <b>NIET</b> geupload</td>";
  32. echo "</tr>";
  33. echo "</table>";
  34. } else {
  35.  
  36. $sql = "INSERT INTO fotos (foto, project_id) VALUES ('".$_POST['bestand']."', '".$proj1['id']."')";
  37. mysql_query($sql) or die (mysql_error());
  38. echo "<table width=95% cellpadding=0 cellspacing=0 border=0 style=\"BORDER: rgb(0,0,0) 1px solid;\">";
  39. echo "<tr>";
  40. echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\"BORDER-BOTTOM: rgb(0,0,0) 1px solid;\"><b>Upload proces</b></td>";
  41. echo "</tr>";
  42. echo "<tr>";
  43. echo "<td>Fotos zijn <b>succesvol</b> geupload ".$map.$_FILES['bestand']['tmp_name'][$i]."</td>";
  44. echo "</tr>";
  45. echo "</table>";
  46. }
  47. } else {
  48. if(IsSet($_POST['aantal'])) {
  49. $aantal = $_POST['aantal'];
  50. } else {
  51. $aantal = 5;
  52. }
  53. echo "<table width=95% cellpadding=0 cellspacing=0 border=0 style=\"BORDER: rgb(0,0,0) 1px solid;\">";
  54. echo "<tr>";
  55. echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\"BORDER-BOTTOM: rgb(0,0,0) 1px solid;\"><b>Aantal fotos bepalen</b></td>";
  56. echo "</tr>";
  57. echo "<tr>";
  58. echo "<td colspan=3 align=center>Fotos uploaden in map: <b>".$_GET['project']."</b></td>";
  59. echo "</tr>";
  60. ?>
  61. <form action="" method="post">
  62. <tr>
  63. <td colspan=3 align=center valign=middle height=30><input type="text" name="aantal" value="<?php echo $aantal; ?>" size="1">&nbsp;<input type="submit" name="aantal_submit" value="Aantal bestanden"></td>
  64. </tr>
  65. </form>
  66. </table>
  67. <br>
  68. <table width=95% cellpadding=0 cellspacing=0 border=0 style="BORDER: rgb(0,0,0) 1px solid;">
  69. <tr>
  70. <td colspan=3 bgcolor=#C0C0C0 align=center style="BORDER-BOTTOM: rgb(0,0,0) 1px solid;"><b>Fotos uploaden</b></td>
  71. </tr>
  72. <form action="" method="POST" enctype="multipart/form-data">
  73. <?php
  74. for($i = 0; $i < $aantal; $i++) {
  75. ?>
  76. <tr>
  77. <td>&nbsp;<img src=../layout/arrow1.gif> Bestand <?php echo $i + 1; ?></td><td>:</td><td> <input type="file" name="bestand[<?php echo $i; ?>]"></td>
  78. </tr>
  79. <?php
  80. }
  81. ?>
  82. <tr>
  83. <td colspan=3 align=center valign=middle height=30 style="BORDER-TOP: rgb(0,0,0) 1px solid;"><input type="submit" name="submit" value="Uploaden"></td>
  84. </tr>
  85. </table>
  86. </form>
  87. <?php
  88. }
  89. ?>

17 antwoorden

Gesponsorde links
Offline haytjes - 10/01/2006 22:00 (laatste wijziging 10/01/2006 22:01)
Avatar van haytjes Gouden medailleGouden medaille

JS gevorderde
r37:
  1. <?
  2. $sql = "INSERT INTO fotos (foto, project_id) VALUES ('".$_POST['bestand']."', '".$proj1['id']."')";
  3. ?>

veranderen in:
  1. <?
  2. $sql = "INSERT INTO fotos (foto, project_id) VALUES ('".$_FILES['bestand']['tmp_name'][$i]."', '".$proj1['id']."')";
  3. ?>

Offline Ronstert - 10/01/2006 22:24 (laatste wijziging 11/01/2006 21:33)
Avatar van Ronstert MySQL interesse dan krijg ik Array in mijn veld foto, iemand nog een oplossing??

Ik moet de Array met explode uitelkaar halen!... denk ik

maar hoe?.
Offline denbeckers - 11/01/2006 21:48
Avatar van denbeckers PHP interesse mss heb je hier iets aan?

http://denbeckers.net/login/upload.phps
Offline Dolfje - 11/01/2006 21:51
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
doe eens print_r( $_FILES['bestand'] ); boven je query en geef me wat er daaruit komt.
Offline Ronstert - 11/01/2006 21:53 (laatste wijziging 11/01/2006 21:55)
Avatar van Ronstert MySQL interesse Array ( [name] => Array ( [0] => 5862-ewout-0195.jpg [1] => [2] => [3] => [4] => ) [type] => Array ( [0] => image/pjpeg [1] => [2] => [3] => [4] => ) [tmp_name] => Array ( [0] => C:\PHP\uploadtemp\php2D76.tmp [1] => [2] => [3] => [4] => ) [error] => Array ( [0] => 0 [1] => 4 [2] => 4 [3] => 4 [4] => 4 ) [size] => Array ( [0] => 63473 [1] => 0 [2] => 0 [3] => 0 [4] => 0 ) )

dit komt er dan uit ,
va de 5 upload velden heb ik nu 1 gebruikt
Offline Wim - 11/01/2006 22:02
Avatar van Wim Crew algemeen tip:
move_uploaded_file!

Die functie vervangt de functie copy, en dan moet je niet controleren of het wel een geupload bestand is ;)

http://be2.php.net/move_uploaded_file

vanaf PHP 4.0.3
Offline Ronstert - 11/01/2006 22:09 (laatste wijziging 12/01/2006 09:54)
Avatar van Ronstert MySQL interesse Ik heb dit stukje script hier uit de scripts library gehaald!.. en een query toegevoegd om de bestandsnaam in mijn db op te slaan!..

het belangrijkste voor mij is dat ik de bestandsnaam uit de array vis en de in mijn tabelletje pleur!..

Iemand?
Offline Thomas - 12/01/2006 10:50
Avatar van Thomas Moderator Als de de oorspronkelijke naam van het geuploade bestand wilt opslaan, moet je volgens mij $_FILES['bestand']['name'][$i] gebruiken, en niet $_FILES['bestand']['tmp_name'][$i] zoals haytjes voorstelde.

Zie ook PHP.net: Handling file uploads.
Offline Ronstert - 12/01/2006 12:17 (laatste wijziging 12/01/2006 18:19)
Avatar van Ronstert MySQL interesse dan krijg ik als output "Array", ik moetdus eerst de array uit elkaar vogelen voordat ik de filename krijg...

Ik d8 ook zoals jij fangorn, heb op die manier eigenlijk alles al geprobeerd

<? print_r( $_FILES['bestand']['name']);?> geeft volgend

Array ( [0] => service_off.gif [1] => [2] => [3] => [4] => )
Offline Dolfje - 12/01/2006 19:21
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
normaal zou het moeten werken zoals haytjes het voorsteld.
anders doe eens var_dump($_FILES['bestand']['tmp_name'][$i]);
vlak voor je query.

Als dit een array is, zet hem hier, als dit een naam is, dan moet het goed in de database staan.
Offline Ronstert - 12/01/2006 19:29
Avatar van Ronstert MySQL interesse IK krijg nu "NULL " eruit!.... wat zegt dit jullie nu?
Offline Thomas - 12/01/2006 19:31
Avatar van Thomas Moderator tmp_name is een of andere garbled string (pointer? whatever), die na beeindiging van het script totaal geen betekens meer heeft? Waarom zou je die op willen slaan in je database?

Ronstert wil volgens mij de naam van het bestand in de db opslaan, niet het bestand zelf?
Offline Ronstert - 12/01/2006 19:34 (laatste wijziging 12/01/2006 19:38)
Avatar van Ronstert MySQL interesse ik wil alleen de naam in de db opslaan idd!!..

Hoe haal ik de filenames uit de array!..


Offline Thomas - 12/01/2006 19:49
Avatar van Thomas Moderator Je probleem wordt veroorzaakt door het feit dat je query buiten de for-lus staat waarmee je plaatjes upload. Je slaat dan dus informatie op van de upload die na het laatste plaatje komt, en die bevat geen informatie . Je moet dus je query in je for-lus zetten (en zorgen dat ie nix in je database opslaat als die upload_file() false teruggeeft).
Offline Ronstert - 12/01/2006 19:55
Avatar van Ronstert MySQL interesse Ik heb overaal al een keer

$_FILES['bestand']['tmp_name'] ge'echoed en telkens echoed hij Array,

Volgens mij omdat ik zelf kan bepalen hoeveel files ik wil upl;oaden hij hij mij ook zoveel upload velden laat zien die ik kan vullen en meerdere fotos tegelijk kan uploaden!...

In het hele script het is al $_FILES['bestand']['tmp_name'] geprobeerd en gekeken wat dat als result gaf!.. tekens weer Array!..
Offline Thomas - 12/01/2006 19:59
Avatar van Thomas Moderator *zucht*

Dat komt omdat je je uploads als
<input type="file" name="bestand[]" ...>

Invoert.

Alles van je eerste upload staat dan in:
$_FILES['bestand']['name'][0]
$_FILES['bestand']['type'][0]
$_FILES['bestand']['size'][0]
...

$_FILES['bestand']['tmp_name'] is dan altijd een array ja, het bevat een rijtje met alle tmp_names van je geuploade plaatjes...
Offline Ronstert - 12/01/2006 20:09 (laatste wijziging 12/01/2006 20:10)
Avatar van Ronstert MySQL interesse Oke Oke, k begrijp dat dit best vermoeiend kan zijn, maar nog 1 ding!..

Het lukt me nu om de naam erin te krijgen!.. alleen voegt hij elke keer 2 rijen toe in mijn db.. 1tje met een naam en 1tje zonder!..

kan ik dat ook nog oplossen?..

*edit* sorry mij fout!..... t is al klaar!. super bedankt
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.258s