Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Pętla for, inputy
Szagii
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2016

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


Witam,

Dostałem w szkole zadanie zrobienia systemu do ćwiczenia ortografii, tzn. nauczyciel wkleja tekst, polskie znaki które chce żeby były inputami zapisuje w nawiasach i uczeń dostaje test do wypełnienia. Napisałem pętle for która tworzy inputa, każde wykonanie pętli zwiększa zmienną $i o jeden, tą zmienną wsadziłem do name, wiec pierwszy input powinien mieć nazwę 0, kolejny 1 itd.

Lecz tak nie jest, kiedy wkleję tekst, np. "S(u)szonych owoc(ó)w i korzeni", to wyświetla mi ten tekst trzy razy (a powinien raz) i zmienna $i rośnie z każdym kolejnym zdaniem a nie inputem, czyli S(u)szonych owoc(ó)w i korzeni (w tym zdaniu wszystkie inputy mają wartość name="0"). S(u)szonych owoc(ó)w i korzeni (w tym zdaniu wszystkie inputy mają wartość name="1"). S(u)szonych owoc(ó)w i korzeni (w tym zdaniu wszystkie inputy mają wartość name="2")

Kod:
  1. <?php
  2. $text = getExam($_GET["id"]);
  3. $pattern = "~\(.*?\)~";
  4.  
  5. $test = preg_match_all("~\(.*?\)~", $text, $wyniki);
  6. $count = count($wyniki, COUNT_RECURSIVE);
  7.  
  8. for($i=0; $i<$count; $i++){
  9. $input[$i] = '<input type="text" maxlength="2" width="50px" name="'.$i.'">';
  10.  
  11.  
  12. $new_text = preg_replace($pattern,$input[$i],$text);
  13. echo $new_text;
  14.  
  15. $test = preg_match_all("~\(.*?\)~", $text, $wyniki);
  16. echo count($wyniki, COUNT_RECURSIVE);
  17.  
  18. }
  19.  
  20. echo '<input type="hidden" name="old_text" value="'.$text.'">';
  21. ?>


Ktoś wie co zrobiłem źle? Każda podpowiedź mile widziana biggrin.gif
P.S. Przepraszam że się tak rozpisałem, pewnie dało się krócej, ale chciałem aby każdy zrozumiał o co mi chodzi, z góry za pomoc dziękuję smile.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Tomplus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


CHyba powinieneś dać w linijce 6. $wyniki[0].

Możesz zrobić sobie print_r($wyniki); i powinieneś mieć zrzut tablicy wielowymiarowej.
Go to the top of the page
+Quote Post
Szagii
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 25.11.2016

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


Cytat(Tomplus @ 28.02.2017, 17:55:13 ) *
CHyba powinieneś dać w linijce 6. $wyniki[0].

Możesz zrobić sobie print_r($wyniki); i powinieneś mieć zrzut tablicy wielowymiarowej.


print_r($wyniki); wyświetliło mi:
Array ( [0] => Array ( [0] => (u) [1] => (ó) ) )

Więc w 6 linijce dopisałem $wyniki[0][1], zdania się już nie powtarzają, ale wartość name w każdym inpucie jest nadal taka sama :/
Go to the top of the page
+Quote Post
Tomplus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

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


Skoro masz:
preg_replace($pattern,$input[$i],$text)

to wiadomo że będzie to samo, bo za każdym wywołaniem pętli wszystkie wyniki będą nadpisywać się to jedną wartością która jest w $input[$i]
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 - 07:37