Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Jak sprawdzić czy w zmiennej występuje, między innymi dane wyrażenie?
Forum PHP.pl > Forum > PHP
akurczyk
Stworzyłem formularz:
CODE
<script type="text/javascript">

</script>
<form method="get" onsubmit="return wyslij(this)">
<input type="hidden" name="kategorie" value="" >
<input type="text" name="pytanie" value="<?php echo $_GET['kategorie']; ?>"><br>
<input type="checkbox" name="kategoria[]" value="[PHP]"> [PHP]<br>
<input type="checkbox" name="kategoria[]" value="[JavaScript]"> [JavaScript]<br>
<input type="checkbox" name="kategoria[]" value="[MySQL]"> [MySQL]<br>
<input type="checkbox" name="kategoria[]" value="[SQLite]"> [SQLite]<br>
<input type="checkbox" name="kategoria[]" value="[XHTML/CSS]"> [XHTML/CSS]<br>
<input type="submit" value="Szukaj">
</form>

Jak można zauważyć po kliknięciu Szukaj formularz przeładuje stronę wi wyświetli się ponownie a pole pytanie będzie zawierało tekst taki jak przed wysłaniem. Ale jak zrobić aby checkboxy były pozaznaczane tak samo ja przed wysłaniem (funkcja js sumuje ich wartości do jednej zmiennej GET)? Jak sprawdzić czy w zmiennej występuje między innymi dane wyrażenie (np. [PHP]).
Proszę o pomoc
jarmiar
funkcja eregi()
  1. <?
  2. $zmienna = 'ala ma kota';
  3. $szukane = 'kota';
  4. $szukaj = eregi($szukane, $zmienna);
  5. if($szukaj)
  6. {
  7. echo 'znaleziono';
  8. }
  9. else
  10. {
  11. echo 'nie znaleziono';
  12. }
  13. ?>
akurczyk
Zrobiłem tak ale w tedy jak zaznacze jedno pole po wysłaniu zaznaczają się wszystkie.
CODE
echo "<form method=\"get\" onsubmit=\"return wyslij(this)\">";
echo "<input type=\"hidden\" name=\"kategorie\" value=\"\" >";
echo "<input type=\"text\" name=\"pytanie\" value=\"".addslashes($_GET['pytanie'])."\"><br>";
if(eregi("[PHP]", $_GET['kategorie'])) {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[PHP]\" checked=\"checked\"> [PHP]<br>";
} else {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[PHP]\"> [PHP]<br>";
}
if(eregi("[Perl]", $_GET['kategorie'])) {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[Perl]\" checked=\"checked\"> [Perl]<br>";
} else {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[Perl]\"> [Perl]<br>";
}
if(eregi("[MySQL]", $_GET['kategorie'])) {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[MySQL]\" checked=\"checked\"> [MySQL]<br>";
} else {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[MySQL]\"> [MySQL]<br>";
}
if(eregi("[PostgreSQL]", $_GET['kategorie'])) {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[PostgreSQL]\" checked=\"checked\"> [PostgreSQL]<br>";
} else {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[PostgreSQL]\"> [PostgreSQL]<br>";
}
if(eregi("[SQLite]", $_GET['kategorie'])) {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[SQLite]\" checked=\"checked\"> [SQLite]<br>";
} else {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[SQLite]\"> [SQLite]<br>";
}
if(eregi("[JavaScript]", $_GET['kategorie'])) {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[JavaScript]\" checked=\"checked\"> [JavaScript]<br>";
} else {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[JavaScript]\"> [JavaScript]<br>";
}
if(eregi("[XHTML/CSS]", $_GET['kategorie'])) {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[XHTML/CSS]\" checked=\"checked\"> [XHTML/CSS]<br>";
} else {
echo "<input type=\"checkbox\" name=\"kategoria[]\" value=\"[XHTML/CSS]\"> [XHTML/CSS]<br>";
}
echo "<input type=\"submit\" value=\"Szukaj\">";
echo "</form>";

Pomocy!!!
neverever
Zamiast kategoria[] daj:
kategoria[0]
kategoria[1]
...itd.

a poza tym nie wiem czy o to chodzi, ale eregi i te ify mozna by zastąpić switch, no i 2x masz name="kategorie, a reguła eregi też źle.

