Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Pobieranie tytułu dla każdej podstrony
Forum PHP.pl > Forum > Przedszkole
laik-php
Mam problem. Nie działa mi mój kodzik:

Kod
<?php
........

  $connect = mysql_connect($mysql_host, $mysql_login, $mysql_password);
   if (!$connect) {
    die("Nie połączono");
}

  $mysql_db = mysql_select_db($mysql_base, $connect);
   if (!$mysql_db) {
    die("Nie połączono");
}


$id   = $_REQUEST["id"];
$page = isset($_REQUEST["page"])?($_REQUEST["page"]):"1";

function title() {
if($page==$id)
  $wynik = mysql_query("SELECT * FROM pages WHERE id='$id'");
   if ($wynik)
    $dane = mysql_fetch_array($wynik);
    $id    = $dane['id'];
    $title = $dane['title'];
    echo "$title";
}
?>

+
Kod
  <link rel="Stylesheet" type="text/css" href="/css/style.css" />
  <link rel="Shortcut icon" href="/img/favicon.ico" type="image/x-icon" />
  <title><?php if ($page==$id) { title(); } ?></title>


Będę chciał tak jeszcze zrobić z content, keywords, description ... ale to później jak uda się z tytułem coś wymyślić.
krzysztof_kf
Wiesz że podprogram

  1.  


trzeba odwoływać się za pomocą kolejny numerów pól rekordów

a

  1.  
  2.  


można za pomocą nazw pól .
laik-php
zmieniłem to ale i tak nic nie daje ....
krzysztof_kf
Co ci wyświetla ?
laik-php
właśnie nic, dalej nie widzę tytułu strony mimo ze w bazie w pierwszym rekordzie jest: przykładowy tytuł

chyba ze jest juz w necie gotowy skrypt, albo ktos ma taki kod winksmiley.jpg winksmiley.jpg

pomoże ktoś winksmiley.jpg questionmark.gif
H4eX
Sprawdź w ogóle na jakiejś podstronie czy ta funkcja Ci działa, po prostu ją wywołaj, jeżeli nie to sprawdź po kolei co działa i tak się dowiesz co nie śmiga smile.gif

  1. function title() {
  2. if($page==$id)
  3. $wynik = mysql_query("SELECT * FROM pages WHERE id='$id'");
  4. if ($wynik)
  5. $dane = mysql_fetch_array($wynik);
  6. $id = $dane['id'];
  7. $title = $dane['title'];
  8. echo "$title";
  9. }
laik-php
Zrobiłem czystą podstronę, łączenie z bazą .. dopisałem kod - i nic ! mimo ze połączenie jest. Zastanawiam się czy pierwszy if jest dobrze skonstruowany ...

Kod
<?php

include("admin/functions.php");

connect();

$page = isset($_REQUEST["page"])?($_REQUEST["page"]):"1";
$id = htmlspecialchars(stripslashes(trim($_GET["id"])), ENT_QUOTES);

function title() {
if($page==$id) {
  $wynik = mysql_query("SELECT * FROM pages WHERE id='$id'");
   if ($wynik)
    $dane = mysql_fetch_assoc($wynik);
    $id    = $dane['id'];
    $title = $dane['title'];
    echo "<strong>$title</strong>";
} else echo "Błąd w zapytaniu";
}

title();
?>
muk4
  1. <?php
  2.  
  3. include("admin/functions.php");
  4.  
  5. connect();
  6.  
  7. $page = isset($_REQUEST["page"])?($_REQUEST["page"]):"1";
  8. $id = htmlspecialchars(stripslashes(trim($_GET["id"])), ENT_QUOTES);
  9. //DEBUG START
  10. echo "Zmienna page: $page <br />";
  11. echo "Zmienna id: $id <br />";
  12. //DEBUG END
  13.  
  14. function title() {
  15. //DEBUG START
  16. echo "Zmienna page w funkcji: $page <br />";
  17. echo "Zmienna id w funkcji: $id <br />";
  18. //DEBUG END
  19.  
  20. if($page==$id) {
  21. $wynik = mysql_query("SELECT * FROM pages WHERE id='$id'");
  22. if ($wynik)
  23. $dane = mysql_fetch_assoc($wynik);
  24. $id = $dane['id'];
  25. $title = $dane['title'];
  26. echo "<strong>$title</strong>";
  27. } else echo "Błąd w zapytaniu";
  28. }
  29.  
  30. title();
  31. ?>

