I have this foreach loop to insert this array into a database. I want it to skip records that have nothing in the field tr_name. What’s the best way to do that?
foreach($_POST['tr_name'] as $tr_name) {
$sql3 = "INSERT INTO trophies (game_name, tr_name, tr_description, tr_color, tr_ach_value) VALUES ('".$_POST['game_name']."', '".$tr_name['tr_name']."', '".$tr_name['tr_desc']."', '".$tr_name['tr_color']."', '".$tr_name['tr_ach_value']."')";
mysql_query($sql3);
The data for the field game_name inserted properly. Each of the rest of the fields were filled with only the first character of what was input in the tr_name field. Why would that happen?
Here’s the form:
<form action="http://www.yeahthatrocks.com/update.php" method="post">
Game Name: <input name="game_name" type="text" size="25" maxlength="255" /><br></br>
Release Date: <input name="release_date" type="text" size="25" /><p></p>
<p>Console:
<select name="game_console">
<option value="PS3">PS3</option>
<option value="Xbox 360">Xbox 360</option>
<option value="Both">Both</option>
</select>
Game Category:
<select name="game_category">
<option value="Retail">Retail</option>
<option value="PSN">PSN</option>
<option value="Arcade">Arcade</option>
<option value="Arcade">DLC</option>
</select>
Game Type:
<select name="game_type">
<option value="Action">Action</option>
<option value="Action RPG">Action RPG</option>
<option value="Adventure">Adventure</option>
<option value="Board">Board</option>
<option value="Card">Card</option>
<option value="Casino">Casino</option>
<option value="Educational">Educational</option>
<option value="Fighting">Fighting</option>
<option value="Flight">Flight</option>
<option value="Game Show">Game Show</option>
<option value="Hunting">Hunting</option>
<option value="Music">Music</option>
<option value="Other">Other</option>
<option value="Pinball">Pinball</option>
<option value="Platformer">Platformer</option>
<option value="Puzzle">Puzzle</option>
<option value="Racing">Racing</option>
<option value="RPG">RPG</option>
<option value="Shooter">Shooter</option>
<option value="Sports">Sports</option>
<option value="Strategy">Strategy</option>
<option value="Virtual Pet">Virtual Pet</option>
</select>
Trophy Totals:</p>
Bronze: <input name="bronze_ttl" type="text" size="3" maxlength="3" />
<br/>
Silver: <input name="Silver Total" type="text" size="3" maxlength="3" /><br/>
Gold: <input name="Gold Total" type="text" size="3" maxlength="3" /><br/>
Platinum: <input name="Platinum Total" type="text" size="3" maxlength="3" /><br/>
Hidden: <input name="Hidden Total" type="text" size="3" maxlength="3" /><br/>
Xbox Pts.: <input name="Xbox Pts Total" type="text" size="5" maxlength="5" /><br/>
</p>
<p> </p>
<p>Trophies:</p>
Trophy Name: <input name="tr_name[0]" type="text" size="50" maxlength="255" /><br/>
Descripton: <input name="tr_desc[0]" type="text" size="50" maxlength="255" /><br/>
Trophy Color: <select name="tr_color[0]">
<option value="Bronze">Bronze</option>
<option value="Silver">Silver</option>
<option value="Gold">Gold</option>
<option value="Platinum">Platinum</option>
<option value="Hidden">Hidden</option>
</select>
Points: <input name="tr_ach_value[0]" type="text" size="4" maxlength="4" /><p></p>
Trophy Name: <input name="tr_name[1]" type="text" size="50" maxlength="255" /><br/>
Descripton: <input name="tr_desc[1]" type="text" size="50" maxlength="255" /><br/>
Trophy Color: <select name="tr_color[1]">
<option value="Bronze">Bronze</option>
<option value="Silver">Silver</option>
<option value="Gold">Gold</option>
<option value="Platinum">Platinum</option>
<option value="Hidden">Hidden</option>
</select>
Points: <input name="tr_ach_value[1]" type="text" size="4" maxlength="4" /><p></p>
Trophy Name: <input name="tr_name[2]" type="text" size="50" maxlength="255" /><br/>
Descripton: <input name="tr_desc[2]" type="text" size="50" maxlength="255" /><br/>
Trophy Color: <select name="tr_color[2]">
<option value="Bronze">Bronze</option>
<option value="Silver">Silver</option>
<option value="Gold">Gold</option>
<option value="Platinum">Platinum</option>
<option value="Hidden">Hidden</option>
</select>
Points: <input name="tr_ach_value[2]" type="text" size="4" maxlength="4" /><p></p>
Trophy Name: <input name="tr_name[3]" type="text" size="50" maxlength="255" /><br/>
Descripton: <input name="tr_desc[3]" type="text" size="50" maxlength="255" /><br/>
Trophy Color: <select name="tr_color[3]">
<option value="Bronze">Bronze</option>
<option value="Silver">Silver</option>
<option value="Gold">Gold</option>
<option value="Platinum">Platinum</option>
<option value="Hidden">Hidden</option>
</select>
Points: <input name="tr_ach_value[3]" type="text" size="4" maxlength="4" /><p></p>
Trophy Name: <input name="tr_name[4]" type="text" size="50" maxlength="255" /><br/>
Descripton: <input name="tr_desc[4]" type="text" size="50" maxlength="255" /><br/>
Trophy Color: <select name="tr_color[4]">
<option value="Bronze">Bronze</option>
<option value="Silver">Silver</option>
<option value="Gold">Gold</option>
<option value="Platinum">Platinum</option>
<option value="Hidden">Hidden</option>
</select>
Points: <input name="tr_ach_value[4]" type="text" size="4" maxlength="4" /><p></p>
<input name="submit" type="submit" value="submit" />
</form>
you can use
continue;to control your foreach loop:Edit
Your form would generate 4 standalone arrays each containing 4 items like name, description, color etc. It would look like this:
What you probably want is one array containing 4 inner arrays with 4 items in it like:
The new Form:
Your PHP code now should look like: