Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z ułożeniem fragmentów kodu
Forum PHP.pl > Forum > Przedszkole
M@X
Witam.
Mam dosyć początkujący problem. Mianowicie mam w jednym pliku formularz wyszukiwania z bazy, wyświetlanie i edycje danych rekordów. Ale problem w odpowiednim rozłożeniu tego wszystkiego. Mianowicie:
- formularz wyszukiwania wyświetla się cały czas
- wyniki wyszukiwania pojawiają się po wciśnięciu INPUTa
- dalej klikam na jakiś rekord, wyniki wyszukiwania znikają i pojawia się pole do edycji danego rekordu
- dalej zapisuje zmiany w danym rekordzie
- i teraz jak ponownie wyszukuje kolejne dane poprzez formularz, to ten edytowany rekord cały czas jest widoczny.

Moja prośba to w jaki sposób odpowiednio poukładać dane moduły aby po kolejnym wyszukiwaniu, wczesniej edytowany rekord NIE był widoczny.

FORMULARZ DO WYSZUKIWANIA (WIDOCZNY CAŁY CZAS)
  1. <form method="POST">
  2. .
  3. .
  4. .
  5. <input type="submit" name="szukaj" value="Szukaj">
  6. .
  7. .
  8. .
  9. </form>




WYNIKI WYSZUKIWANIA (WIDOCZNE PO WYPEŁNIENIU FORMULARZA)
  1. <?
  2.    if(isset($_POST['szukaj']))
  3.    {
  4.        $query=mysql_query('SELECT * FROM ...');
  5.        ...WYNIKI
  6.    }
  7. ?>





EDYTOWANIE DANEGO REKORDU (TO NIE MA BYĆ WIDOCZNE GDY WYPEŁNIAM FORMULARZ I WYŚWIETLAM JEGO WYNIKI)
  1. <?
  2.    if($_GET['act']=='getedit')
  3.    {
  4.        $update='UPDATE * SET ...';
  5.        header('Location: index.php?id=1&act=edit&id='.$_GET['id'].'');
  6.            
  7.    }
  8.    
  9.    elseif($_GET['act']=='edit')
  10.    {
  11.    ...
  12.    <input type="submit" name="add" value="Zapisz">
  13.    }
  14. ?>


Oczywiście chodzi zapewne o ten fragment: id='.$_GET['id'].'' no ale tu w edycji to musi być, a dalej jak klikam "submit" w formularzu to w ścieżce cały czas jest widoczny, no i dlatego jest wyświetlany ten fragment. W takim razie może jakoś w formularzu da się to wyeliminować ?
Pilsener
Podziel kod instrukcją switch - case, przenosisz się do odpowiedniej części poprzez zmienną w adresie:
  1. <?php
  2. //parametry
  3. $go = $_GET['go'];
  4. switch ($go){
  5. case 'wyniki':  //szukane wyniki
  6. //kod
  7.  
  8. break;
  9. case 'edycja'; //edycja
  10. $id = $_GET['id'];
  11. //kod
  12.  
  13. break;
  14. }//koniec switch/case
  15.  
  16. //wyświetlanie zmiennych
  17. ?>
- w wynikach szukania generujesz np. link index.php?go=edycja&id=1234 - edytuj rekord o id 1234.

Pamiętaj, żeby nie używać echo w środku kodu - naucz się robić wszystko na zmiennych, dopiero na samym końcu skryptu wyświetlasz wynik pracy - tak masz większą kontrolę. Np. obsługa błędów - treść wrzucasz do zmiennej $tresc, błędy do tablicy $error[] - gdy tablica nie jest pusta zamiast treści wyświetlasz błędy. Dobrze jest też oddzielić HTML od silnika php.
M@X
no tak ale tylko edycja przyjmuje w ścieżce informacje np: ?act=edit
ale formularz wyszukiwania nie generuje czegoś takiego....
zebupl
Witam,

Nie możesz użyć flagi, którą będziesz ustawiał w odpowiednim momencie np ($rendererForm = true, false) ?

pozdrawiam
munky
Pilsener
Cytat
ale formularz wyszukiwania nie generuje czegoś takiego....
- a co za problem, żeby po wysłaniu formularza w adresie pojawiała się odpowiednia zmienna? Masz argument action przecież - możesz też wysłać formularz do np. go=wyszukaj, tam "obrobić go" i użyć header, żeby przejść do wyników.
zebupl
Pilsener podałeś takie samo rozwiązanie jak ja biggrin.gif
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.