Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] tworzenie DODAJ w księdze
Forum PHP.pl > Forum > Przedszkole
TexPac
Witajcie. Mam pytanie bo piszę sobie proste skrypty jednak ciągle mam problemy z takimi adresami index.php?strona=kontakt&costam itd. smile.gif

Pierwszą część najczęściej robie to za pomocą switch np

swtich ($strona){
case 'kontakt':{
include 'kontakt.php';
break;}
}

Taki kod umieszczam w miejscu gdzie wyświetla się treść stronki i powstaje wtedy taki adresik:
index.php?strona=kontakt

Jednak co zrobić aby w księdze umożliwić dodawanie wpisu dopiero po kliknięciu na link prowadzący do formularza? Nie wiem jak zrobić taki adres
index.php?strona=ksiega&dodaj

Oczywiście dodaj byłoby formularzem do dodawania wpisu. Bardzo zalezy mi na tego typu linkach. Oto kod księgi:
  1. <?php
  2. @mysql_connect('localhost', 'root', '') or die ("Nie można połączyć się z bazą danych!");
  3. @mysql_select_db('ksiega') or die ("Nieprawidłowa nazwa bazy danych!");
  4.  
  5. $zapytanie=mysql_query("SELECT * FROM ksiega ORDER BY id DESC");
  6.  
  7. function Zabezpiecz($text)
  8. {
  9. $text = trim(htmlspecialchars(addslashes($text)));
  10. }
  11.  
  12. function Odbezpiecz($text)
  13. {
  14. $text = stripslashes($text);
  15. $text = nl2br($text);
  16. return $text;
  17.  
  18. }
  19. while ($row=mysql_fetch_array($zapytanie))
  20. {
  21. echo '<b>'.Odbezpiecz($row['autor']).'</b><br /><i>Http:// <a href="http://'.Odbezpiecz($row['www']).'/">';
  22. echo Odbezpiecz($row['www']).'</a><br />E-mail: <A HREF="mailto:'.Odbezpiecz($row['email']).'">'.Odbezpiecz($row['email']).'</A>';
  23. echo '<br />GG: <A href="gg:'.Odbezpiecz($row['gg']).'"><img border="0" src="http://www.gadu-gadu.pl/users/status.asp?id='.Odbezpiecz($row['gg']).'&styl=1"></A>';
  24. echo '<br />IP: '.Odbezpiecz($row['ip']).'</i><br /><br />'.Odbezpiecz($row['tresc']).'<br /><br />'.Odbezpiecz($row['data']).'<hr>';
  25.  
  26. }
  27.  
  28. if((empty($_POST['imie'])&&empty($_POST['tresc'])) || ($_POST['autor'] =='' || $_POST['autor'] ==' ' || $_POST['tresc'] == '' || $_POST['tresc'] ==' '))
  29. {
  30. echo '<br /><br /><form action="" method="post">
  31. <font color=red>*</font>Imię: <br /><input type="text" name="autor" style="width: 200px;" /><br />
  32. E-mail: <br /><input type="text" name="email" style="width: 200px;" /><br />
  33. Strona WWW: <br /><input type="text" name="www" style="width: 200px;" /><br />
  34. GG: <br /><input type="text" name="gg" style="width: 200px;" /><br />
  35. <font color=red>*</font>Tresć wpisu: <br /><textarea name="tresc" style="width: 200px; height: 100px;">
  36. </textarea><br />
  37. <input type="submit" value="Wyslij" style="border: solid 1px #000; background-color: #303030; color:#FFFFFF; font: 8pt Tahoma, Geneva, Arial, Helvetica, sans-serif; border: none; height:20px; width:50px;"/>
  38. </form><br />
  39. <br /><br />
  40. <font color=red>*</font> - wymagane pole';
  41. }
  42.  
  43. else
  44. {  
  45.  /* Tutaj zabezpieczymy dane */
  46.  
  47. $query = 'INSERT INTO ksiega (autor, tresc, email, www, gg) ';
  48. $query .= "VALUES ('".Zabezpiecz($_POST['autor'])."', '".Zabezpiecz($_POST['tresc'])."', '".Zabezpiecz($_POST['email'])."', '".Zabezpiecz($_POST['www'])."', '".Zabezpiecz($_POST['gg'])."'); ";
  49. mysql_query($query);
  50. echo "<B>Wpis został wysłany</B><br />";
  51.  
  52. }
  53.  
  54. ?>
siemakuba
Najważniejsze - zapamiętaj i stosuj się, bo każdy przy każdej okazji będzie ci mówił to samo.
Nie używaj zmiennych globalnych! Z tego co widać u ciebie, używasz ich. Jeżeli przekazujesz zmienne do skryptu przez adres strony, masz je dostępne w tablicy $_GET, i z tejże właśnie korzystaj. Więc po pierwsze, zamiast
  1. <?php
  2. swtich ($strona)
  3. ?>
niechże będzie swtich
  1. <?php
  2. ($_GET['strona'])
  3. ?>
.

Po drugie, skoro masz strukturę zbudowaną w taki właśnie sposób, potrzebujesz dodać do niej kolejny poziom. Popatrz, na podstawie zmiennej index.php?strona=kontakt decydujesz, że należy wyświetlić stronę dot. kontaktu. I teraz, w obrębie tej strony musisz podjąć kolejną decyzję czy pokazujesz treść czy formularz (w uproszczeniu). Skoro odpowiada za to kolejna zmienna, załóżmy taki URL: index.php?strona=kontakt&akcja=dodaj powinieneś skonstruować coś takiego:
  1. <?php
  2. swtich ($_GET['strona'])
  3. {
  4. case 'kontakt':
  5.  
  6. if (isset($_GET['akcja']) && $_GET['akcja'] == 'dodaj')
  7. {
  8. include 'kontakt_dodaj.php';
  9. }
  10. else 
  11. {
  12. include 'kontakt.php';
  13. }
  14.  
  15. break;
  16. }
  17. ?>


Teraz, jeżeli masz URL - index.php?strona=kontakt - nie ma zmiennej $_GET['akcja'] lub zmienna ta nie równa się "dodaj", pierwszy warunek nie zostaje spełniony, includuje się kontakt.php. Jeżeli natomiast masz taką zmienną i ma ona wartość "dodaj", includuje się kontakt_dodaj.php.

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