Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 12-09-08, 19:49   #1 (permalink)
User
 
Data di registrazione: Sep 2006
Ubicazione: Bologna
Messaggi: 81
Red face Form upload immagine e modifica

Ciao a tutti,
volevo chiedervi spiegazioni riguardo ad un problema che ho con un form in particolare quando sono in modifica.
Ho una tabella mysql in cui salvo i dati che contiene i campi
fornitore - articolo - immagine
e i record vengono inseriti tramite un form
method="post" enctype="multipart/form-data
che mi presenta per immagine input type="file" che mi apre la finestra per scegliere l'immagine da caricare. OK va tutto bene! Fa anche upload!
Ma se richiamo un record della tabella per modificarlo come devo gestire input type="file" ? Se non inserisco una nuova immagine vorrei che restasse quella vecchia e vorrei avere la possibilità di sceglierne tramite sfoglia un'altra!
Son qui che penso da un po'
Ciao Grazie

Patpat
Patpat non in linea   Rispondi citando
Vecchio 13-09-08, 17:58   #2 (permalink)
Moderatore
 
L'avatar di ceccus
 
Data di registrazione: Oct 2006
Messaggi: 913
Ciao Patpat,

è sufficiente che in fase di caricamento dell'immagine tu faccia un semplice test:

$file_immagine = $_FILES['file'];
if (isset($file_immagine['name'])){
//aggiorna l'immagine
}else{
//non fare nulla
}

In soldoni vai a verifcare che il campo sfoglia contenga veramente qualcosa prima di aggiornare, in caso contrario non fai nulla.

Non ricordo esattamente in php se l'if che ho scritto matcha correttamente nel caso in cui il campo sfoglia sia vuoto... in caso negativo basta spostare il controllo su qualcosa del tipo:

