Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz-pole input tworzone w pętli
Forum PHP.pl > Forum > PHP
03luki
Mam do zrobienia projekt na studiach, chce napisac typera, do typowania wyników meczów. Ale napotkałem pewien problem, tworzą mi się w pętli while kolejne pola input a za pętlą mam przycisk submit, po którego kliknięciu ma się wysłac cały formularz do bazy danych. Tylko że teraz w tej wersji co mam wysyła mi się np 6 razy ostatni mecz, wiem że to przez to że w każdym kolejnym przejściu przez pętlę te pola input mają taką samą nazwę. Może mi ktoś podpowiedzieć jak ten problem rozwiązać?

Kod
$wynik = mysql_query("SELECT Kolejka,Data, Godzina, Mecz FROM  Liga_angielska WHERE Kolejka='$nr'") or die("Blad");
$n=mysql_num_rows($wynik);
<table align="left">
<form method="post" action="typ.php?akcja=wykonaj">
<br><TR><TD align="center">Data</TD><TD align="center">Godzina</TD><TD>&nbsp;&nbsp;</TD><TD align="center">Mecz</TD><TD></TD></TR>
<?php while ($wiersz = mysql_fetch_array($wynik))
{
$formatgodz = 'H:i'; // Ustawiamy, jaki format godziny chcemy otrzymac.
    $godzzbazy = ''.$wiersz['Godzina'].''; // Do tej zmiennej przypisujemy wartosc godziny pobranej z bazy danych.
$formatdaty = 'd.m.Y'; // Ustawiamy, jaki format daty chcemy otrzymac.
    $datazbazy = ''.$wiersz['Data'].''; // Do tej zmiennej przypisujemy wartosc daty pobranej z bazy danych.
    $form=date($formatdaty, strtotime($datazbazy));
$godz=date($formatgodz, strtotime($godzzbazy));
$mecz=$wiersz['Mecz'];?>
<TR><TD align="center">
<input maxlength="50" type="text" name="data" value="<?=$form?>" readonly="yes"  style="border: 0px" size="10"  />
</TD><TD align="center">
<input maxlength="50" type="text" name="godz" value="<?=$godz?>" readonly="yes"  style="border: 0px" size="5"  />
</TD><TD>&nbsp;&nbsp;</TD><TD align="center"><input maxlength="50" type="text" name="mecz" value="<?=$mecz?>" readonly="yes"  style="border: 0px" size="25"  /></TD><TD>&nbsp;&nbsp;<input maxlength="2" type="text" name="wynik_A" value="<?=$wynik_A?>"  style="border: 1px solid #D5C69F" size="1"  />:<input maxlength="2" type="text" name="wynik_B" value="<?=$wynik_B?>"  style="border: 1px solid #D5C69F" size="1" />&nbsp;&nbsp;&nbsp;</TD></TR>
<? }?>
<Input type="submit" value="Wyslij typy">
</form>
<?

        
$akcja = $_GET['akcja'];
   if ($akcja == wykonaj)
{  for($j=1;$j<=$n;$j++){

$form=$_POST['data'];
$godz=$_POST['godz'];
$mecz=$_POST['mecz'];
$wynik_A=$_POST['wynik_A'];
$wynik_B=$_POST['wynik_B'];

mysql_query("INSERT INTO `$nick` (Data, Godzina, Mecz, Wynik_A, Wynik_B) VALUES('$form','$godz','$mecz','$wynik_A','$wynik_B')") or die("Blad,spróbuj ponownie!");}
echo '<center>Twoje typy zostaly wyslane</center>';
} ?>
</table>
Sephirus
Proponuję coś takiego:

  1. <input maxlength="50" type="text" name="mecz[]" value="....


name ustaw na mecz[] nie mecz. Wówczas po wysłaniu dostaniesz $_POST['mecz'] jako tablicę PHP wink.gif
03luki
ok, zaraz wypróbuje. A jak mam to wtedy zapisać w tym miejscu gdzie definiuje co się ma stać po naciśnięciu przycisku submit, tzn jak się odwołać do tej tablicy mecz[]?
Kod
for($j=1;$j<=$n;$j++){

$form=$_POST['data'];
$godz=$_POST['godz'];
$mecz=$_POST['mecz'];
$wynik_A=$_POST['wynik_A'];
$wynik_B=$_POST['wynik_B'];

mysql_query("INSERT INTO `$nick` (Data, Godzina, Mecz, Wynik_A, Wynik_B) VALUES('$form','$godz','$mecz','$wynik_A','$wynik_B')") or die("Blad,spróbuj ponownie!");}
Sephirus
Ok poprawka musisz wszystkim polom jakie masz w formurzu, które są objęte pętlą while dać ten myk z "[]" żeby każde były zwracane jako tablica wówczas:

  1.  
  2. for($j=0;$j<count($_POST['data']);$j++){
  3.  
  4. $form=$_POST['data'][$j];
  5. $godz=$_POST['godz'][$j];
  6. $mecz=$_POST['mecz'][$j];
  7. $wynik_A=$_POST['wynik_A'][$j];
  8. $wynik_B=$_POST['wynik_B'][$j];
  9.  
  10. mysql_query("INSERT INTO `$nick` (Data, Godzina, Mecz, Wynik_A, Wynik_B) VALUES('$form','$godz','$mecz','$wynik_A','$wynik_B')") or die("Blad,spróbuj ponownie!");}


lecisz po tablicy i wrzucasz do bazy wink.gif
03luki
Dziękuje, super, wszystko działa wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.