Products
GG网络技术分享 2025-03-18 16:12 0
I am building a dashboard with custom User Data. Each element on the dashboard goes into the loop and shows the related information regarding that user.I am able to show the the custom field using session and loops but i need to update the information as well, somehow it is not updating. Please help with this:
<?php global $wpdb;
$table_name = $wpdb->prefix . \'contract\';
$wsid = $_SESSION[\'wedding-values\'];
$results = $wpdb->get_results( \"SELECT * FROM $table_name WHERE id=$wsid \" );
if ( $results ) {
foreach ( $results as $result ){
$wcname=$result->cname;
$wctname=$result->ctname;
$waddress=$result->address;
$wmobile=$result->mobile;
$wemail=$result->email;
$wdate=$result->Date;
$id=$result->id;
}
}
if ( isset( $_POST[\'submit\'] ) ){
$wpdb->update($table_name,array(
\'cname\'=>$_POST[\'cname\'],array(\'id\'=>$wsid))
);
}
?>
Html:
<div id=\"col-md-9\"><form action=\"\" method=\"post\">
<table>
<tr>
<td><p style=\"color: red\"> Couple Name </p></td>
<td><input type=text name=cname placeholder=<?php echo $wcname;?>></td>
</tr>
<tr>
<td><p style=\"color: red\"> Contact Name </p></td>
<td><?php echo $wctname;?></td>
</tr>
<tr>
<td><p style=\"color: red\"> Address </p></td>
<td><?php echo $waddress;?></td>
</tr>
<tr>
<td><p style=\"color: red\"> Mobile </p></td>
<td><?php echo $wmobile;?></td>
</tr>
<tr>
<td><p style=\"color: red\"> Email</p></td>
<td><?php echo $wemail;?></td>
</tr>
<tr>
<td><p style=\"color: red\"> Date Submitted</p></td>
<td><?php echo $wdate;?></td>
</tr>
<tr>
<td><input type=\"submit\" name=\"editsave\" value=\"Edit and Save\" ></td>
</tr>
</table>
</form>
</div>
You were forget to add this 2 things in query,
$table_name,array(\'cname\'=>$_POST[\'cname\']),array(\'id\'=>$wsid),array(\'%s\'),array(\'%d\'))
array(\'%s\'),array(\'%d\')
Check this example
$result = $wpdb->update($table_name,array(\'cname\'=>$_POST[\'cname\']),array(\'id\'=>$wsid),array(\'%s\'),array(\'%d\'))
);
if($result > 0){
echo \\\"Successfully Updated\\\";
}
else{
exit( var_dump( $wpdb->last_query ) );
}
$wpdb->flush();
EDIT
Also change this
if (isset($_POST[\'submit\']))
To
if (isset($_POST[\'editsave\']))
You were using wrong submit button name
Try with this code. Hope this will helps you.
###
You can output the error
if($wpdb->last_error !== \'\') :$wpdb->print_error()
endif;
btw, please use $wpdb->prepare to prepares a SQL query for safe execution
Demand feedback