if ($file_immagine['name']!=''){...

Occhio anche alla variabile: $file_immagine['error'], che può risultare molto comoda.

Per avere un quadro completo di ciò che hai e che puoi utilizzare, fatti stampare a monitor:

var_dump($_FILES['file']);

__________________

ceccus non in linea   Rispondi citando
Vecchio 15-09-08, 00:11   #3 (permalink)
User
 
Data di registrazione: Sep 2006
Ubicazione: Bologna
Messaggi: 81
Caspita mille grazie! Ora è tutto ok, se viene inserita una nuova immagine registro il cambio altrimenti non devo fare proprio nulla!

Ciao
Patpat
Patpat non in linea   Rispondi citando
Vecchio 25-11-08, 11:38   #4 (permalink)
User Newbie
 
Data di registrazione: Nov 2008
Messaggi: 3
Quote:
ceccus Visualizza il messaggio
Ciao Patpat,

è sufficiente che in fase di caricamento dell'immagine tu faccia un semplice test:

$file_immagine = $_FILES['file'];
if (isset($file_immagine['name'])){
//aggiorna l'immagine
}else{
//non fare nulla
}

In soldoni vai a verifcare che il campo sfoglia contenga veramente qualcosa prima di aggiornare, in caso contrario non fai nulla.

Non ricordo esattamente in php se l'if che ho scritto matcha correttamente nel caso in cui il campo sfoglia sia vuoto... in caso negativo basta spostare il controllo su qualcosa del tipo:

if ($file_immagine['name']!=''){...

Occhio anche alla variabile: $file_immagine['error'], che può risultare molto comoda.

Per avere un quadro completo di ciò che hai e che puoi utilizzare, fatti stampare a monitor:

var_dump($_FILES['file']);

Hmmmm .... io ho lo stesso prob. pero' non ce la faccio ad uscirne nemmeno con la tua soluzione..
il mio prob. e il seguente:

<form action="<? echo $editFormAction; ?>" method="post" name="form1" id="form1" enctype="multipart/form-data">
<p><b>Titolo:</b><br />
<input type="text" name="titolo" value="<? echo htmlentities($row_modifica_opinioni['titolo'], ENT_COMPAT, 'utf-8'); ?>" size="120" />
<p><b>Sottotitolo:</b><br />
<textarea name="testo_breve" cols="100"><? echo htmlentities($row_modifica_opinioni['testo_breve'], ENT_COMPAT, 'utf-8'); ?></textarea>
<p><b>Testo intero:</b><br />
<textarea name="testo_intero" cols="100" rows="30"><? echo htmlentities($row_modifica_opinioni['testo_intero'], ENT_COMPAT, 'utf-8'); ?></textarea>
</p>
<img src="../foto/<?php echo $row_modifica_opinioni['foto_a']; ?>" width="150"/>
<p><b>Cambia foto:</b><br />
<input type="file" name="foto_a"></p>
<p><b>Cambia foto:</b><br />
<input type="file" name="foto_b"></p>
<input type="submit" value="Salva modifiche" />
<input type="hidden" name="MM_update" value="form1" />
<input type="hidden" name="id" value="<?php echo $row_modifica_opinioni['id']; ?>" />
</form>

ora... dove dovrei inserire quel tuo if?
BarbaJack non in linea   Rispondi citando
Vecchio 25-11-08, 15:33   #5 (permalink)
Moderatore
 
L'avatar di ilnetsurfer
 
Data di registrazione: Jun 2007
Ubicazione: Napoli
Messaggi: 535
Invia un messaggio tramite MSN a ilnetsurfer
Ti conviene usare i parametri get, anche...
se la pagina si chiama file.php, quando la richiamerai, per effettuare un nuovo upload, la richiamerai cosi:
www . iltuosito. it/file.php?action=upload
<?php
if(!isset($_GET['action']) ||(
$_GET['action'] == "upload")){
if(!isset($_FILES['file]['name'])){
?>
<form action="<? echo $editFormAction; ?>" method="post" name="form1" id="form1" enctype="multipart/form-data">
<p><b>Titolo:</b><br />
<input type="text" name="titolo" value="<? echo htmlentities($row_modifica_opinioni['titolo'], ENT_COMPAT, 'utf-8'); ?>" size="120" />
<p><b>Sottotitolo:</b><br />
<textarea name="testo_breve" cols="100"><? echo htmlentities($row_modifica_opinioni['testo_breve'], ENT_COMPAT, 'utf-8'); ?></textarea>
<p><b>Testo intero:</b><br />
<textarea name="testo_intero" cols="100" rows="30"><? echo htmlentities($row_modifica_opinioni['testo_intero'], ENT_COMPAT, 'utf-8'); ?></textarea>
</p>
<img src="../foto/<?php echo $row_modifica_opinioni['foto_a']; ?>" width="150"/>
<p><b>Cambia foto:</b><br />
<input type="file" name="foto_a"></p>
<p><b>Cambia foto:</b><br />
<input type="file" name="foto_b"></p>
<input type="submit" value="Salva modifiche" />
<input type="hidden" name="MM_update" value="form1" />
<input type="hidden" name="id" value="<?php echo $row_modifica_opinioni['id']; ?>" />
</form>
<?php
}
}else{
//qui il codice che vuoi!
}
?>
__________________
He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.

Ultima modifica di ilnetsurfer : 25-11-08 15:39.
ilnetsurfer non in linea   Rispondi citando
Vecchio 29-11-08, 19:19   #6 (permalink)
User Newbie
 
Data di registrazione: Nov 2008
Messaggi: 3
Aiutooo

Ok ho fatto come mi hai detto tu... ho aggiunto ?action=upload alla pagina che si collega a questa pagina di modifica:

<?php require_once('../connections/ZilliDB.php'); ?>

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
$updateSQL = sprintf("UPDATE opinioni SET titolo=%s, testo_breve=%s, testo_intero=%s, foto_a=%s, foto_b=%s WHERE id=%s",
GetSQLValueString($_POST['titolo'], "text"),
GetSQLValueString($_POST['testo_breve'], "text"),
GetSQLValueString($_POST['testo_intero'], "text"),
GetSQLValueString($_FILES['foto_a']['name'], "text"),
GetSQLValueString($_FILES['foto_b']['name'], "text"),
GetSQLValueString($_POST['id'], "int"));

$cartella = '../foto/';
$percorso = $_FILES['foto_a']['tmp_name'];
$nome = $_FILES['foto_a']['name'];

move_uploaded_file($percorso, $cartella . $nome);

mysql_select_db($database_ZilliDB, $ZilliDB);
$Result1 = mysql_query($updateSQL, $ZilliDB) or die(mysql_error());

$updateGoTo = "../admin/admin_opinioni.php";
if (isset($_SERVER['QUERY_STRING'])) {
$updateGoTo .= (strpos($updateGoTo, '?')) ? "&" : "?";
$updateGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $updateGoTo));
}

$colname_modifica_opinioni = "-1";
if (isset($_GET['id'])) {
$colname_modifica_opinioni = $_GET['id'];
}
mysql_select_db($database_ZilliDB, $ZilliDB);
$query_modifica_opinioni = sprintf("SELECT * FROM opinioni WHERE id = %s", GetSQLValueString($colname_modifica_opinioni, "int"));
$modifica_opinioni = mysql_query($query_modifica_opinioni, $ZilliDB) or die(mysql_error());
$row_modifica_opinioni = mysql_fetch_assoc($modifica_opinioni);
$totalRows_modifica_opinioni = mysql_num_rows($modifica_opinioni);
?>


<head>

<title>// AMMINISTRAZIONE SITO </title>


<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>
<body>
<div id="content">
<table width="100%" border="0" cellpadding="2">
<tr>

</tr>
<tr>
<td valign="top">
<?php
include ("menu_admin.php");
?>

</td>
<td valign="top" id="main" width="81%" rowspan="2"><br />

<?php
if(!isset($_GET['action']) ||($_GET['action'] == "upload")){
if(!isset($_FILES['file']['name'])){
?>

<form action="<? echo $editFormAction; ?>" method="post" name="form1" id="form1" enctype="multipart/form-data">
<p><b>Titolo:</b><br />
<input type="text" name="titolo" value="<? echo htmlentities($row_modifica_opinioni['titolo'], ENT_COMPAT, 'utf-8'); ?>" size="120" />
<p><b>Sottotitolo:</b><br />
<textarea name="testo_breve" cols="100"><? echo htmlentities($row_modifica_opinioni['testo_breve'], ENT_COMPAT, 'utf-8'); ?></textarea>
<p><b>Testo intero:</b><br />
<textarea name="testo_intero" cols="100" rows="30"><? echo htmlentities($row_modifica_opinioni['testo_intero'], ENT_COMPAT, 'utf-8'); ?></textarea>
</p>
<img src="../foto/<?php echo $row_modifica_opinioni['foto_a']; ?>" width="150"/>
<p><b>Cambia foto:</b><br />
<input type="file" name="foto_a"></p>
<p><b>Cambia foto:</b><br />
<input type="file" name="foto_b"></p>
<input type="submit" value="Salva modifiche" />
<input type="hidden" name="MM_update" value="form1" />
<input type="hidden" name="id" value="<?php echo $row_modifica_opinioni['id']; ?>" />
</form>
<?php
}
}else{
//qui il codice che vuoi!
}
?>
</td>
</tr>
<tr>
<td width="19%">
<ul>
<li><a href="opinioni_inserisci.php">Inserisci nuova opinione</a></li>
<li><a href="admin_opinioni.php">Lista delle opinioni</a></li>
</ul> </td>
</tr>
</table>
</div>
</body>
</html>

<?php
mysql_free_result($modifica_opinioni);
?>

pero' mi da un error nella stringa:
}
header(sprintf("Location: %s", $updateGoTo));
}


