files upload and associative array in mysql

Luca De Franceschi

Nuovo Utente
19 Mar 2015
7
0
1
da un form devo inviare più files per foto tessera
<input id="fileupload[1]" name="partecipanti[1][avatar]" type="file" />
<input id="fileupload[2]" name="partecipanti[2][avatar]" type="file" />
<input id="fileupload[3]" name="partecipanti[3][avatar]" type="file" />
uno script si incarica di salvarlo nel db
PHP:
 if (!empty($_POST['partecipanti'])) {
//inizio foreach
                foreach ($_POST['partecipanti'] as $part) {
//qui salvo altri campi del form
$datausers = array(
.....omissis....
'nome_colonna_mysql' => sanitize($part['valore_campo_del form']),
....omissis..
);

//salvo nel db assoc array
$db->insert($this->ucTable, $datausers);

//qui però devo salvare devo salvare i files sia nella tabella come nome che fisicamente in una cartella 
//USERIMGPATH predefinita con lo schema seguente che però non funziona
  if (!empty($_FILES['avatar']['name']) && !empty($part['avatar'])) {

				  include(WOJOLITE  . "lib/class_imageUpload.php");
				  include(WOJOLITE  . "lib/class_imageResize.php");
		  
		          $imgdir = USERIMGPATH;
				  $newName = "IMG_" . randName();
				  $ext = substr($_FILES['avatar']['name'], strrpos($_FILES['avatar']['name'], '.') + 1);
				  $name = $newName.".".strtolower($ext);
				  
				  $ddp = new Upload();
				  $ddp->File = $_FILES['avatar'];
				  $ddp->method = 0;
				  $ddp->SavePath = $imgdir;
				  $ddp->ThumbPath = $imgdir . "thumbs/";
				  $ddp->TWidth = $core->thumb_w;
				  $ddp->THeight = $core->thumb_h;
				  $ddp->NewWidth = $core->img_w;
				  $ddp->NewHeight = $core->img_h;
				  $ddp->NewName = $newName;
				  $ddp->OverWrite = true;
				  
				  if ($this->pid) {
					  $thumb = getValue("avatar",$this->ucTable,"id = '".$userid."'");
					  if (!empty($part['avatar'])) {
						  if ($thumb) {
							  @unlink($ddp->SavePath . $thumb);
							  @unlink($ddp->ThumbPath . $thumb);
						  }
						  $datausers['avatar'] = $name;
					  } else {
						  $datausers['avatar'] = $thumb;
					  }
				  } else {
					  if (!empty($part['avatar'])) 
					  $datausers['avatar'] = $name;
				  }
				  
				  $err = $ddp->UploadFile();				  
				  if (count($err) > 0 and is_array($err)) {
					  foreach ($err as $key => $val) {
						  $msgError = $val;
						  $core->msgError($val,false);
					  }
				  }
			  }
}
);
come fare per salvare le miniature?
grazie
 
in pratica come fare un foreach su array annidati da campi file
<input id="fileupload[1]" name="partecipanti[1][avatar]" type="file" />
salvarli in una tabella mysql degli utenti in un a colonna di nome avatar e uploadarli in una cartella predefinita?
 
ciao
intanto ti conviene modificare il name degli input, ti serve che siano array di array?
HTML:
<input id="fileupload[1]" name="partecipanti[1]" type="file" />
<input id="fileupload[2]" name="partecipanti[2]" type="file" />
<input id="fileupload[3]" name="partecipanti[3]" type="file" />
poi, se non ho capito male ti schematizzo
PHP:
<?php
//....
$avatar=$_FILES['partecipanti'];//ottieni $avatar[1],$avatar[2],$avatar[3]
foreach($avatar as $file){
	//vari controlli, se riempiti e tipo di file
	//e metti il percorso
	$pat="pinco/";
	$temporaneo=$file['tmp_name'];
	$da_caricare=$pat.$file['name'];
	move_uploaded_file($temporaneo,$da_caricare);
	//e usi $da_caricare da salvare nel db
}
//.....
?>
se ti serve invece l'array di array comunque ti conviene invertire
HTML:
<input id="fileupload[1]" name="partecipanti[avatar][1]" type="file" />
<input id="fileupload[2]" name="partecipanti[avatar][2]" type="file" />
<input id="fileupload[3]" name="partecipanti[avatar][3]" type="file" />
PHP:
<?php
//...
$avatar=$_FILES['partecipanti'];//ottieni $avatar[avatar][1],$avatar[avatar][2],$avatar[avatar][3]
//...
foreach($avatar['avatar'] as $file){
	//.......
}
?>
 

Discussioni simili