Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Formularz-pole input tworzone w pętli
03luki
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.12.2011

Ostrzeżenie: (0%)
-----


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>


Ten post edytował 03luki 29.12.2011, 16:13:43
Go to the top of the page
+Quote Post
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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

Ten post edytował Sephirus 29.12.2011, 16:16:08


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
03luki
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.12.2011

Ostrzeżenie: (0%)
-----


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!");}


Ten post edytował 03luki 29.12.2011, 16:24:44
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
03luki
post
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 29.12.2011

Ostrzeżenie: (0%)
-----


Dziękuje, super, wszystko działa wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 13:19