Jump to content


Photo

Problem with arrays...


  • Please log in to reply
2 replies to this topic

#1 jcbarr

jcbarr
  • Members
  • PipPipPip
  • Advanced Member
  • 219 posts

Posted 15 August 2006 - 09:00 PM

Okay so here is the deal. I have a form that sends a bucnh of variables to a php script. It sends a them like so pos[] league[] stat[] name[]

It sends them to this script

//Get Variables
$create = $_GET['CREATE'];
$edit = $_GET['EDIT'];
$add = $_GET['ADD'];
$view = $_GET['VIEW'];
?>

<?PHP if ($add=="Y") {

foreach($_POST as $k=>$v)
{
   if($k=='pos')
   {
      foreach($_POST[$k] as $v)
      {
          if($v!==""){
          $sql="INSERT INTO ballot (POS) VALUES ('$v')";
          mysql_query($sql); }
      }
   }
   if($k=='league')
   {
      foreach($_POST[$k] as $v)
      {
          $sql="UPDATE ballot SET LEAGUE = '$v' WHERE LEAGUE = '' LIMIT 1";
          mysql_query($sql); 
      }
   }
   if($k=='player')
   {
      foreach($_POST[$k] as $v)
      {
          $sql="UPDATE ballot SET NAME = '$v' WHERE NAME = '' LIMIT 1";
          mysql_query($sql); 
      }
   }
   if($k=='stat')
   {
      foreach($_POST[$k] as $v)
      {
          $sql="UPDATE ballot SET STAT = '$v' WHERE STAT = '' LIMIT 1";
          mysql_query($sql); 
      }
   }
}

                      }

Now the problem is that it doesn't seem to be doing them in the right order. For whatever reason the arrays aren't going over ordered the same or something. The form code looks like this.

<table align="center" cellpadding="4" border="1">
<tbody id="T1" >
  <tr>
      <td colspan="5" bgcolor="#3399FF" align="center"><b>UNION LEAGUE</b></td>
  </tr>
   <tr>
      <td bgcolor="#FFFFCC" align="center"><b>POS</b></td>
      <td bgcolor="#FFFFCC" align="center"><b>PLAYER</b></td>
      <td bgcolor="#FFFFCC" align="center"><b>STAT LINE</b></td>
  </tr>
      <form method="post" action="allstar.php?ADD=Y">
  <tr>
      <td bgcolor="#FFFFCC" align="center"><select name="pos[]">
                                           <option><option>P
                                           <option>C
                                           <option>1B
                                           <option>2B
                                           <option>3B
                                           <option>SS
                                           <option>LF
                                           <option>CF
                                           <option>RF</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="player[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="stat[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <select name="league[]"><option><option>UL</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <span onclick="AddRow(); return false;" >Add</span>
      </td>
  </tr>
  <tr style="display:none;" >
      <td bgcolor="#FFFFCC" align="center"><select name="pos[]">
                                           <option><option>P
                                           <option>C
                                           <option>1B
                                           <option>2B
                                           <option>3B
                                           <option>SS
                                           <option>LF
                                           <option>CF
                                           <option>RF</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="player[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="stat[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <select name="league[]"><option><option>UL</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <span onclick="AddRow(); return false;" >Add</span>
      </td>
  </tr>
  <tr style="display:none;" >
      <td bgcolor="#FFFFCC" align="center"><select name="pos[]">
                                           <option><option>P
                                           <option>C
                                           <option>1B
                                           <option>2B
                                           <option>3B
                                           <option>SS
                                           <option>LF
                                           <option>CF
                                           <option>RF</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="player[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="stat[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <select name="league[]"><option><option>UL</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <span onclick="AddRow(); return false;" >Add</span>
      </td>
  </tr>
  <tr style="display:none;" >
      <td bgcolor="#FFFFCC" align="center"><select name="pos[]">
                                           <option><option>P
                                           <option>C
                                           <option>1B
                                           <option>2B
                                           <option>3B
                                           <option>SS
                                           <option>LF
                                           <option>CF
                                           <option>RF</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="player[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="stat[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <select name="league[]"><option><option>UL</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <span onclick="AddRow(); return false;" >Add</span>
      </td>
  </tr>
  <tr style="display:none;" >
      <td bgcolor="#FFFFCC" align="center"><select name="pos[]">
                                           <option><option>P
                                           <option>C
                                           <option>1B
                                           <option>2B
                                           <option>3B
                                           <option>SS
                                           <option>LF
                                           <option>CF
                                           <option>RF</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="player[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="stat[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <select name="league[]"><option><option>UL</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <span onclick="AddRow(); return false;" >Add</span>
      </td>
  </tr>
  <tr style="display:none;" >
      <td bgcolor="#FFFFCC" align="center"><select name="pos[]">
                                           <option><option>P
                                           <option>C
                                           <option>1B
                                           <option>2B
                                           <option>3B
                                           <option>SS
                                           <option>LF
                                           <option>CF
                                           <option>RF</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="player[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="stat[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <select name="league[]"><option><option>UL</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <span onclick="AddRow(); return false;" >Add</span>
      </td>
  </tr>
  <tr style="display:none;" >
      <td bgcolor="#FFFFCC" align="center"><select name="pos[]">
                                           <option><option>P
                                           <option>C
                                           <option>1B
                                           <option>2B
                                           <option>3B
                                           <option>SS
                                           <option>LF
                                           <option>CF
                                           <option>RF</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="player[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <input type="text" name="stat[]">
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <select name="league[]"><option><option>UL</select>
      </td>
      <td bgcolor="#FFFFCC" align="center">
            <span onclick="AddRow(); return false;" >Add</span>
      </td>
  </tr>

There is a bunch more of it, but I don't think I need to go on.

So, anyone have a suggestion to make the arrays for each form variable line up correctly so that this will work?

#2 Barand

Barand
  • Moderators
  • Sen . ( ile || sei )
  • 18,022 posts

Posted 15 August 2006 - 10:46 PM

here's a way to keep the related variable together
<?php
if (isset($_POST['submit'])) {
	foreach ($_POST['pos'] as $k => $pos) {
		$league = $_POST['league'][$k];
		$stat = $_POST['stat'][$k];
		$name = $_POST['name'][$k];
		if ($pos != '') {
			mysql_query ("INSERT INTO mytable (pos, league, stat, name)
		           VALUES ('$pos', '$league', '$stat', '$name')");
		}
	}

}
?>
<FORM method='POST'>
<table border='0'>
<TR>
	<TD>Pos</TD>
	<TD>League</TD>
	<TD>Stat</TD>
	<TD>Name</TD>
</TR>
	<?php
	for ($i=0; $i<5; $i++) {
	    echo '<TR>
			<TD><input type="text" name="pos[]"></TD>
			<TD><input type="text" name="league[]"></TD>
			<TD><input type="text" name="stat[]"></TD>
			<TD><input type="text" name="name[]"></TD>
		</TR>
		';
	}
	?>
</table>
<input type="submit" name="submit" value="Add">
</FORM>

If you are still using mysql_ functions, STOP! Use mysqli_ or PDO. The longer you leave it the more you will have to rewrite.

Donations gratefully received






moon.png

|baaGrid| easy data tables - and more
|baaChart| easy line, column and pie charts

#3 jcbarr

jcbarr
  • Members
  • PipPipPip
  • Advanced Member
  • 219 posts

Posted 15 August 2006 - 11:24 PM

That is awesome, problem solved. Thanks a ton for your help.




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users