I have been having problems with some code I am writing and have not been able to figure out what I am doing wrong, even after some debugging.
I have a textbox that users can input any letters into, that should should search the item field boxes and highlight any matching strings. If a matching search is made, then the item box should remain yellow, and the other item boxes should be white.
It does not have to be a perfect match. Any letter that matches, such as the letter '"j" in the word "juice" should be enough to make the item field box, highlight yellow.
I am including my code but have not been able to figure out how to use this code:
str_ireplace($targetstring, '<span style="background-color:#ff0000;">' . $targetstring . '</span>', $item_value);
(I must be doing something wrong) Any help with this would be greatly appreciated.
Thanks.
Expand|Select|Wrap|Line Numbers
- <html>
- <head>
- <title>testcode</title>
- </head>
- <body>
- <body style="font-family: Arial, Helvetica, sans-serif; color: black;">
- <h1>Test</h1>
- <form method=post>
- <br><b>Sort order for items:</b>
- <br>
- <br>
- <?php
- $sort_order = trim($_POST['sort_order']);
- $targetstring = trim($_POST['targetstring']);
- if (isset($_POST['Submit'])) //The following code is intended to retain the choice of the radio button chosen by the user
- $sort_order = $_POST['sort_order'];
- switch($sort_order)
- {
- case 'desc' :
- print "Ascending <input type=radio name=sort_order value=asc> ";
- print "Descending <input type=radio name=sort_order value=desc checked> ";
- break;
- default :
- print "Ascending <input type=radio name=sort_order value=asc checked> ";
- print "Descending <input type=radio name=sort_order value=desc> ";
- break;
- }
- $sort_line = array(); //Declare an empty array
- for ($row = 1; $row <5 ; $row++) // creates rows that are less than 5
- {
- $item_name='item'.$row; // assign values
- $item_value=$_POST[$item_name]; // assign values
- $amount_name='amount'.$row; // assign values
- $amount_value=$_POST[$amount_name]; // assign values
- $myelement = "$item_value*$amount_value*";
- array_push($sort_line, $myelement); //Adds $myelement to the end of the $sort_line array
- }
- if ($sort_order == 'desc')
- {
- rsort($sort_line); //Sorts array in place
- } else {
- sort($sort_line); //Sorts array in place
- }
- ?>
- <br />
- <br />
- <br><b>Find Items that Contain:</b>
- <input type=text name=targetstring size=20>
- <br>
- <br>
- <table>
- <tr>
- <th>Item</th><th>Amount</th>
- </tr>
- <?php
- $err_cnt = 0;
- $total_amt = 0;
- $read_ctr = 1;
- for ($row = 1; $row <5 ; $row++) // creates rows that are less than 5
- {
- $item_name='item'.$row; // assign values
- $array_counter = $row - 1; //To make sure to get element 0 in the array
- $amount_name='amount'.$row; // assign values
- $array_counter = $row - 1; //To make sure to get element 0 in the array
- list($item_value_from_array, $amount_value_from_array) = explode('*',$sort_line[$array_counter]);
- str_ireplace($targetstring, '<span style="background-color:#ff0000;">' . $targetstring . '</span>', $item_value); // can not figure out the string manipulation for the search text box
- if ($targetstring == $item_value_from_array)
- {
- print "<td><input type=text name=$item_name value='".$item_value_from_array."' style=\"background-color: Yellow;\"></td>\n";
- //print "<td><input type=text name=$item_name value='".$item_value_from_array."'></td>\n";
- print "<td><input type=text name=".$amount_name." value='$amount_value_from_array'></td>\n";
- } else {
- print "<td><input type=text name=$item_name value='".$item_value_from_array."'></td>\n";
- //print "<td><input type=text name=$item_name value='".$item_value_from_array."' style=\"background-color: Yellow;\"></td>\n";
- print "<td><input type=text name=".$amount_name." value='$amount_value_from_array'></td>\n";
- }
- list($item_read, $amount_read) = explode("*", $sort_line[$array_counter]); // attempting to break up the Array elements into variables using explode function
- if (!empty($amount_read)) //if amount value is not empty
- {
- if (is_numeric($amount_read)) // checks to see if amount value is a numeric number
- {
- $total = $total + $amount_read; //adds the total of the amount column and created the $total variable
- } else {
- print"<td><font color=red>Amount: $amount_read is not a number</font></td>"; // if amount value is not numberic then prints error in red
- $error_count++; // counts number of invalid amounts
- }
- }
- print"</tr>\n";
- }
- ?>
- </table>
- <?php
- if ($error_count >0) // if statement checking to see if errors; if there are, then prints them. If not then prints total amount only
- {
- print"<br>Errors: $error_count"; // prints total of invalid amount errors
- } else {
- print"<br>Total: $total"; // prints total of amounts
- }
- ?>
- <br><br><input type=submit value=Submit>
- <br>
- <br>
- </form>
- </body>
- </html>