Zobacz:
  1. <?php
  2. echo '<form action="" method="get">
  3. <input type="text" name="pytanie"><br>
  4. <input type="submit" value="Szukaj">
  5. </form>';
  6.  
  7. echo '<form action="" method="get">';
  8. if(eregi('[PHP]', $_GET['pytanie'])) {
  9. echo '<input type="checkbox" name="kategoria[0]" checked="checked"> [PHP]<br>';
  10. } else {
  11. echo '<input type="checkbox" name="kategoria[0]"> [PHP]<br>';
  12. }
  13. if(eregi('[Perl]', $_GET['pytanie'])) {
  14. echo '<input type="checkbox" name="kategoria[1]" checked="checked"> [Perl]<br>';
  15. } else {
  16. echo '<input type="checkbox" name="kategoria[1]"> [Perl]<br>';
  17. }
  18. if(eregi('[MySQL]', $_GET['pytanie'])) {
  19. echo '<input type="checkbox" name="kategoria[2]" checked="checked"> [MySQL]<br>';
  20. } else {
  21. echo '<input type="checkbox" name="kategoria[2]"> [MySQL]<br>';
  22. }
  23. if(eregi('[PostgreSQL]', $_GET['pytanie'])) {
  24. echo '<input type="checkbox" name="kategoria[3]" checked="checked"> [PostgreSQL]<br>';
  25. } else {
  26. echo '<input type="checkbox" name="kategoria[3]"> [PostgreSQL]<br>';
  27. }
  28. if(eregi('[SQLite]', $_GET['pytanie'])) {
  29. echo '<input type="checkbox" name="kategoria[4]" checked="checked"> [SQLite]<br>';
  30. } else {
  31. echo '<input type="checkbox" name="kategoria[4]"> [SQLite]<br>';
  32. }
  33. if(eregi('[JavaScript]', $_GET['pytanie'])) {
  34. echo '<input type="checkbox" name="kategoria[5]" checked="checked"> [JavaScript]<br>';
  35. } else {
  36. echo '<input type="checkbox" name="kategoria[5]"> [JavaScript]<br>';
  37. }
  38. if(eregi('[XHTML/CSS]', $_GET['pytanie'])) {
  39. echo '<input type="checkbox" name="kategoria[6]" checked="checked"> [XHTML/CSS]<br>';
  40. } else {
  41. echo '<input type="checkbox" name="kategoria[6]"> [XHTML/CSS]<br>';
  42. }
  43. echo '</form>';
  44. ?>
akurczyk
zaraz sprawdzę ale nie mogę zmienić kategoria[] na kategoria[0] albo 1 bo nad skryptem jest funkcja js ktura sumije wszystkie kategoia[] do kategorie. a ja chcę sprawdzić czy w kategoria znajduj się między innymi dany ciąg znaków.

działa
neverever
Cytat(akurczyk @ 4.08.2008, 12:47:34 ) *
zaraz sprawdzę ale nie mogę zmienić kategoria[] na kategoria[0] albo 1 bo nad skryptem jest funkcja js ktura sumije wszystkie kategoia[] do kategorie. a ja chcę sprawdzić czy w kategoria znajduj się między innymi dany ciąg znaków.

Nie rozumiesz...
Jak to ma działać jak:
1. masz dwa różne elementy name="kategoria" jeden to input hidden, drugi to checkboxy których wynik tu i tak otrzymujesz w postaci tablicy.
2. we wzorze eregi nawiasy kwadratowe muszą być poprzedzone znakiem \
3. jeszcze zupełnie nie wiadomo po co tu js. mieszasz

Jeżeli już tak chcesz, to zobacz:
  1. <?php
  2. if($_GET['submit']){
  3. $kategoria=$_GET['kategoria'];
  4.  
  5. foreach($kategoria as $k=>$v) $pytanie.=$v;
  6. echo 'Wybrano: '.$pytanie.'<hr>';
  7. }
  8. echo '<form action="" method="get">';
  9. if(eregi('[PHP]', $pytanie)) {
  10. echo '<input type="checkbox" name="kategoria[]" value="[PHP]" checked="checked"> [PHP]<br>';
  11. } else {
  12. echo '<input type="checkbox" name="kategoria[]" value="[PHP]"> [PHP]<br>';
  13. }
  14. if(eregi('[Perl]', $pytanie)) {
  15. echo '<input type="checkbox" name="kategoria[]" value="[Perl]" checked="checked"> [Perl]<br>';
  16. } else {
  17. echo '<input type="checkbox" name="kategoria[]" value="[Perl]"> [Perl]<br>';
  18. }
  19. if(eregi('[MySQL]', $pytanie)) {
  20. echo '<input type="checkbox" name="kategoria[]" value="[MySQL]" checked="checked"> [MySQL]<br>';
  21. } else {
  22. echo '<input type="checkbox" name="kategoria[]" value="[MySQL]"> [MySQL]<br>';
  23. }
  24. if(eregi('[PostgreSQL]', $pytanie)) {
  25. echo '<input type="checkbox" name="kategoria[]" value="[PostgreSQL]" checked="checked"> [PostgreSQL]<br>';
  26. } else {
  27. echo '<input type="checkbox" name="kategoria[]" value="[PostgreSQL]"> [PostgreSQL]<br>';
  28. }
  29. if(eregi('[SQLite]', $pytanie)) {
  30. echo '<input type="checkbox" name="kategoria[]" value="[SQLite]" checked="checked"> [SQLite]<br>';
  31. } else {
  32. echo '<input type="checkbox" name="kategoria[]" value="[SQLite]"> [SQLite]<br>';
  33. }
  34. if(eregi('[JavaScript]', $pytanie)) {
  35. echo '<input type="checkbox" name="kategoria[]" value="[JavaScript]" checked="checked"> [JavaScript]<br>';
  36. } else {
  37. echo '<input type="checkbox" name="kategoria[]" value="[JavaScript]"> [JavaScript]<br>';
  38. }
  39. if(eregi('[XHTML/CSS]', $pytanie)) {
  40. echo '<input type="checkbox" name="kategoria[]" value="[XHTML/CSS]" checked="checked"> [XHTML/CSS]<br>';
  41. } else {
  42. echo '<input type="checkbox" name="kategoria[]" value="[XHTML/CSS]"> [XHTML/CSS]<br>';
  43. }
  44. echo '<input type="submit" name="submit" value="Szukaj">
  45. </form>';
  46. ?>