e non mi rimanda alla pagina deffinita updateGoTo admin_opinioni

:-(

se qualcuno mi puo' aiutare... gli sarei grato
GRAZIE
BarbaJack non in linea   Rispondi citando
Vecchio 30-11-08, 12:18   #7 (permalink)
Moderatore
 
L'avatar di ilnetsurfer
 
Data di registrazione: Jun 2007
Ubicazione: Napoli
Messaggi: 535
Invia un messaggio tramite MSN a ilnetsurfer
Sono sicuro che ti dà il famoso errore degli header...prova cosi:
Codice PHP:
<?php 
ob_start
();
require_once(
'../connections/ZilliDB.php'); 


if (!
function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

 
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$editFormAction $_SERVER['PHP_SELF'];
if (isset(
$_SERVER['QUERY_STRING'])) {
  
$editFormAction .= "?" htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset(
$_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  
$updateSQL sprintf("UPDATE opinioni SET titolo=%s, testo_breve=%s, testo_intero=%s, foto_a=%s, foto_b=%s WHERE id=%s",
                       
GetSQLValueString($_POST['titolo'], "text"),
                       
GetSQLValueString($_POST['testo_breve'], "text"),
                       
GetSQLValueString($_POST['testo_intero'], "text"),
                       
GetSQLValueString($_FILES['foto_a']['name'], "text"),
                       
GetSQLValueString($_FILES['foto_b']['name'], "text"),
                       
GetSQLValueString($_POST['id'], "int"));

    
$cartella '../foto/';
    
$percorso $_FILES['foto_a']['tmp_name'];
    
$nome $_FILES['foto_a']['name'];
    
    
move_uploaded_file($percorso$cartella $nome);
  
  
mysql_select_db($database_ZilliDB$ZilliDB);
  
$Result1 mysql_query($updateSQL$ZilliDB) or die(mysql_error());

  
$updateGoTo "../admin/admin_opinioni.php";
  if (isset(
$_SERVER['QUERY_STRING'])) {
    
$updateGoTo .= (strpos($updateGoTo'?')) ? "&" "?";
    
$updateGoTo .= $_SERVER['QUERY_STRING'];
  }
  
header(sprintf("Location: %s"$updateGoTo));
}

$colname_modifica_opinioni "-1";
if (isset(
$_GET['id'])) {
  
$colname_modifica_opinioni $_GET['id'];
}
mysql_select_db($database_ZilliDB$ZilliDB);
$query_modifica_opinioni sprintf("SELECT * FROM opinioni WHERE id = %s"GetSQLValueString($colname_modifica_opinioni"int"));
$modifica_opinioni mysql_query($query_modifica_opinioni$ZilliDB) or die(mysql_error());
$row_modifica_opinioni mysql_fetch_assoc($modifica_opinioni);
$totalRows_modifica_opinioni mysql_num_rows($modifica_opinioni);
ob_end_flush();
?>
__________________
He knows not where he's going.For the ocean will decide.It's not the DESTINATION...It's the glory of the RIDE.
ilnetsurfer non in linea   Rispondi citando
Vecchio 30-11-08, 13:00   #8 (permalink)
User Newbie
 
Data di registrazione: Nov 2008
Messaggi: 3
si, esatto.. prima mi dava l'errore per il header... Pero' ora nacora non funziona... mi salva la prima volta la foto/immagine pero' appena vadfo la seconda volta per fare delle correzioni al testo.. do "salva modifiche" di nuovo mi salva "spazio vuoto" nel db :-(

dai che forse ce la facciamo...
Comunque grazie per l'impegno...
BarbaJack non in linea   Rispondi citando
Rispondi
Tags: ,



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 13:00.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.