0

I need to make my form field not required when uploading information. Here is the scenario and code:

Scenario: A user wants to edit their information, without updating a different image: But obviously when i click submit and leave the image field blank it throws a error, how can i prevent this.

The field i want to be not required is the Image field (photo)

Here is code:

<?php
session_start();
$UserName = $_SESSION['UserName'];
require("checkLoginSession.php");
$adminid = $_GET['id'];

//removed connection
$tbl_name="admin"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");


echo("Logged In As: $UserName");
echo "<br />";
echo("We are editing Data for ID: $adminid");
echo "<br />";
echo "<a href=test.php>Go back to panel</a>";

$id=$_GET['id'];
// Retrieve data from database 
$sql="SELECT * FROM admin WHERE id='$id'";
$result=mysql_query($sql) or die(mysql_error());

$rows=mysql_fetch_array($result);
?>
<table width="400" border="0" cellspacing="1" cellpadding="0">
<tr>
<form enctype="multipart/form-data" name="form1" method="post" action="update_ac.php">
<td>
<table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr>
<td>&nbsp;</td>
<td colspan="3"><strong>Update data in mysql</strong> </td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
<td align="center">&nbsp;</td>
</tr>
<tr>
<td align="center">&nbsp;</td>
<td align="center"><strong>Name</strong></td>
<td align="center"><strong>Main Content</strong></td>
<td align="center"><strong>Image Locatoin</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="center"><input name="name" type="text" id="name" value="<? echo $rows['name']; ?>"></td>
<td align="center"><input name="mainContent" type="text" id="mainContent" value="<? echo $rows['mainContent']; ?>" size="15"></td>
<td align="center"><input name="photo" type="file" id="photo">
</tr>
<tr>
<td>&nbsp;</td>
<td><input name="id" type="hidden" id="id" value="<? echo $rows['id']; ?>"></td>
<td align="center"><input type="submit" name="Submit" value="Submit"></td>
<td>&nbsp;</td>
</tr>
</table>
</td>
</form>
</tr>
</table>

<?
mysql_close();
 ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Jonathon Legg - University Year Book - Edit Page</title>
</head>

<body>
<h2>Edit Page (<?php echo ("$adminid"); ?>)</h2>
<a href="test.php"><img src="backtopanel.jpg" alt="back to panel" width="454" height="85" border="0" longdesc="back to panel" /></a>
</body>
</html>

And here is the update_acknowledge.php

<?php
session_start();
$UserName = $_SESSION['UserName'];
require("checkLoginSession.php");
include "common.php";
DBConnect();
$Link = mysql_connect($Host, $User, $Password);

//connection removed for stack overflow //
$tbl_name="admin"; // Table name 

$target = "images/"; 
$target = $target . basename( $_FILES['photo']['name']); 
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// update data in mysql database 
$_POST = array_map("mysql_real_escape_string", $_POST); 
$firstName = $_POST["name"];
$mainText = $_POST["mainContent"];
$pic=($_FILES['photo']['name']); 


//



$sql="UPDATE admin SET name='$firstName', mainContent='$mainText', photo='$pic' WHERE id='$id'";

//

if (mysql_db_query ($DBName, $sql, $Link)){
print ("A record was created <br><a href=index.php> return to index </a>\n");


 //Writes the photo to the server 
 if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) 
 { 

 //Tells you if its all ok 
 echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
 } 
 else { 

 //Gives and error if its not 
 echo "Sorry, there was a problem uploading your file."; 
 } 


} else {

print ("Record not created");   
}

mysql_close($Link);
?>

2 Answers 2

2

Just wrap in an 'if' statement...

if (!empty($_FILES['photo']['name'])) {
     $pic=mysql_real_escape_string($_FILES['photo']['name']); 

     $sql="UPDATE admin SET name='$firstName', mainContent='$mainText', photo='$pic' WHERE id='$id'";
} else {
     $sql="UPDATE admin SET name='$firstName', mainContent='$mainText' WHERE id='$id'";
}

... of course need a similar if statement on the move_uploaded_file block too.

Sign up to request clarification or add additional context in comments.

2 Comments

will test it now and get back to you.
Worked perfect Barry, I am going to attempt the next block, will post the code up to see if it looks good.
0

I have placed the image logic in a conditional if($_FILES['photo']['error'] == 0)

<?php
session_start();
$UserName = $_SESSION['UserName'];
require("checkLoginSession.php");
include "common.php";
DBConnect();
$Link = mysql_connect($Host, $User, $Password);

//connection removed for stack overflow //
$tbl_name="admin"; // Table name 

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// update data in mysql database 
$_POST = array_map("mysql_real_escape_string", $_POST); 
$firstName = $_POST["name"];
$mainText = $_POST["mainContent"];


//

$sql = "UPDATE admin SET name='$firstName', mainContent='$mainText'";

if($_FILES['photo']['error'] == 0) {
    $target = "images/"; 
    $target = $target . basename( $_FILES['photo']['name']); 
    $pic=($_FILES['photo']['name']); 
    $sql .= ", photo='$pic'";
}

$sql .= "WHERE id='$id'";

//

if (mysql_db_query ($DBName, $sql, $Link)) {
    print ("A record was created <br><a href=index.php> return to index </a>\n");

    if($_FILES['photo']['error'] == 0) {
        //Writes the photo to the server 
        if(move_uploaded_file($_FILES['photo']['tmp_name'], $target)) { 
            //Tells you if its all ok 
            echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory"; 
        } else { 
            //Gives and error if its not 
            echo "Sorry, there was a problem uploading your file."; 
        }
    }
} else {
    print ("Record not created");   
}

mysql_close($Link);
?>

1 Comment

will test it now and get back to you.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.