Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Wysyłanie formularza - problem pod IE6 i IE7
Forum PHP.pl > Forum > Przedszkole
Czadus
Witam, mam spory problem z wysyłaniem formularza pod IE6 oraz IE7. Całość działa pod wszystkimi przeglądarkami poza tymi dwoma. Co może wpłynąć na takie zachowanie?? Prawdę mówiąc, ja niebardzo mam już pomysły.
nospor
a co ma IE do php? Nic. Moze jak opiszesz problem bardziej dokladnie, co konkretnie nie dziala, podasz kod itp. to pogadamy inaczej. Na chwile obecną przenosze na przedszkole
korro
Zrób print_r($_POST).
Jeśli masz submit button z obrazkiem i polegasz na jego nazwie, może się okazać, że IE dodaje _x do nazwy.
Czadus
Cytat(nospor @ 6.11.2009, 10:31:41 ) *
a co ma IE do php? Nic. Moze jak opiszesz problem bardziej dokladnie, co konkretnie nie dziala, podasz kod itp. to pogadamy inaczej. Na chwile obecną przenosze na przedszkole


Sorry.....

Oto kod formularza:
Kod
<form action="/ogloszenia/1" method="post">
      <table class="twojeOglo">
          <tbody>
              <tr><td colspan="8"/></tr>
              <tr><td class="marginBottom" colspan="8">Strony: <b><a href="/ogloszenia/1">1</a></b></td></tr>
              <tr class="thh">
                  <td class="thh">lp.</td>
                  <td class="thh">Typ</td>
                  <td class="thh">Kategoria / Podkategoria</td>
                  <td class="thh">Nr ogłosz.</td>
                  <td class="thh">Odwiedziny</td>
                  <td class="thh">Marka i model</td>
                  <td class="thh">Cena (€)</td>
                  <td class="thh">Opcje</td>
              </tr>
              <tr>
                  <td class="aktywne">1</td>
                  <td>Sprzedaż</td>
                  <td>moto / Osobowe</td>
                  <td>011021</td>
                  <td>17</td>
                  <td><div class="link"><a title="Audi / 90" href="/podglad/011021/">Audi / 90</a></div></td>
                  <td>347427.00</td>
                  <td>
                      <button title="Usuń" class="usun" value="011021u" name="usunOgloPytanie" type="submit"/>
                      <button title="Edytuj" class="edyt" value="011021" name="edytujOgloszenie" type="submit"/>
                      <button title="Dezaktywuj" class="deakt" value="011021d" name="deaktywujOgloszenie" type="submit"/>
                  </td>
              </tr>
              <tr>
                  <td class="marginTop" colspan="8">Strony: <b><a href="/ogloszenia/1">1</a></b></td>
              </tr>
          </tbody>
      </table>
      <div class="legendaHead fontBold">
          <table>
              <tbody>
                  <tr><td/><td class="tdDodajNowe"><a href="/zamow/">Zamów abonament</a> </td></tr>
                  <tr><td>Legenda:</td><td class="tdDodajNowe"><a href="/dodaj/">Dodaj ogłoszenie</a> </td></tr>
              </tbody>
          </table>
      </div>
      <table class="ogloTable"><tbody><tr><td class="ogloAktywne aktywne"/><td> Ogłoszenia aktywne</td></tr></tbody></table>
      <table class="ogloTable"><tbody><tr><td class="ogloAktywne nieakt"/><td> Ogłoszenia nieaktywne</td></tr></tbody></table>
  </form>


Próbując odebrać zmienną usunOgloPytanie nie otrzymuję nic, tak, jakby była niesutawiona. print_r($_POST) daje następujący efekt: Array ( [usunOgloPytanie] => )
nospor
<button>value</button>

Ale lepiej wysyłaj tę wartość w ukrytym polu
  1. <input type="hidden" value="twojawartosc" name="jakiesname" />
thek
Najwygodniej by było nieco zmienić strukturę wysyłki forma. Zrób, jak sugeruje nospor, przesyłanie wartości elementu z jakim pracujesz przez input hidden a odpowiednie działania wykonuj na podstawie rozpoznania wciśniętego submita.
Masz więc w kodzie w takim wypadku w formie:
  1. <input type="hidden" name="ogloszenie" value="<?php echo ( isset($_GET['id']) ) ? $_GET['id'] : '' ?>" />
  2. <input value="Usuń" class="usun" name="usun" type="submit" />
  3. <input value="Edytuj" class="edyt" name="edytuj" type="submit" />
  4. <input value="Dezaktywuj" class="deakt" name="deaktywuj" type="submit" />
A w kodzie na początku pliku ujętego w action:
  1. if( isset( $_POST['ogloszenie'] ) && !empty( $_POST['ogloszenie'] ) ) {
  2. if( array_key_exists('usun', $_POST) ) {
  3. //usuwanie
  4. } elseif( array_key_exists('edytuj', $_POST) ) {
  5. //edycja
  6. } elseif( array_key_exists('deaktywuj', $_POST) ) {
  7. //deaktywacja
  8. } else {
  9. //jakby jakimś cudem wysłał formularz biggrin.gif
  10. }
  11. } else {
  12. //Tutaj robisz coś jeśli brak numeru ogłoszenia
  13. }
Oczywiście to tylko szkielet mocno ograniczony o walidację i tylko szkielet. Sma go musisz dopasować do swoich potrzeb.

EDIT: I na kiego grzyba tyle klas do guzików? blink.gif Inna sprawa, że buttony mają czasem problemy by być poprawnie interpretowane przez choćby IE.
Czadus
No dobrze, macie rację, już wiem, dlaczego te zmienne nie były wysyłane, tylko jak, Waszym sposobem stworzyć listę np. 30 wpisów, z których każdy musi mieć możliwość usunięcie, edycji.... Skąd wiedzieć, który z nich został wybrany, jeżeli przycisk submit ma wszędzie taką samą nazwę, a wartość przechowywana jest w polu typu input.
nospor
No ale po co tam wogole walisz buttony? Rownie dobrze mogą byc linki. A linkach bez problemu mozesz przekazac ID czy inną wartość.
Jesli chodzi ci o wyglad to z linków też można zrobić takie wyglądem przypominające buttony
Czadus
Skrypt nad którym pracuje już był w dużej większości przygotowany, ja w zasadzie staram się go dokończyć. Błąd ten napotkałem niedawno, chyba będę musiał przerobić go na linki. Z tym, że to niestety jest kolejna dodatkowa praca przy nim. Za pomoc lecą THX
thek
Ja podałem Ci po przejściu na wybrany artykuł/news/cokolwiek. Jeśli chcesz zrobić "listę administracyjną" to albo każdy z wyników obejmujesz osobnym formem i zmieniasz tylko wartości dla pola ukrytego jak w przykładzie wyżej, gdyż po nim zostanie rozpoznane dla którego rekordu się akcja wykona, albo robisz to co proponuje nospor. Zresztą to właśnie jego rozwiązanie z przesyłaniem parametrów poprzez GET jest najczęściej stosowanym w takich wypadkach. Generujesz wtedy linki o postaci
plik.php?id=id_z_bazy&akcja=wybrana_akcja
i w pliku plik.php potem odczytujesz co masz z czym zrobić. Oczywiście walidacja, sprawdzanie uprawnień muszą być w pierwszej kolejności wykonywane.
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.