Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL] includowanie treśći z bazy danych z wykorzystaniem kolumny innej niz id
Forum PHP.pl > Forum > Przedszkole
Sekwer
Chciałbym includować dane z bazy, wg kolumny kat, a nie jak dotychczas id.
Mam tabelę:
-----------------------------
id | kat | tresc |
1 | glowna | strona główna |
2 | kontakt| kontakt ze mną|
-----------------------------

i kod php:
CODE
if (isset($_GET['kat']))
@$id = $_GET['kat'];

$wynik = mysql_query('SELECT tresc FROM tabela WHERE id='.$id.'')
or die('Błąd zapytania');

$strona = mysql_fetch_array($wynik);
echo $strona['tresc'];
?>


Z powyższego wyniku poprawnie działa, jak wpisze index.php?kat=1
a chciałbym, zeby trzebabyło wpisać index.php?kat=glowna

Kombinowałem i takie coś mi wyszło:
CODE
if (isset($_GET['kat']))
@$id = $_GET['kat'];

$wynik = mysql_query('SELECT tresc FROM tabela WHERE kat='.$id.'')
or die('Błąd zapytania');

$strona = mysql_fetch_array($wynik);
echo $strona['tresc'];
?>


Połączenie z MySql i wybranie odpowiedniej bazy jest wcześniej smile.gif
bełdzio
zamien
  1. <?php
  2. $wynik = mysql_query('SELECT tresc FROM tabela WHERE kat='.$id.'')
  3. ?>
na

  1. <?php
  2. $wynik = mysql_query( 'SELECT tresc FROM tabela WHERE anchor= "'. mysql_real_escape_string( $id ) . '"' );
  3. ?>
Sekwer
Wypluwa błąd: Błąd zapytania

Sorki za pomyłkę u góry zamiast anchor powinno być kat. Ale już pozmieniałem.
Stosuje skracanie adresów w .htaccess i chciałbym, żeby linki wyglądały tak: http://localhost/moja-strona, a nie http://localhost/1.
Może trzeba zrobicć jakąś zmienną, która zamieniałaby cyfry na odpowiednie ciągi znaków.
erix
A może byś tak pokazał, co zwraca mysql_error" title="Zobacz w manualu PHP" target="_manual?
Sekwer
Sorki, już daje.
CODE
Błąd zapytania Something is wrong in your syntax obok '' w linii 1
erix
A którego zapytania użyłeś? Mam nadzieję, że tego a'la 2. z postu bełdzia.
Sekwer
Tak smile.gif Z zapytaniem jest wszystko OK. Kilka razy sprawdzałem. Korzystam z WebServa, może to jego wina.
piotrooo89
  1. <?php
  2. $wynik = mysql_query("SELECT tresc FROM tabela WHERE anchor= '". mysql_real_escape_string($id) ."'");
  3. ?>


może coś takiego?
Sekwer
CODE
Parse error: syntax error, unexpected T_LOGICAL_OR in C:\Program Files\Serv\httpd\index.php on line 80


Da sie w ogóle tak zrobić, żeby nie było po id? Widzieliście gdzieć, żeby czytało z MySql nie po id?
erix
Pokaż cały kod... Bo tu akurat nie jest wina zapytania. A o ile pamiętam, to użycie konstrukcji ads() or sda() wymaga użycia małpiszona przed nazwą pierwszej funkcji.

Cytat
Widzieliście gdzieć, żeby czytało z MySql nie po id?

Na pewno się da, tylko popraw błędy w kodzie.
Sekwer
Oto mój kod:
  1. <?php
  2.   if (isset($_GET['kat']))
  3.   @$id = $_GET['kat'];
  4.  
  5.   $wynik = mysql_query('SELECT tresc FROM tabela WHERE kat='.$id.'');
  6.   or die("Błąd zapytania");
  7.  
  8.   $strona = mysql_fetch_array($wynik);
  9.   echo $strona['tresc'];
  10.  ?>
erix
Cytat(erix @ 1.03.2009, 13:36:34 ) *
Mam nadzieję, że tego a'la 2. z postu bełdzia.

Jednak nie to. Gdzie masz cudzysłowy przy wartości w WHERE?
Sekwer
  1. <?php
  2. $wynik = mysql_query('SELECT tresc FROM tabela "WHERE" kat='.$id.'')
  3. ?>


Chodzi o takie coś? Bo jak zmieniam to nadal nie pobiera z bazy.
bełdzio
poczytaj o podstawach sql ;/

  1. <?php
  2. $wynik = mysql_query('SELECT tresc FROM tabela WHERE kat="'.$id.'"')
  3. ?>
Sekwer
Chłopaki dzięki działa, taki dziecinny bład. Tak czy inaczej macie po +Pomógł smile.gif
Pozdrowienia.
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.