Wrzuć ten kod i zobacz co wyświetla.

Na przyszłość:
Jeśli piszesz jakąś funkcję to raczej nie korzystaj w niej z zmiennych globalnych tylko dodaj do niej parametry. Dodatkowo zamiast wyświetlać coś (przez echo) niech zwraca wartość Przykład:
  1. <?php
  2. //ŹLE
  3. function title(){
  4. echo $page;
  5. }
  6. //tylko
  7. function title($page){ //przekazujesz do funkcji zmienną
  8. return $page; //tutaj funkcja zwraca tę zmienną
  9. }
  10. $wynik = title($page); //funkcja coś tam robi i zwraca coś (return) do zmiennej - w tym przypadku do $wynik
  11. echo $wynik; //wyświetla wynik funkcji
  12. ?>

Polecam przyjemną lekturę: http://pl.wikibooks.org/wiki/PHP/Funkcje
laik-php
Np. http://mysite.pl/zxcv.php?page=5

Zmienna page: 5
Zmienna id:
Zmienna page w funkcji:
Zmienna id w funkcji:

H4eX
Hm, zrób tak:

  1. function title() {
  2. global $id, $page;
  3.  
  4. //DEBUG START
  5. echo "Zmienna page w funkcji: $page <br />";
  6. echo "Zmienna id w funkcji: $id <br />";
  7. //DEBUG END
  8.  
  9. if($page==$id) {
  10. $wynik = mysql_query("SELECT * FROM pages WHERE id='$id'");
  11. if ($wynik)
  12. $dane = mysql_fetch_assoc($wynik);
  13. $id = $dane['id'];
  14. $title = $dane['title'];
  15. echo "<strong>$title</strong>";
  16. } else echo "Błąd w zapytaniu";
  17. }
  18.  


Nie masz zmiennej ID, bo w adresie nie ma id=
muk4
Zmiennej id nie wyświetla bo nie jest ustalona.
Zmień swoją funkcję, żeby można do niej przekierować te 2 zmienne i żeby zwracała tylko tytuł.
Poczytaj jakiś poradnik PHP na temat funkcji np. ten który ci podesłałem wcześniej.
laik-php
Zmienna page: 5
Zmienna id:
Zmienna page w funkcji: 5
Zmienna id w funkcji:
Błąd w zapytaniu
H4eX
zobacz poprzedni mój post

edit/
jak zrobisz:
http://mysite.pl/zxcv.php?page=5&id=10

to będą wszystkie zmienne
laik-php
Jak mówiłem chcę zrobić coś takiego, adres: http://stronawww.pl/index.php?page=1
i według tego id pobierze mi tytul, nazwe, slowa kluczowe, tresc, i opis.
I obrazek do pomocy:

H4eX
To dlaczego używasz GET? $id musisz pobrać z bazy.
laik-php
EDIT.

No jest:
Zmienna page: 5
Zmienna id: 10
Zmienna page w funkcji: 5
Zmienna id w funkcji: 10
Błąd w zapytaniu

Ale ja chce tylko page smile.gif

no wiec jak z ta + baza?
H4eX
Umiesz pobierać dane z bazy?!
laik-php
No chyba tak. Przez chociażby SELECT. Ale to chyba jest: $id = $dane['id'];
H4eX
No, ale żeby ten warunek sprawdzić
  1. if($page==$id)

lub te polecenie wykonać
  1. $wynik = mysql_query("SELECT * FROM pages WHERE id='$id'");

