mrgrinch12 Posted June 9, 2010 Share Posted June 9, 2010 I have a form that produces an array when submitted and I need to strip out the use able data for an update query. The array contains the number of the row needing to be updated and what it needs to be updated with. Here is an example of what I need from the array: 1182 = Active here is the output of the array: array(21) { [2028]=> string(6) "Active" [1176]=> string(6) "Active" [1331]=> string(6) "Active" [842]=> string(6) "Active" [7816]=> string(6) "Active" [2769]=> string(5) "Bench" [2392]=> string(6) "Active" [1916]=> string(6) "Active" [1976]=> string(6) "Active" [2131]=> string(6) "Active" [313]=> string(6) "Active" [1792]=> string(6) "Active" [1803]=> string(6) "Active" [1859]=> string(6) "Active" [1714]=> string(6) "Active" [1556]=> string(6) "Active" [1321]=> string(6) "Active" [2394]=> string(6) "Active" [1268]=> string(6) "Active" [761]=> string(6) "Active" ["submit"]=> string(6) "submit" } Array ( [0] => ) Quote Link to comment https://forums.phpfreaks.com/topic/204280-breaking-down-an-array/ Share on other sites More sharing options...
JonnoTheDev Posted June 9, 2010 Share Posted June 9, 2010 <?php foreach($_POST as $id => $status) { if(is_numeric($id)) { print "UPDATE tablename SET x='".$status."' WHERE id='".$id."'<br />"; } } ?> Quote Link to comment https://forums.phpfreaks.com/topic/204280-breaking-down-an-array/#findComment-1069918 Share on other sites More sharing options...
micah1701 Posted June 9, 2010 Share Posted June 9, 2010 neil beat me to it... but I typed all this out so I'm posting anyway <?php foreach($name_of_your_array as $key => $val){ echo $key; // this is the name of the row to be updated echo $val; // this is the value of what needs to be updated $sql = "UPDATE tablename SET column_name = '$val' WHERE row_id_column_name = $key LIMIT 1"; echo $sql; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/204280-breaking-down-an-array/#findComment-1069919 Share on other sites More sharing options...
JonnoTheDev Posted June 9, 2010 Share Posted June 9, 2010 A better method would be to loop through the array and group id's to statuses. This will results in less queries i.e <?php $x['Active'] = array(1,2,3,4); $x['Inactive'] = array(5,6,7,; mysql_query("UPDATE table SET x='Active' WHERE id IN(".implode(",",$x['Active']).")"); mysql_query("UPDATE table SET x='Inactive' WHERE id IN(".implode(",",$x['Inactive']).")"); ?> Quote Link to comment https://forums.phpfreaks.com/topic/204280-breaking-down-an-array/#findComment-1069921 Share on other sites More sharing options...
mrgrinch12 Posted June 9, 2010 Author Share Posted June 9, 2010 Wow...lots of quick responses and three different answers. I tried them all and could not get the database to update. Would it help if I posted all the code for the form and the pages that got me to here? Quote Link to comment https://forums.phpfreaks.com/topic/204280-breaking-down-an-array/#findComment-1069946 Share on other sites More sharing options...
mrgrinch12 Posted June 9, 2010 Author Share Posted June 9, 2010 here is the code: <?php session_start(); require('/conn_ssfhl.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; } } $colname_DetailRS1 = "-1"; if (isset($_SESSION['MM_Username'])) { $colname_DetailRS1 = $_SESSION['MM_Username']; } mysql_select_db($database_conn_ssfhl, $conn_ssfhl); $query_DetailRS1 = sprintf("SELECT PlayerID, FanID, Type, InjuryID, Player, StatusID, StatusChangeChoice, CurrentWeek, GMEmail FROM tblplayers WHERE GMEmail = %s ORDER BY tblplayers.Type Asc", GetSQLValueString($colname_DetailRS1, "text")); $DetailRS1 = mysql_query($query_DetailRS1, $conn_ssfhl) or die(mysql_error()); $row_DetailRS1 = mysql_fetch_assoc($DetailRS1); $totalRows_DetailRS1 = mysql_num_rows($DetailRS1); $colname_rsGMDetail = "-1"; if (isset($_SESSION['MM_Username'])) { $colname_rsGMDetail = $_SESSION['MM_Username']; } mysql_select_db($database_conn_ssfhl, $conn_ssfhl); $query_rsGMDetail = sprintf("SELECT GMFirst, GMLast FROM tbluseradmin WHERE GMEmail = %s", GetSQLValueString($colname_rsGMDetail, "text")); $rsGMDetail = mysql_query($query_rsGMDetail, $conn_ssfhl) or die(mysql_error()); $row_rsGMDetail = mysql_fetch_assoc($rsGMDetail); $totalRows_rsGMDetail = mysql_num_rows($rsGMDetail); // Count rows in table $count=mysql_num_rows($DetailRS1); ?> <?php // Post variables //$player = $_POST['hideplayerID']; //$playerid = $_POST['PlayerID']; //$select_id = $row['PlayerID']; if (!isset($_POST['submit'])) { // if page is not submitted to itself echo the form } ?> <!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=iso-8859-1" /> <title>form</title> </head> <body bgcolor="#FFFFFF"> <form id="frmupdate" name="frmupdate" method="post" action="update2.php"> <table width="500" border="0" cellspacing="1" cellpadding="0"> <tr> <td align="center" bgcolor="#FFCC00"><strong>ID</strong></td> <td align="center" bgcolor="#FFCC00">Position</td> <td align="center" bgcolor="#FFCC00">Player</td> <td align="center" bgcolor="#FFCC00">Health</td> <td align="center" bgcolor="#FFCC00">Current Status</td> <td align="center" bgcolor="#FFCC00"><strong>Change Status</strong></td> </tr> <?php // Fetch record rows in $DetailRS1 by while loop and put them into $row. while($row=mysql_fetch_assoc($DetailRS1)){ ?> <tr> <td bgcolor="#FFFFCC"><? echo $row['PlayerID']; ?></td> <td bgcolor="#FFFFCC"><? echo $row['Type']; ?></td> <td bgcolor="#FFFFCC"><? echo $row['Player']; ?></td> <td bgcolor="#FFFFCC"><? echo $row['InjuryID']; ?></td> <td bgcolor="#FFFFCC"><? echo $row['StatusID']; ?></td> <td bgcolor="#FFFFCC"><label> <select name=<?=$row['PlayerID']?>> <option value="Active" selected="selected">Active</option> <option value="Bench">Bench</option> </select> </label></td> </tr> <tr> </tr> <?php } // End while loop. ?> </table> <p> <input type="submit" name="submit" value="submit" /> </p> </form> </body> </html><?php ?> //update page code starts here <?php require_once('../conn_ssfhl.php'); ?> <!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>update</title> </head> <body> <?php // If receive Submit button variable. if($_POST['submit']){ // Select all data records in table "tblplayers" and put them into $result. 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; } } # Script 2.5 - update.php //Validate the status and combat Magic Quotes, if neccessary. if (!empty($_REQUEST['select'])) { $select = stripslashes($_REQUEST['select']); } else { $select = NULL; echo '<p>You forgot to change your player status!</p>'; } //If everything else is okay, print the message echo "<p>Thank you</p>"; } else {//Selection was not made on form. echo "<p>Please go back and complete your selections.</p>"; } mysql_select_db($database_conn_ssfhl, $conn_ssfhl); $query_result = "SELECT PlayerID FROM tblplayers ORDER BY PlayerID ASC"; $result = mysql_query($query_result, $conn_ssfhl) or die(mysql_error()); $row_result = mysql_fetch_assoc($result); $totalRows_result = mysql_num_rows($result); if (mysql_num_rows($result) == 0) { echo "No rows found, nothing to print so am exiting"; exit; } else { // Fetch record rows in $result by while loop and put them into $row. while($row = mysql_fetch_assoc($result)){ //start a counter in order to number the input fields for each record for($i=0;$i<$count;$i++){ // Update field "StatusChangeChoice", matching with "PlayerID" value by while loop. foreach ($_POST as $my_player_id) { $query_update = "UPDATE tblplayers SET StatusChangeChoice = '".$_POST[$my_player_id]."' where PlayerID = '$my_player_id'"; mysql_query($query_update); } if (!$update) { $message = 'Invalid query: ' . mysql_error() . "\n"; $message .= 'Whole query: ' . $query_update; die($message); } } } } echo "--- Update Complete ---"; echo "This is the query : ". $query_update; ?> </body> </html> <?php echo $my_player_id; print_r($my_player_id); var_dump($_POST); mysql_free_result($result);?> ?> Quote Link to comment https://forums.phpfreaks.com/topic/204280-breaking-down-an-array/#findComment-1069995 Share on other sites More sharing options...
JonnoTheDev Posted June 9, 2010 Share Posted June 9, 2010 I haven't read your code, however. One quick tip. Print queries to the screen to make sure they contain the correct data. Once you are satisfied, replace with the mysql_query() function. Quote Link to comment https://forums.phpfreaks.com/topic/204280-breaking-down-an-array/#findComment-1070101 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.