Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] funkcja eregi; przekazywanie danych za pomocą POST
Forum PHP.pl > Forum > Przedszkole
gebp
Witam.
Mam kłopot z prawidłowym oznaczeniem "string pattern".
Czytałem w manualu lecz nie zabardzo moge skumać.

Np.
  1. <?php
  2. if (!eregi('[a-z], $string));
  3. ?>

Wiem że mi sprawdzi czy $string zawiera tylko znaki od a (małe) do z (małe).
Pytanie co powinienam zapisać i JAK by sprawdzić czy $string zawiera także:
-zanki A do Z (litery duże)
- "_" [spacje]
- "-" (myślnik)

Drugie pytanie dot formularz.

  1. <form action=costam.php method=post>
  2. <input type=text name=1 >
  3. <input type=submit value=zapisz>
  4. </form


Jeżeli w pole wpisze "TEST 1 test" to dlaczego w
  1. <?php
  2. echo(" <form>
  3. <input type=text value=".$_POST['1'].">
  4.  </form>");
  5. ?>

otrzymam tylko "TEST" zamiast "TEST 1 test"

Proszę o pomoc.
kossa
  1. <?php
  2. $value=$_POST[1]; //po indeksie nie odwolujemy sie z apostrofami | tak nie: $_POST['1'];
  3.  echo '<input type='text' name='pole' value='$value'>"; //dodalem apostrofy value='cos'
  4. ?>


Łukasz

edit:

w wyrażeniach regularnych małe litery to: [a-z] duże [A-Z] spacja [:space:]

Łukasz
gebp
kossa -> na pweno w tym przypadku masz racje faktycznie w tym momencie to działa. U mnie jest jednak troche inna sytuacja. Wygląda ona tak.
Pierwszy plik gdzie wpisujemy dane;
plik ssmod1.php (tu wypełniamy dane przekazywane do ssmod2.php w celu walidjacji i/lub zapisu w bazie)
  1. <?php
  2. ...
  3. $ile=$_POST['ile'];
  4. echo("</br></br><div align=center>
  5.  <form action=ssmod2.php method=post >
  6. <table>
  7. <tr>
  8. <td> Model </td>
  9. <td> Kod </td>
  10. <td> Kwota dociążenia </td>
  11. </tr>");
  12.  
  13. for($x=0, $y="a0", $z="b0"; $x<$ile; $x++, $y++, $z++)
  14. {echo("<tr>
  15. <td><input size=20 name=".$x."></td>
  16. <td><input size=8 name=".$y."></td>
  17. <td><input size=7 name=".$z."></td>
  18. </tr>");}
  19. echo("<tr>
  20. <td><p align=center>
  21. <input type=hidden name=ile value=".$ile.">
  22. <input type=reset value=WYCZYŚĆ>
  23. <input type=submit value=DALEJ></p></td>
  24. </tr>
  25. </table>
  26. </form>
  27. ?>

Zmiana $ile jest postowana z innego pliku.
i drugi plik (ten właściwy gdzie nie działa)
plik ssmod2.php
  1. <?php
  2. $ile=$_POST['ile'];
  3. for($x=0, $y="a0", $z="b0"; $x<$ile; $x++, $y++, $z++)
  4.  { $mod=$_POST[$x];
  5. $kod=$_POST[$y];
  6. $kwota=$_POST[$z];
  7. ... // tu jeszcze kilka działań
  8.  $sp="SELECT * FROM dociazenia WHERE (`mod` LIKE '$mod') OR (`kod` LIKE '$kod')";
  9.  $spq=mysql_query($sp);
  10.  $je=mysql_fetch_array($spq);
  11. echo("<tr>");
  12.  if( (!eregi('^[0-9 A-Z a-z]+$', $mod)) OR (strlen($mod) == "") OR ($je['mod']==$mod))
  13.  {echo("<td bgcolor=#FF0000><input type=text name=".$x." value=".$mod."></td>");
  14.  $blad=1;}
  15.  else {echo("<td><input readonly type=text name=".$x." value=".$mod."></td>");}
  16.  
  17.  if( (!eregi('^[0-9A-Z-]+$', $kod)) OR (strlen($kod) == "") OR ($je['kod']==$kod) )
  18.  {echo("<td bgcolor=#FF0000><input type=text name=".$y." value=".$kod."></td>");
  19.  $blad=1;}
  20.  else {echo("<td><input readonly type=text name=".$y." value=".$kod."></td>");}
  21.  
  22.  if(!eregi('^[0-9,]+$', $kwota) OR strlen($kwota) == "")
  23.  {echo("<td bgcolor=#FF0000><input type=text name=".$z." value=".$kwota."></td>");
  24.  $blad=1;}
  25.  else {echo("<td><input readonly type=text name=".$z." value=".$kwota."></td>");}
  26.  echo("</tr>");
  27.  
  28. }
  29. if ($blad==1)
  30.  {echo("<tr><td><input type=hidden name=ile value=".$ile.">
  31.  <td><input type=submit value=POPRAW></td>
  32.  </tr>
  33.  </table>
  34.  </form> ");}
  35. else {echo("</table>
  36. </form>
  37. </div>");}
  38. ?>


Przed w/w jest jeszce troche funkcji ale one nie wpływają na poniższy formularz.
No i wtym momencie oczwywiście zmiena $mod === $_POST[$x] ale jest różna od tego co pokazuje w inpucie. Kulej mi jeszcze walidacja, ale to pierwsza część pytania.
kossa
Rozumiem, że plik w którym wypełniany jest formuarz to plik którego kod jest powyżej jako pierwszy.
Sprawdz w źródle wygenerowanej strony (w przeglądarce internetowej) czy pole <input type=hidden name=ile value=".$ile."> ma podaną wartość.

w tym drugim pliku ssmod2.php (bo to chyba ten plik - drugie źródło - prawda?) powinien zwrócić $ile=$_POST['ile']; jeśli pole hidden ile oczywiście nie jest puste

zacznij od tego czy formularz cokolwiek wysyła

Łukasz
gebp
Lukasz. Jak najbarzdiej działa.
Kwestia tylko iż w tym inpucie
  1. <?php
  2. ...
  3. if( (!eregi('^[0-9 A-Z a-z]+$', $mod)) OR (strlen($mod) == "") OR ($je['mod']==$mod))
  4.  {echo("<td bgcolor=#FF0000><input type=text name=".$x." value=".$mod."></td>");
  5.  $blad=1;}
  6.  else {echo("<td><input readonly type=text name=".$x." value=".$mod."></td>");}
  7. ...
  8. ?>

Po wysłaniu do przeglądarki zmienna $mod="TEST 1 test" w inpucie pokazuje tylko "TEST" jak by resztę (" 1 test") wycięło. Nie wiem dlaczego. Oczywiście do bazy zapisuje pełną wartość zmienej czyli "TEST 1 test".
Jakbym ja miał tylko korzystać z tego to pal sześć. Ale z tego bedą korzystać wogóle nie świadomi ludzie (w tym moj szef) i będą mnie zasypywali majlami " że jak rapotowałem to w tabeli pokazało tylko część nazwy i nie dalo się tego porawic ect." Dlatego muszę się dowiedzieć dlaczego i jakoś to naprawić. Sprawdzałem że jeżeli to była bt tabela a nie input to nic by nie wycieło. Ale nie moge tak zrobic ze wzgledu na walidjację.


A przy okazji jak ma w ergi zapisać by sprawdziło czy $sring zawiera a-z, A-Z oraz 0-9 ?
kossa
Cytat
<td bgcolor=#FF0000><input type=text name=".$x." value=".$mod.">


@Gebp, pisałem o apostrofach po value - jak ich nie ma a są spacje to ucina co jest dalej :-( więc value='$zmienna')

co do eregi to wzór który ma być poszukiwany to
  1. <?php
  2. eregi([0-9A-Za-z],$zmienna);
  3. ?>


znaki specjalne poprzedzasz ukośnikiem, myślnik: \- a spacja i nne białe znaki może być \s

więcej na google.pl :-)

Łukasz

p.s.
przechodze w stan offline - dobranoc i powodzenia!
gebp
dzieki kossa i przepraszam za moja lamowatość.

Co do ergi to zostawie sobie na jutro bo teraz cosik mi sie widzie że nie nada.

Jeszcze raz dzieki. No teraz powinno isć już dużo prościej.

PozDroFionka
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.