musisz napisać zapytanie, tak? Bo skąd ma wziąć zmienną $id?
laik-php
No raczej nie sad.gif "Uczę się" PHP i jakoś mi trudno przychodzi...
muk4
http://www.egrafik.pl/porady/phpmysql-oper...iem-bazy-mysql/
Poczytaj to.

- $page pobierasz przez $_GET
- potem robisz takie zapytanie
  1. $query = "SELECT * FROM `pages` WHERE `id`='$page'";
H4eX
Powiedz mi do czego służy ten warunek:
  1. if($page==$id)
laik-php
Cytat(H4eX @ 4.07.2010, 19:53:18 ) *
Powiedz mi do czego służy ten warunek:
  1. if($page==$id)


$page to zmienna (nie wiem jak to nazwać)
$id to numer rekordu, według którego ma być pobierana treść
H4eX
Ale po co jest ten warunek?? Daj jeszcze raz cały kod jaki masz teraz.
laik-php
Kod
<?php

include("admin/functions.php");

connect();

$page = isset($_GET["page"])?($_GET["page"]):"1";
$id = htmlspecialchars(stripslashes(trim($_GET["id"])), ENT_QUOTES);
//DEBUG START
echo "Zmienna page: $page <br />";
echo "Zmienna id: $id <br />";
//DEBUG END

function title() {
global $id;
global $page;

//DEBUG START
echo "Zmienna page w funkcji: $page <br />";
echo "Zmienna id w funkcji: $id <br />";
//DEBUG END

if($page==$id) {
  $wynik = mysql_query("SELECT * FROM pages WHERE id='$page'");
   if ($wynik)
    $dane = mysql_fetch_assoc($wynik);
    $id    = $dane['id'];
    $title = $dane['title'];
    echo "<strong>$title</strong>";
} else echo "Błąd w zapytaniu";
}


title();

?>
H4eX
Masz.

  1. <?php
  2.  
  3. include("admin/functions.php");
  4.  
  5. connect();
  6.  
  7. $page = isset($_GET["page"])?($_GET["page"]):"1";
  8.  
  9. function title() {
  10. global $page;
  11.  
  12. $wynik = mysql_query("SELECT * FROM pages WHERE id='$page'");
  13. if ($wynik) {
  14. $dane = mysql_fetch_assoc($wynik);
  15. $id = $dane['id'];
  16. $title = $dane['title'];
  17. echo "<strong>$title</strong>";
  18. }else{
  19. else echo "Błąd w zapytaniu";
  20. }
  21. }
  22.  
  23.  
  24. title();
  25.  
  26. ?>



Edycja:
Tutaj masz zabezpieczony i poprawny kod:
  1. <?php
  2.  
  3. include("admin/functions.php");
  4.  
  5. connect();
  6.  
  7. function title() {
  8.  
  9. $page = isset($_GET["page"])?($_GET["page"]):"1";
  10.  
  11. $wynik = mysql_query("SELECT * FROM pages WHERE id='".(int)$page."'");
  12.  
  13. if ($wynik)
  14. {
  15. $dane = mysql_fetch_assoc($wynik);
  16.  
  17. $title = htmlspecialchars($dane['title']);
  18.  
  19. echo "<strong>$title</strong>";
  20. }else{
  21. echo "Błąd w zapytaniu";
  22. }
  23. }
  24.  
  25. title();
  26.  
  27. ?>
laik-php
Dzięki Ci wielkie. Działa smile.gif Teraz mogę dorobić resztę smile.gif Można wiedzieć z jakich kursów się uczyłeś ? Może jakieś książki ?
H4eX
PHP5 i MySQL Biblia
laik-php
Już porobiłem i strona działa, tak jak ma działać. Jeszcze raz dzięki. A z nowszych co byś polecił ?
H4eX
Nie znam innych, ta książka jest bardzo dobra. Nie wydaję się takich co roku i język programowania też się nie zmienia przecież winksmiley.jpg.
laik-php
Chyba się skusze smile.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.