Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Pętla for, inputy
Forum PHP.pl > Forum > Przedszkole
Szagii
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
Tomplus
CHyba powinieneś dać w linijce 6. $wyniki[0].

Możesz zrobić sobie print_r($wyniki); i powinieneś mieć zrzut tablicy wielowymiarowej.
Szagii
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 :/
Tomplus
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]
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.