Autor Zpráva
Marinero
Profil *
Zdravim.

Mam dotaz: Jde nejak odeslat postem z formulare misto normalni promenne pole?

Tvorim editaci statistik hracu (statistiky ulozene v MySQL). Statistiky mam vypsane phpkem na stranku v html tabulce. Cela tabulka je jeden velkej formular a ten chci cely ulozit SQL prikazem najednou. Problem neni v SQL prikazu (insert dokazu nejak napsat), ale mam problem s tim, ze tabulka se statistikami ma promenny pocet radku (podle toho, kolik hracu zde je zaevidovano) a tak bych potreboval postem z formulare poslat pole namisto jedne promenne. V soucasne dobe totiz dokazu ulozit, tedy spis poslat postem jen jeden radek tabulky (tedy nekolik promennych ktere predstavuji statistiky jednoho hrace). Potreboval bych ale poslat postem misto jednoho radku nekolik (tedy asi poslat postem pole s celym sloupcem z tabulky).
Poradi nekdo jak na to?

pro predstavu kod tabulky s formularem:
      $stranka .= "<table><form action=\"$PHP_SELF\" METHOD=\"POST\">";
      $stranka .= "<tr><td>hráč<td>zápasy</td><td>góly</td><td>asistence</td><td>body</td><td>trestné minuty</td></tr>";
      while( $data = mysql_fetch_row( $dbdata ) ) {
          $jmeno = $data[0];
          $zapasy = $data[1];
          $goly = $data[2];
          $asistence = $data[3];
          $body = $data[4];
          $tm = $data[5];
          $id = $data[6];
        $stranka .= "<tr>
          <td>$jmeno<INPUT TYPE=\"HIDDEN\" VALUE=\"$id\" NAME=\"id\"></td>
          <td><INPUT TYPE=\"TEXT\" VALUE=\"$zapasy\" NAME=\"zapasy\"></td>
          <td><INPUT TYPE=\"TEXT\" VALUE=\"$goly\" NAME=\"goly\"></td>
          <td><INPUT TYPE=\"TEXT\" VALUE=\"$asistence\" NAME=\"asistence\"></td>
          <td><INPUT TYPE=\"TEXT\" VALUE=\"$body\" NAME=\"body\"></td>
          <td><INPUT TYPE=\"TEXT\" VALUE=\"$tm\" NAME=\"tm\"></td>
        </tr>";
      }


timhle pak nactu z postu do promennych hodnoty z postu:
  $id = isset($_POST["id"]) ? $_POST["id"] : "";
  $zapasy = isset($_POST["zapasy"]) ? $_POST["zapasy"] : "";
  $goly = isset($_POST["goly"]) ? $_POST["goly"] : "";
  $asistence = isset($_POST["asistence"]) ? $_POST["asistence"] : "";
  $body = isset($_POST["body"]) ? $_POST["body"] : "";
  $tm = isset($_POST["tm"]) ? $_POST["tm"] : "";


a nasledne ulozim do database:
      $sql = "UPDATE statistiky_hraci SET zapasy='$zapasy',goly='$goly',asistence='$asistence',body='$body',tm='$tm' WHERE id='$id'";
      $vysledek = mysql_db_query( $database, $sql);


Snad je muj problem popsany pochopitelne...

Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
AM_
Profil
for ($i=0;$i<10;$i++){
echo "
<tr> 
<td>$jmeno<INPUT TYPE=\"HIDDEN\" VALUE=\"$id\" NAME=\"id[$i]\"></td> 
<td><INPUT TYPE=\"TEXT\" VALUE=\"$zapasy\" NAME=\"zapasy[$i]\"></td> 
<td><INPUT TYPE=\"TEXT\" VALUE=\"$goly\" NAME=\"goly[$i]\"></td> 
<td><INPUT TYPE=\"TEXT\" VALUE=\"$asistence\" NAME=\"asistence[$i]\"></td> 
<td><INPUT TYPE=\"TEXT\" VALUE=\"$body\" NAME=\"body[$i]\"></td> 
<td><INPUT TYPE=\"TEXT\" VALUE=\"$tm\" NAME=\"tm[$i]\"></td> 
</tr>
"; }

přijde to jako:

$_POST
  [id]
    [0]: "tym 1"
    [1]: "tym 2"
    ...
Perry
Profil
A co to nacist do inputu a do name davat napr. name="id1", name="id2" .. apod... kdy to cislo urcuje jakoby radku

Edit: AM_: Aha.. to jsem si neuvědomil že jde i takhle, to je samozřejmě elegantní
AM_
Profil
Perry:
ano, a hlavně se s tím i lépe pracuje, je docela otrava jak pro programátora, tak pro PHP interpret, foreach()em procházet celý POST a hledat jestli tam náhodou něco neodpovídá id[0-9]+.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0