Uploads in db voegen
Ronstert - 10/01/2006 21:55
MySQL 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?...
<?
$sql1 = "SELECT * FROM projecten WHERE link = '".$_GET['project']."'";
$result1 = mysql_query($sql1);
$proj1 = mysql_fetch_array($result1);
$map = "../projecten/".$_GET['project']."/"; // Map waar alles geupload wordt
function upload_file($fTmp, $fNew) {
if(file_exists($fNew)) {
return false;
} else {
copy($fTmp, $fNew);
return true;
}
}
if(IsSet($_POST['submit'])) {
for($i = 0; $i < count($_FILES['bestand']['name']); $i++) {
if(IsSet($_FILES['bestand']['name'][$i]) && is_uploaded_file($_FILES['bestand']['tmp_name'][$i])) {
if(!upload_file($_FILES['bestand']['tmp_name'][$i], $map.$_FILES['bestand']['name'][$i])) {
$error = true;
}
}
}
if(IsSet($error)) {
echo "<table width=95% cellpadding=0 cellspacing=0 border=0 style=\"BORDER: rgb(0,0,0) 1px solid;\">";
echo "<tr>";
echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\"BORDER-BOTTOM: rgb(0,0,0) 1px solid;\"><b>Upload proces</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Fotos zijn <b>NIET</b> geupload</td>";
echo "</tr>";
echo "</table>";
} else {
$sql = "INSERT INTO fotos (foto, project_id) VALUES ('".$_POST['bestand']."', '".$proj1['id']."')";
mysql_query($sql) or die (mysql_error());
echo "<table width=95% cellpadding=0 cellspacing=0 border=0 style=\"BORDER: rgb(0,0,0) 1px solid;\">";
echo "<tr>";
echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\"BORDER-BOTTOM: rgb(0,0,0) 1px solid;\"><b>Upload proces</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td>Fotos zijn <b>succesvol</b> geupload ".$map.$_FILES['bestand']['tmp_name'][$i]."</td>";
echo "</tr>";
echo "</table>";
}
} else {
if(IsSet($_POST['aantal'])) {
$aantal = $_POST['aantal'];
} else {
$aantal = 5;
}
echo "<table width=95% cellpadding=0 cellspacing=0 border=0 style=\"BORDER: rgb(0,0,0) 1px solid;\">";
echo "<tr>";
echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\"BORDER-BOTTOM: rgb(0,0,0) 1px solid;\"><b>Aantal fotos bepalen</b></td>";
echo "</tr>";
echo "<tr>";
echo "<td colspan=3 align=center>Fotos uploaden in map: <b>".$_GET['project']."</b></td>";
echo "</tr>";
?>
<form action="" method="post">
<tr>
<td colspan=3 align=center valign=middle height=30><input type="text" name="aantal" value="<?php echo $aantal; ?>" size="1"> <input type="submit" name="aantal_submit" value="Aantal bestanden"></td>
</tr>
</form>
</table>
<br>
<table width=95% cellpadding=0 cellspacing=0 border=0 style="BORDER: rgb(0,0,0) 1px solid;">
<tr>
<td colspan=3 bgcolor=#C0C0C0 align=center style="BORDER-BOTTOM: rgb(0,0,0) 1px solid;"><b>Fotos uploaden</b></td>
</tr>
<form action="" method="POST" enctype="multipart/form-data">
<?php
for($i = 0; $i < $aantal; $i++) {
?>
<tr>
<td> <img src=../layout/arrow1.gif> Bestand <?php echo $i + 1; ?></td><td>:</td><td> <input type="file" name="bestand[<?php echo $i; ?>]"></td>
</tr>
<?php
}
?>
<tr>
<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>
</tr>
</table>
</form>
<?php
}
?>
<?
$sql1 = "SELECT * FROM projecten WHERE link = '" . $_GET [ 'project' ] . "'" ;
$map = "../projecten/" . $_GET [ 'project' ] . "/" ; // Map waar alles geupload wordt
function upload_file( $fTmp , $fNew ) {
return false ;
} else {
return true ;
}
}
if ( IsSet ( $_POST [ 'submit' ] ) ) { for ( $i = 0 ; $i < count ( $_FILES [ 'bestand' ] [ 'name' ] ) ; $i ++ ) { if ( ! upload_file( $_FILES [ 'bestand' ] [ 'tmp_name' ] [ $i ] , $map . $_FILES [ 'bestand' ] [ 'name' ] [ $i ] ) ) {
$error = true ;
}
}
}
echo "<table width=95% c ellpadding=0 cellspacing=0 border=0 style=\" BORDER: rgb(0,0,0) 1px solid;\" >" ; echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\" BORDER-BOTTOM: rgb(0,0,0) 1px solid;\" ><b>Upload proces</b></td>" ; echo "<td>Fotos zijn <b>NIET</b> geupload</td>" ; } else {
$sql = "INSERT INTO fotos (foto, project_id) VALUES ('" . $_POST [ 'bestand' ] . "', '" . $proj1 [ 'id' ] . "')" ;
echo "<table width=95% c ellpadding=0 cellspacing=0 border=0 style=\" BORDER: rgb(0,0,0) 1px solid;\" >" ; echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\" BORDER-BOTTOM: rgb(0,0,0) 1px solid;\" ><b>Upload proces</b></td>" ; echo "<td>Fotos zijn <b>succesvol</b> geupload " . $map . $_FILES [ 'bestand' ] [ 'tmp_name' ] [ $i ] . "</td>" ; }
} else {
if ( IsSet ( $_POST [ 'aantal' ] ) ) { $aantal = $_POST [ 'aantal' ] ;
} else {
$aantal = 5 ;
}
echo "<table width=95% c ellpadding=0 cellspacing=0 border=0 style=\" BORDER: rgb(0,0,0) 1px solid;\" >" ; echo "<td colspan=3 bgcolor=#C0C0C0 align=center style=\" BORDER-BOTTOM: rgb(0,0,0) 1px solid;\" ><b>Aantal fotos bepalen</b></td>" ; echo "<td colspan=3 align=center>Fotos uploaden in map: <b>" . $_GET [ 'project' ] . "</b></td>" ; ?>
<form action="" method="post">
<tr>
<td colspan=3 align=center valign=middle height=30><input type="text" name="aantal" value="
<?php echo $aantal ; ?> " size="1"> <input type="submit" name="aantal_submit" value="Aantal bestanden"></td>
</tr>
</form>
</table>
<br>
<table width=95% cellpadding=0 cellspacing=0 border=0 style="BORDER: rgb(0,0,0) 1px solid;">
<tr>
<td colspan=3 bgcolor=#C0C0C0 align=center style="BORDER-BOTTOM: rgb(0,0,0) 1px solid;"><b>Fotos uploaden</b></td>
</tr>
<form action="" method="POST" enctype="multipart/form-data">
<?php
for ( $i = 0 ; $i < $aantal ; $i ++ ) {
?>
<tr>
<td> <img src=../layout/arrow1.gif> Bestand
<?php echo $i + 1 ; ?> </td><td>:</td><td> <input type="file" name="bestand[
<?php echo $i ; ?> ]"></td>
</tr>
<?php
}
?>
<tr>
<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>
</tr>
</table>
</form>
<?php
}
?>
17 antwoorden
Gesponsorde links
haytjes - 10/01/2006 22:00 (laatste wijziging 10/01/2006 22:01)
JS gevorderde
r37:
<?
$sql = "INSERT INTO fotos (foto, project_id) VALUES ('".$_POST['bestand']."', '".$proj1['id']."')";
?>
<?
$sql = "INSERT INTO fotos (foto, project_id) VALUES ('" . $_POST [ 'bestand' ] . "', '" . $proj1 [ 'id' ] . "')" ;
?>
veranderen in:
<?
$sql = "INSERT INTO fotos (foto, project_id) VALUES ('".$_FILES['bestand']['tmp_name'][$i]."', '".$proj1['id']."')";
?>
<?
$sql = "INSERT INTO fotos (foto, project_id) VALUES ('" . $_FILES [ 'bestand' ] [ 'tmp_name' ] [ $i ] . "', '" . $proj1 [ 'id' ] . "')" ;
?>
Ronstert - 10/01/2006 22:24 (laatste wijziging 11/01/2006 21:33)
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?.
Ronstert - 11/01/2006 21:53 (laatste wijziging 11/01/2006 21:55)
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
Wim - 11/01/2006 22:02
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
Ronstert - 11/01/2006 22:09 (laatste wijziging 12/01/2006 09:54)
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?
Thomas - 12/01/2006 10:50
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 .
Ronstert - 12/01/2006 12:17 (laatste wijziging 12/01/2006 18:19)
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] => )
Ronstert - 12/01/2006 19:29
MySQL interesse
IK krijg nu "NULL " eruit!.... wat zegt dit jullie nu?
Thomas - 12/01/2006 19:31
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?
Ronstert - 12/01/2006 19:34 (laatste wijziging 12/01/2006 19:38)
MySQL interesse
ik wil alleen de naam in de db opslaan idd!!..
Hoe haal ik de filenames uit de array!..
Ronstert - 12/01/2006 19:55
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!..
Thomas - 12/01/2006 19:59
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...
Ronstert - 12/01/2006 20:09 (laatste wijziging 12/01/2006 20:10)
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 .