Probleem met uploadify en php (Opgelost)
cowb - 11/03/2011 10:35
Lid
Hi all,
Ik ben bezig aan een nieuwe website en maar daarvoor gebruik van jQuery lib met de plugin uploadify ([url]http://www.uploadify.com/documentation/[/url]).
Nu wou ik dat gaan gebruiken voor een foto album. En bij elke upload een record toevoegen in een tabel 'fotos'.
Het opslaan werkt, maar mijn verwijzing naar het foto album doet het niet, deze is steeds 0 terwijl ik echt wel een waarde doorgeef.
Een beetje code maakt het geheel misschien wat duidelijker.
java.js
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '/upload/uploadify.swf',
'script' : '/upload/uploadify.php',
'cancelImg' : '/upload/cancel.png',
'folder' : '/afbeeldingen',
'auto' : true,
'multi' : true,
'removeCompleted' : false,
'queueID' : 'uploaded_files',
'scriptData' : {'id': '<?= $_GET["id"]; ?>'}
});
});
$( document) .ready ( function ( ) {
$( '#file_upload' ) .uploadify ( {
'uploader' : '/upload/uploadify.swf' ,
'script' : '/upload/uploadify.php' ,
'cancelImg' : '/upload/cancel.png' ,
'folder' : '/afbeeldingen' ,
'auto' : true ,
'multi' : true ,
'removeCompleted' : false ,
'queueID' : 'uploaded_files' ,
'scriptData' : { 'id' : '<?= $_GET["id"]; ?>' }
} ) ;
} ) ;
Uploadify.php
<?php
include("config.php");
$id = $_REQUEST['id'];
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
move_uploaded_file($tempFile,$targetFile);
$datum = time();
$query_ = "INSERT INTO fotos (ID, album_ID, path, datum) VALUES ('', '".$id."', 'afbeeldingen/".$_FILES['Filedata']['name']."', '".$datum."')";
mysql_query($query_) or die (mysql_error());
echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}
?>
<?php
include ( "config.php" ) ;
$id = $_REQUEST [ 'id' ] ;
$tempFile = $_FILES [ 'Filedata' ] [ 'tmp_name' ] ;
$targetPath = $_SERVER [ 'DOCUMENT_ROOT' ] . $_REQUEST [ 'folder' ] . '/' ;
$targetFile = str_replace ( '//' , '/' , $targetPath ) . $_FILES [ 'Filedata' ] [ 'name' ] ;
$query_ = "INSERT INTO fotos (ID, album_ID, path, datum) VALUES ('', '" . $id . "', 'afbeeldingen/" . $_FILES [ 'Filedata' ] [ 'name' ] . "', '" . $datum . "')" ;
}
?>
7 antwoorden
Gesponsorde links
cowb - 11/03/2011 11:05
Lid
Hoe moet ik dit dan aanpakken?
ArieMedia - 11/03/2011 14:12
PHP ver gevorderde
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '/upload/uploadify.swf',
'script' : '/upload/uploadify.php',
'cancelImg' : '/upload/cancel.png',
'folder' : '/afbeeldingen',
'auto' : true,
'multi' : true,
'removeCompleted' : false,
'queueID' : 'uploaded_files',
'scriptData' : {'id': $('#album').val()}
});
});
$( document) .ready ( function ( ) {
$( '#file_upload' ) .uploadify ( {
'uploader' : '/upload/uploadify.swf' ,
'script' : '/upload/uploadify.php' ,
'cancelImg' : '/upload/cancel.png' ,
'folder' : '/afbeeldingen' ,
'auto' : true ,
'multi' : true ,
'removeCompleted' : false ,
'queueID' : 'uploaded_files' ,
'scriptData' : { 'id' : $( '#album' ) .val ( ) }
} ) ;
} ) ;
<select name="album" id="album">
<option value="1">Kerstfoto's</option>
<option value="2">Carnaval</option>
</select>
<select name = "album" id = "album" >
niet getest, maar probeer dit eens.
cowb - 11/03/2011 15:57 (laatste wijziging 11/03/2011 16:01)
Lid
Ik heb intussen nog wat zitten zoeken, en toen ben ik op volgende topic gestoten...
http://www.uplo...ng/#Item_2
Ik heb die methode toegepast, en ik wil dit nu testen door het opslaan in de db, maar dat lukt niet echt. Er wordt niks aan mijn db toegevoegd.
jQuery code:
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '/upload/uploadify.swf',
'script' : '/upload/uploadify.php',
'cancelImg' : '/upload/cancel.png',
'folder' : '/afbeeldingen',
'auto' : false,
'multi' : true,
'removeCompleted' : false,
'onComplete': function(event, queueID, fileObj, response, data){
var form = document.forms['add_referentie'];
var el = document.createElement("input");
el.type = "hidden";
el.name = "afbeelding["+i+"]";
el.id = "ImageFile["+i+"]";
el.value = fileObj.name;
form.appendChild(el);
i++;
},
'queueID' : 'uploaded_files'
});
});
$( document) .ready ( function ( ) {
$( '#file_upload' ) .uploadify ( {
'uploader' : '/upload/uploadify.swf' ,
'script' : '/upload/uploadify.php' ,
'cancelImg' : '/upload/cancel.png' ,
'folder' : '/afbeeldingen' ,
'auto' : false ,
'multi' : true ,
'removeCompleted' : false ,
'onComplete' : function ( event, queueID, fileObj, response, data) {
var form = document.forms [ 'add_referentie' ] ;
var el = document.createElement ( "input" ) ;
el.type = "hidden" ;
el.name = "afbeelding[" + i+ "]" ;
el.id = "ImageFile[" + i+ "]" ;
el.value = fileObj.name ;
form.appendChild ( el) ;
i++;
} ,
'queueID' : 'uploaded_files'
} ) ;
} ) ;
Zoals in de topic vermeld zou deze bovenstaande code een hidden input plaatsen wanneer de upload complete is. Het zou er als volg moeten uitzien...
<input id="ImageFile[1]" type="hidden" name="afbeelding[1]" value="file1.jpg">
<input id = "ImageFile[1]" type = "hidden" name = "afbeelding[1]" value = "file1.jpg" >
PHP stukje bij post:
$datum = time();
$query = "INSERT INTO fotoalbum (ID, datum, uitvoering, locatie, beschrijving, titel) VALUES ('".$_GET['id']."', '".$datum."', '".$_POST['uitvoering']."', '".$_POST['locatie']."', '".$_POST['beschrijving']."', '".$_POST['titel']."')";
mysql_query($query) or die (mysql_error());
$teller = 0;
while(!empty($_POST['afbeelding['.$teller.']'])) {
$query_ = "INSERT INTO fotos (ID, album_ID, path, datum) VALUES ('', '".mysql_insert_id()."', 'afbeeldingen/".$_POST['afbeelding['.$teller.']']."', '".$datum."')";
mysql_query($query_) or die (mysql_error());
$teller++;
}
venster("info", "Gelukt", "De referentie is opgeslagen, U wordt dadelijk doorverwezen naar de uploadpagina!");
$query = "INSERT INTO fotoalbum (ID, datum, uitvoering, locatie, beschrijving, titel) VALUES ('" . $_GET [ 'id' ] . "', '" . $datum . "', '" . $_POST [ 'uitvoering' ] . "', '" . $_POST [ 'locatie' ] . "', '" . $_POST [ 'beschrijving' ] . "', '" . $_POST [ 'titel' ] . "')" ;
$teller = 0 ;
while ( ! empty ( $_POST [ 'afbeelding[' . $teller . ']' ] ) ) { $query_ = "INSERT INTO fotos (ID, album_ID, path, datum) VALUES ('', '" . mysql_insert_id ( ) . "', 'afbeeldingen/" . $_POST [ 'afbeelding[' . $teller . ']' ] . "', '" . $datum . "')" ; $teller ++;
}
venster( "info" , "Gelukt" , "De referentie is opgeslagen, U wordt dadelijk doorverwezen naar de uploadpagina!" ) ;
Bovenstaande code voert geen query uit in de tabel foto's. Dus dat wil zeggen dat mijn lus niet wordt uitgevoerd, en dat zal te weiten zijn aan het niet aanwezig zijn van de hidden inputs. Weet iemand hoe dat zou komen?
cowb - 11/03/2011 20:47 (laatste wijziging 17/03/2011 13:40)
Lid
[EDIT] Het probleem is intussen opgelost. Na lang zoeken en proberen, ben ik op volgende oplossing uitgekomen.
Bovenstaande javascript code heb ik uit mijn java.js file gehaald en in mijn index.php pagina geplaatst. Daardoor kan ik mijn id meegeven via php, in plaats van via hidden input velden.
'scriptData': {'id': '<? echo $_GET['id']; ?>'}
'scriptData': {'id': '
<? echo $_GET [ 'id' ] ; ?> '}
Daarna hoefde ik enkel in het uploadify.php bestand een request doen naar id, zodat deze variabele beschikbaar was voor die pagina.
<? $id = $_REQUEST['id']; ?>
<? $id = $_REQUEST [ 'id' ] ; ?>
Ik hoop dat dit min of meer duidelijk is.
Uploadify is een zeer handige en makkelijke plugin voor het uploaden van bestanden.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.