Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Zczytanie danych z tabeli po ID
Forum PHP.pl > Forum > Przedszkole
Komarek
Witam
Moim zalozeniem jest napisanie prostego skrypciku ktory bedzie zczytywal dane z tabeli po ID.

przyklad:
http://moja-strona.pl/index.php?id=1

Zawartosc pliku index.php:

  1. <html>
  2. <?php
  3. $db = mysql_connect("host", "uzytkownik","haslo");
  4. mysql_select_db("baza",$db);
  5. ?>
  6. <body topmargin="0" leftmargin="-2">
  7. <basefont size="-1" face="MS GOTHIC">
  8. <?
  9. $wynik = mysql_query("SELECT * FROM tabela WHERE id=`.$_GET[id].`",$db);
  10. $wiersz = mysql_fetch_array($wynik);
  11.  
  12. echo "Imie: ".$wiersz['imie']." .";
  13. echo "Nick: ".$wiersz['nick']." .";
  14.  
  15.  
  16. ?>
  17. </body></html>


W mysqlu mam kolumny:
id
imie
nick


Niestety jak tak zrobilem, wywala mi blad:
Kod
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /xxxxxxxx/index.php on line 13


Linijka 13:
Kod
    $wiersz = mysql_fetch_array($wynik);


Wiec prosze, powiedzcie mi co mam zle.
Zaznaczam ze jeszcze jestem slabiutki w tych dziedzinach.

Pozdrawiam, Komar smile.gif
MateuszS
blad w zapytaniu, ma byc

  1. $wynik = mysql_query("SELECT * FROM tabela WHERE id=".$_GET['id']."") or die(mysql_error());
Komarek
No ok, blad z mysql_fetch_array zniknal

jednak teraz mam taki problem:

Kod
Unknown column '1' in 'where clause'


Umiem przeczytac ten blad, najwyrazniej chodzi o to ze nia ma takiej kolumny.

Mam 3 kolumny.
id, nick, imie

mam zalozmy 2 rekordy

1 Komarek Konrad
2 SuperNick Robert

jezeli dam index.php?id=1

chce by sie wyswitlaly dane z wiersza w ktorym id=1

czyli dla
$wiersz['nick']
bedize wyswietlona wartosc Komarek
a dla $wiersz['imie']
bedzie Konrad

Nie mam pojecia juz jak to zrobic, tak mi sie wszystko pogmatwalo sad.gif

prosze o pomoc smile.gif
MateuszS
wielkosci liter sie zgadzaja w polach? Zapytanie wykonujesz gdy istnieje GET["id"] czy nawet gdy jestes na index.php ?
Komarek
tak, wielkosci liter sie zgadzaja.

po prostu przechodze na index.php?id=1

jednak blad jest w tym ze skrypt szuka KOLUMNY o nazwie ktora podam w ?id=...

add:

jak probuje przejsc na strone bez definiowania ID
czyli na index.php

otrzymuje taki blad:
Kod
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
piotrooo89
to ma działać na zasadzie że ty podajesz wartość kolumny a nie jej nazwę.
MateuszS
no tak, w tym drugim przypadku masz blad bo musisz dorzucić warunek

  1. if(isset($_GET["id"])) {
  2. //tu ten caly kod
  3. }
  4.  


A co do pierwszego bledu... to cos robisz zle i sie nie przyznajesz tongue.gif
Komarek
a co mozna zle zrobic ? biggrin.gif

nie mam zielonego pojecia co jest sad.gif

czy to na pewno powinno byc WHERE ?

nie mam zielonego pojecia czemu to nie trybi sad.gif

add:

jeszcze raz:

mam cos takiego:
  1. <?php
  2. $db = mysql_connect("xxx", "xxx","xxx");
  3. mysql_select_db("xxx",$db);
  4. $wynik = mysql_query("SELECT * FROM tabela WHERE authid=". $_GET['id'] ."") or die(mysql_error());
  5. $wiersz = mysql_fetch_array($wynik);
  6. echo "ID: ".$wiersz['authid']."<br />";
  7. echo "Imie: ".$wiersz['imie']."<br />";
  8. echo "Nick: ".$wiersz['nick']."<br />";
  9. ?>


I to nie dziala, czemu ? biggrin.gif


OK DZIALA exclamation.gif!

Oto rozwiazanie:
blad byl w ten linijce:
Kod
$wynik = mysql_query("SELECT * FROM tabela WHERE authid=". $_GET['id'] ."") or die(mysql_error());


A mianowicie w tej czesci:
Kod
WHERE authid=". $_GET['id'] .""


A dokladnie tutaj:
Kod
= " .  $ _ G E T [ ' i d ' ]   . " "


Umyslnie napisalem spacje wszedzie biggrin.gif

Powinno byc tak:

Kod
= ' " .  $ _ G E T [ ' i d ' ]   . " ' "


biggrin.gif
piotrooo89
teoretycznie nie. po ID powinno być typu int czyli liczbowe i nie trzeba było go umieszczać jako stringa, bo teraz właśnie tak traktujesz int'a jako ciąg znaków.
Komarek
ale nie przejmujmy sie tym biggrin.gif
dziala i dziekuje biggrin.gif
piotrooo89
hmmmm, czy ja wiem... dziwne podejście, jak coś jest jakoś określone to chyba powinno się tego stosować. liczba to liczba, string to string, nie będzie inaczej.
Kużdo
  1. <?php
  2. @mysql_connect("host", "user", "pass") or die("Access Denied.");
  3. @mysql_select_db("baza") or die("Wrong MySQL database.");
  4. if(!empty($_GET['id'])){
  5. $wynik = mysql_query("SELECT * FROM tabela WHERE authid=".$_GET['id']) or die(mysql_error());
  6. $wiersz = mysql_fetch_array($wynik);
  7. echo 'ID: '.$wiersz['authid'].'<br />Imie: '.$wiersz['imie'].'<br />Nick: '.$wiersz['nick'];
  8. } else echo 'Brak argumentu GET!';
  9. ?>

Wersja skrócona i o wiele przejrzystsza ;P Potestuj sobie ;P
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.