Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przyjazny link
Forum PHP.pl > Forum > Przedszkole
mzakrzewski
Witam

Bawię się tym i szczerze to z głupiałem

Może mi ktoś powiedzieć co robię źle

1) Utworzyłem bazę danych o nazwie np url a w niej tabele przyjazne_linki

kod htaccess:

Kod
Kod:
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z-_0-9]+)$ podstrona.php?view=$1 [L,QSA]
RewriteRule ^([a-zA-Z-_0-9]+)$ index.php?view=$1 [L,QSA]



kod łączenia z bazą danych:

Kod
Kod:
<?php

$DB_HOST = 'localhost';
$DB_USER = 'xxx';
$DB_PASS = 'xxx';
$DB_NAME = 'xxx';

try{
$db_con = new PDO("mysql:host={$DB_HOST};dbname={$DB_NAME}",$DB_USER,$DB_PASS);
$db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e){
echo $e->getMessage();
}


kod linku w menu:

Kod
Kod:
<a href="<?php echo $row['nazwa_linku']; ?>"><?php echo $row['nazwa'];?></a>


kod php:

Kod
Kod:
<?php
$rekody_z_bazy_danych = $db_con->prepare('SELECT * FROM przyjazne_linki WHERE nazwa_linku = '.$_GET['view'].';');
$rekody_z_bazy_danych->execute();

if($rekody_z_bazy_danych->rowCount() > 0)
{
while($row=$rekody_z_bazy_danych->fetch(PDO::FETCH_ASSOC))
{
extract($row);
?>

<li>
<?php echo $row['nazwa'] .' <strong>to id = '.$row['id']. '</strong>';?>
</li>

<?php
}
}

?>



Efekt: Odwiedź moją stronę

Może mi ktoś pomóc ?
Mam problem z pobranie zawartości z bazdy danych z danego linku np link: strona-startowa powinno się wyświetlić np nazwa, treść itd.
nospor
Ten print_r na stronie to z czego?
mzakrzewski
<?php
function parse_path() {
$path = array();
if (isset($_SERVER['REQUEST_URI'])) {
$request_path = explode('?', $_SERVER['REQUEST_URI']);

$path['base'] = rtrim(dirname($_SERVER['SCRIPT_NAME']), '\/');
$path['call_utf8'] = substr(urldecode($request_path[0]), strlen($path['base']) + 1);
$path['call'] = utf8_decode($path['call_utf8']);
if ($path['call'] == basename($_SERVER['PHP_SELF'])) {
$path['call'] = '';
}
$path['call_parts'] = explode('/', $path['call']);

$path['query_utf8'] = urldecode($request_path[1]);
$path['query'] = utf8_decode(urldecode($request_path[1]));
$vars = explode('&', $path['query']);
foreach ($vars as $var) {
$t = explode('=', $var);
$path['query_vars'][$t[0]] = $t[1];
}
}
return $path;
}

$path_info = parse_path();
echo '<pre>'.print_r($path_info, true).'</pre>';
?>

nospor
Po pierwsze sprawdz czy $_GET['view'] zawiera to co powinno zawierac.
Po drugie masz blad zapytania wiec nic dziwnego ze nie dziala. Wyswietl sobie blad zapytania, wyswietl sobie wygenerowane zapytanie a wszystko bedzie jasne.

ps: przenosze
mzakrzewski
&_GET[view]

działa gdyby była taka sytuacja

że np link.php?=id1
wtedy wyświetla zawartość

a gdy zmienimy na przyjazny link to niestety nic nie wyświetla.

A możesz napisać mi gdzie owy błąd występuję ?

po wstawieniu

Kod
ini_set( 'display_errors', 'On' );
error_reporting( E_ALL );


nic mi się nie wyświetla
nospor
Napisalem ci dwie proste rzeczy do zrobienia. Nie zrobiles ani jednej
mzakrzewski
Cytat(mzakrzewski @ 29.12.2016, 15:54:45 ) *
&_GET[view]

działa gdyby była taka sytuacja

że np link.php?=id1
wtedy wyświetla zawartość

a gdy zmienimy na przyjazny link to niestety nic nie wyświetla.

A możesz napisać mi gdzie owy błąd występuję ?

po wstawieniu

Kod
ini_set( 'display_errors', 'On' );
error_reporting( E_ALL );


nic mi się nie wyświetla

nospor
Po raz ostatni prosze:
1) pokaz co zawieta $_GET['view],
2) Wyswietl sobie jak wyglada wygenerowane zapytanie
3) Mowilem o bledach bazy a nie o bledach php. Jak nie wiesz gdzie sa bledy bazy to zapraszam do manuala do dzialu PDO bo wlasnie PDO uzywasz.

To sa naprawde proste rzeczy i wypadaloby troche je ogarniac
mzakrzewski
dobra mam

błąd

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42S22]: Column not found: 1054 Unknown column 'o' in 'where clause'' in /home/nowo/public_html/daniel/podstrona.php:90 Stack trace: #0 /home/nowo/public_html/daniel/podstrona.php(90): PDOStatement->execute() #1 {main} thrown in /home/nowo/public_html/daniel/podstrona.php on line 90


linia 90

Kod
<?php
                $rekody_z_bazy_danych = $db_con->prepare('SELECT * FROM przyjazne_linki WHERE nazwa_linku = '.$_GET['view'].';');
                $rekody_z_bazy_danych->execute(); // linia 90

                if($rekody_z_bazy_danych->rowCount() > 0)
                {
                    while($row=$rekody_z_bazy_danych->fetch(PDO::FETCH_ASSOC))
                    {
                        extract($row);
                        ?>

                        <li>
                            <?php echo $row['nazwa'] .' <strong>to id = '.$row['id']. '</strong>';?>
                        </li>

                        <?php
                    }
                }

                ?>
nospor
Super to teraz wez w koncu zrob jeszcze punkt 1 i 2.
mzakrzewski
Array ( [view] => o-tworzeniu-stron-internetowych-i-a-i-e )
nospor
To punk1. Prosilem jeszcze o punkt 2 smile.gif

ps: ja wiem gdzie masz blad, ja chce, bys sam doszedl do tak prostej rzeczy wink.gif
viking
Nigdy nie rób czegoś takiego:
  1. $db_con->prepare('SELECT * FROM przyjazne_linki WHERE nazwa_linku = '.$_GET['view'].';');

Używasz prepare a jednocześnie umożliwiasz wstrzyknięcie dowolnego kodu do zapytania.
mzakrzewski
tzn że jak powinno wyglądać zapytanie ?
tzn że nie powinno się używać w tan sposób w ogóle ?
viking
Dokumentacja twoim przyjacielem. Jest tam pełno przykładów jak używać prawidłowo prepare.
mzakrzewski
no to pozostaje mi dokumentacja

dziękuję za poświęcony czas smile.gif

Pozdrawiam

Problem rozwiązany smile.gif

Wiec temat do zamknięcia smile.gif

ps. Dziękuję za wskazówki 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.