modifica dell'image utilizzando il tipo di file di input

Ho fatto un semplice editing per modificare i dati in mysql, tutto funziona bene, tranne quando voglio modificare un'image di tipo file di input che non funziona, non dà un messaggio di errore, ma non modifica nulla e quando rimuove l'image del tipo di file di input che funziona. e modificando un'image intendo inserendo una nuova image che sostituirà la vecchia image.

ecco il mio codice:

<?php require("db.php"); $id = $_REQUEST['theId']; $result = mysql_query("SELECT * FROM table WHERE id = '$id'"); $test = mysql_fetch_arrays($result); $name = $test['Name'] ; $email = $test['Email'] ; $image = $test['Image'] ; if (isset($_POST['submit'])) { $name_save = $_POST['name']; $email_save = $_POST['email']; if (isset($_FILES['image']['tmp_name'])) { $file = $_FILES['image']['tmp_name']; $image = addslashes(file_get_contents($_FILES['image']['tmp_name'])); $image_name = addslashes($_FILES['image']['name']); move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]); $image_save ="photos/" . $_FILES["image"]["name"]; mysql_query("UPDATE table SET Name ='$name_save', Email ='$email_save',Image ='$image_save' WHERE id = '$id'") or die(mysql_error()); header("Location: index.php"); } } ?> <form method="post"> <table> <tr> <td>name:</td> <td> <input type="text" name="name" value="<?php echo $name ?>"/> </td> </tr> <tr> <td>email</td> <td> <input type="text" name="email" value="<?php echo $email ?>"/> </td> </tr> <tr> <td>image</td> <td> <input type="file" name="image" value="<?php echo $image ?>"/> </td> </tr> <tr> <td>&nbsp;</td> <td> <input type="submit" name="submit" value="submit" /> </td> </tr> </table> 

Nella forma enctype = "multipart / form-data" manca e nel tuo module non c'è type = "file".

Dai il codice seguente e prova.

 <?php require("db.php"); $id =$_REQUEST['theId']; $result = mysql_query("SELECT * FROM table WHERE id = '$id'"); $test = mysql_fetch_arrays($result); $name=$test['Name'] ; $email= $test['Email'] ; $image=$test['Image'] ; if(isset($_POST['submit'])){ $name_save = $_POST['name']; $email_save = $_POST['email']; $image_save=$image //Added if image is not chose from the form post if (isset($_FILES['image']['tmp_name'])) { $file=$_FILES['image']['tmp_name']; $image= addslashes(file_get_contents($_FILES['image']['tmp_name'])); $image_name= addslashes($_FILES['image']['name']); move_uploaded_file($_FILES["image"]["tmp_name"],"photos/" . $_FILES["image"]["name"]); $image_save ="photos/" . $_FILES["image"]["name"]; } mysql_query("UPDATE table SET Name ='$name_save', Email ='$email_save',Image ='$image_save' WHERE id = '$id'") or die(mysql_error()); header("Location: index.php"); } ?> <form method="post" enctype="multipart/form-data"> <table> <tr> <td>name:</td> <td><input type="text" name="name" value="<?php echo $name ?>"/></td> </tr> <tr> <td>email</td> <td><input type="text" name="email" value="<?php echo $email ?>"/></td> </tr> <tr> <td>image</td> <td><input type="file" name="image" /></td> </tr> <tr> <td>&nbsp;</td> <td><input type="submit" name="submit" value="submit" /></td> </tr> </table> 

Inoltre si dovrebbe get il valore dell'image precedente tramite sql e aggiornare se l'image non è stata scelta durante l'aggiornamento.

 <tr> <td>image</td> <td><input type="file" name="image" ></td> </tr> 

Devi usare input:type=file elemento invece di input:type=text per gestire il file image usando $_FILES . O non puoi get il file image. Quindi la tua dichiarazione if restituisce false e non succede nulla.

 <form method="post" enctype="multipart/form-data"> <table> <tr> <td>name:</td> <td><input type="text" name="name" value="<?php echo $name ?>"/></td> </tr> <tr> <td>email</td> <td><input type="text" name="email" value="<?php echo $email ?>"/></td> </tr> <tr> <td>image</td> <td><input type="file" name="image" /></td> </tr> <tr> <td>image preview</td> <td><img src="photos/<?php echo $image ?>" /></td> </tr> <tr> <td>&nbsp;</td> <td><input type="submit" name="submit" value="submit" /></td> </tr> </table> </form>