chociaż bardziej bym zalecał:
  1. <?php
  2.  
  3. if($_GET['submit']){
  4. $kategoria=$_GET['kategoria'];
  5. foreach($kategoria as $k=>$v) $pytanie.="[$k]";
  6. echo 'Wybrano: '.$pytanie.'<hr>';
  7. }
  8.  
  9. echo '<form action="" method="get">';
  10. if(eregi('[PHP]', $pytanie)) {
  11. echo '<input type="checkbox" name="kategoria[PHP]" checked="checked"> [PHP]<br>';
  12. } else {
  13. echo '<input type="checkbox" name="kategoria[PHP]"> [PHP]<br>';
  14. }
  15. if(eregi('[Perl]', $pytanie)) {
  16. echo '<input type="checkbox" name="kategoria[Perl]" checked="checked"> [Perl]<br>';
  17. } else {
  18. echo '<input type="checkbox" name="kategoria[Perl]"> [Perl]<br>';
  19. }
  20. if(eregi('[MySQL]', $pytanie)) {
  21. echo '<input type="checkbox" name="kategoria[MySQL]" checked="checked"> [MySQL]<br>';
  22. } else {
  23. echo '<input type="checkbox" name="kategoria[MySQL]"> [MySQL]<br>';
  24. }
  25. if(eregi('[PostgreSQL]', $pytanie)) {
  26. echo '<input type="checkbox" name="kategoria[PostgreSQL]" checked="checked"> [PostgreSQL]<br>';
  27. } else {
  28. echo '<input type="checkbox" name="kategoria[PostgreSQL]"> [PostgreSQL]<br>';
  29. }
  30. if(eregi('[SQLite]', $pytanie)) {
  31. echo '<input type="checkbox" name="kategoria[SQLite]" checked="checked"> [SQLite]<br>';
  32. } else {
  33. echo '<input type="checkbox" name="kategoria[SQLite]"> [SQLite]<br>';
  34. }
  35. if(eregi('[JavaScript]', $pytanie)) {
  36. echo '<input type="checkbox" name="kategoria[JavaScript]" checked="checked"> [JavaScript]<br>';
  37. } else {
  38. echo '<input type="checkbox" name="kategoria[JavaScript]"> [JavaScript]<br>';
  39. }
  40. if(eregi('[XHTML/CSS]', $pytanie)) {
  41. echo '<input type="checkbox" name="kategoria[XHTML/CSS]" checked="checked"> [XHTML/CSS]<br>';
  42. } else {
  43. echo '<input type="checkbox" name="kategoria[XHTML/CSS]"> [XHTML/CSS]<br>';
  44. }
  45. echo '<input type="submit" name="submit" value="Szukaj">
  46. </form>';
  47. ?>


a nawet tak:
  1. <?php
  2.  
  3. $tab=array('PHP','Perl','MySQL','PostgreSQL','SQLite','JavaScript','XHTML/CSS');
  4.  
  5. if($_GET['submit']){
  6. $kategoria=$_GET['kategoria'];
  7. foreach($kategoria as $k=>$v) { $pytanie.="[$k]"; }
  8. echo 'Wybrano: '.$pytanie.'<hr>'; //tą linie można usunąć
  9. }
  10.  
  11. echo '<form action="" method="get">';
  12. foreach($tab as $k=>$v) {
  13. if(eregi("[$v]", $pytanie)) { echo '<input type="checkbox" name="kategoria['.$v.']" checked="checked"> ['.$v.']<br>'; }
  14. else { echo '<input type="checkbox" name="kategoria['.$v.']"> ['.$v.']<br>'; }
  15. }
  16. echo '<input type="submit" name="submit" value="Szukaj"></form>';
  17. ?>


No i jeszcze jedno, dlaczego by tego nie wysłać POSTem?
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.