Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]PHP łączenie 2 tabel
Forum PHP.pl > Forum > Przedszkole
Stron: 1, 2
Paul149
Witam chciałbym się zapytać jak mam połączyć 2 takie tabele ze sobą?

ID / Login / Hasło / Avatar / Admin /...
AID / Autor / opis / title/.../ Avatar 0 lub 1 /

interesuje mnie zapytanie które wyciągnie zdjęcia z tabeli usera do profilu. Pozdrawiam
Pyton_000
Tu każdy chce pilnie pomocy wink.gif
Zmień nazwę tematu na jakąś bardziej odpowiednią i pokaż strukturę tabel i jakieś dane bo w tej chwili nie wiadomo co jest co i do czego.
Paul149
to jest mój 2 post biggrin.gif więc nie wiem jak zmienić temat biggrin.gif

więc gdzie mam uderzyć?
nospor
Nie ma co z tego powodu szczerzyc zebow... Klikasz na EDYTUJ w pierwszym poscie i zmieniasz
Paul149
Więc tak czy ktoś mi tutaj pomoże?

Potrzebuję wyświetlić z tabeli zdjęcia zdjęcia sortowane po AID, zdjęcia przypisane do Loginu, z Avatarem = 1 który ma pole int(1)

Konta - ID / Login / Hasło / Avatar / Admin /...
Zdjecia AID / Autor / opis / title/.../ Avatar 0 lub 1 /
nospor
LEFT JOIN - patrz manual mysql
Paul149
czyli jak mam napisać te zapytanie? bo nie kumam juz
nospor
Masz uzyc LEFT JOIN. Napisalem, sprawdz w manuala jak. Tam masz opisane na przykladach
http://dev.mysql.com/doc/refman/5.0/en/join.html
Paul149
Dałem coś takiego

  1. $photos = mysql_query("SELECT * FROM Zdjecia LEFT JOIN Konta ON Zdjecia.AID=Konta.Login WHERE `Autor` = '$_SESSION[nick] AND `Avatar` = '1' ORDER BY `AID` DESC");
  2.  
  3. <? while($p = mysql_fetch_array($photos)) { ?>
  4. <a href='<? echo ($p['AID']); ?>' rel='lytebox'>
  5. <img src='<? echo ($p['AID']); ?>' class='big_mod' alt='' /></a>
  6. <? } ?>
  7.  


I nie działa
Pyton_000
No to super. Szkoda że nie powiedziałeś jaki błąd.

Linijkę z zapytaniem masz POZA znacznikami <?php
Paul149
Błąd jest taki


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/mznmnbcs/public_html/amithlon.pl/templates/topmodels/theme_profile.php on line 32

i linijka z zapytaniem jest w znacznikach <? php
nospor
Tu masz napisane jak wyswietlac bledy zapytan:
Temat: Jak poprawnie zada pytanie

Co bledu to na pewno masz taki, ze nie zamknales apostrofu, ktory otworzyles dla wartosci AUTOR

Masz tez blad logiczny...
Zdjecia.AID=Konta.Login
po nazwie AID wnioskuje, ze ze jest tam ID a nie LOGIN
Paul149
Błąd: Query was empty

Więc co mam nie tak z tym kodem? może pomożecie sformułować zapytanie??

  1. <?
  2. $photos = mysql_query("SELECT * FROM Zdjecia LEFT JOIN Konta ON Zdjecia.AID=Konta.Login WHERE `Autor` = '$_SESSION[nick]' AND `Avatar` = '1' ORDER BY `AID` DESC");
  3. mysql_query($photos) or die('Błąd: ' .mysql_error());
  4. while($p = mysql_fetch_array($photos)) { ?>
  5. <a href='<? echo ($p['AID']); ?>' rel='lytebox'>
  6. <img src='<? echo ($p['AID']); ?>' class='big_mod' alt='<? echo ($p['AID']); ?>' /></a>
  7. <? } ?>
nospor
facepalmxd.gif
Dobra, to teraz przeczytaj z tamtego linku WERSJE DLA WYJATKOWO OPORNYCH
Cytat
Wersja dla wyjątkowo opornych
Jeśli macie kod w takiej postaci:
[PHP] pobierz, plaintext

mysql_query('jakieś zapytanie');

to macie ten kod zamienić na taki:
[PHP] pobierz, plaintext

$sql = 'jakieś zapytanie';

echo 'ZAPYTANIE:'.$sql;

mysql_query($sql) or die('BŁĄD:'.mysql_error());

Masz zmienic swoj pierwotny kod wg. tego schematu. Tym razem skup sie. To naprawde nie jest trudne...
Paul149
ZAPYTANIE:SELECT * FROM Zdjecia LEFT JOIN Konta ON Zdjecia.AID=Konta.Login WHERE `Autor` = '' AND `Avatar` = '1' ORDER BY `AID` DESCBŁĄD:Column 'Avatar' in where clause is ambiguous

o to i błąd więc co jest nie tak?
nospor
nie: `Avatar` = '1'
a: Zdjecia.`Avatar` = '1'
Pyton_000
Kolumna Avatar w WHERE nie jest jednoznaczna. Musisz dodać prefix w postaci nazwy tabeli albo Konta albo Zdjecia
Paul149
Kod
http://www.amithlon.pl/profil/4/Paul149.html


Pusto nie ma zdjęcia biggrin.gif haha obłęd

a o to kod

  1. <?
  2. $photos = mysql_query("SELECT * FROM Zdjecia LEFT JOIN Konta ON Zdjecia.AID=Konta.Login WHERE Zdjecia.`Autor` = '$_SESSION[nick]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
  3. while($p = mysql_fetch_array($photos)) { ?>
  4. <a href='/uploads/avatars/<? echo ($p['AID']); ?>.jpg' rel='lytebox'>
  5. <img src='/uploads/avatars/<? echo ($p['AID']); ?>.jpg' class='big_mod' alt='<? echo ($p['AID']); ?>' /></a>
  6. <? } ?>
nospor
Zdjecia.AID=Konta.Login
Nie poprawiles tego a pisalem ci o tym. Czytasz co sie do ciebie pisze czy tylko po lebkach co drugie zdanie?

ps: skoro sie dobierasz bezposrednio do tabeli Zdjecia i nie potrzebujesz niz z tabeli usera, to juz w ogole nie wiem z czym miales problem... zwykly select bez LEFT JOIN

$photos = mysql_query("SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '$_SESSION[nick]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
I juz.
A jak nadal ci nie wyswietla zdjecia, znaczy ze warunek
Zdjecia.`Autor` = '$_SESSION[nick]' AND Zdjecia.`Avatar` = '1'
nie jest spelniony. Sprawdz
Paul149
Zdjecia.AID=Konta.ID zmieniłem i dalej to samo czyli pusto

Dalej to samo pusto
nospor
Zrob to

Cytat
ps: skoro sie dobierasz bezposrednio do tabeli Zdjecia i nie potrzebujesz niz z tabeli usera, to juz w ogole nie wiem z czym miales problem... zwykly select bez LEFT JOIN

$photos = mysql_query("SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '$_SESSION[nick]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
I juz.
A jak nadal ci nie wyswietla zdjecia, znaczy ze warunek
Zdjecia.`Autor` = '$_SESSION[nick]' AND Zdjecia.`Avatar` = '1'
nie jest spelniony. Sprawdz

I sprawdz jak wyglada wygenerowane zapytanie
Paul149
Dalej Pusto w zapytaniu
nospor
Miales ssprawdzic jak wyglda zapytanie..
echo "SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '$_SESSION[nick]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC";
Paul149
Tak jak tutaj

SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC

i nic więcej
nospor
O rety... wszystko trzeba palcem pokazac?
No nie widzisz:
Zdjecia.`Autor` = ''
ze jest puste? Znaczy ze $_SESSION[nick] nie zawiera nicku jak ci sie wydawalo...
Paul149
Coś jest nie tak, więc jak mam to teraz zrobić? może napisze na PW?
Boshi
Czytasz co się do ciebie pisze? ... Sesja jest pusta!
Paul149
właśnie bo nick sesji jest właśnie w tabeli z kontami... i dla tego muszę połączyć te 2 tabele w 1 i zapytaniem wyciągnąć wyniki na strone, innych pomysłów nie mam.
nospor
Rety... czy ty robisz wersje z LEFT JOIN czy nie, to do zapytania dane wpisujesz z
$_SESSION[nick]
a jak woł widac, ze tam nic nie ma....

Zrozum to wkoncu... sprawdz co zawiera całą Twoja sesja

print_r($_SESSION);
Paul149
Array ( [Zalogowany] => 1 [Nick] => Paul149 )

Array ( ) - wylogowany
nospor
facepalmxd.gif facepalmxd.gif facepalmxd.gif

Nick
nick

znajdz 10 roznic :/
Paul149
Nie taki efekt miał być.
nospor
A jaki efekt mial byc?

Poprawiles
$_SESSION[nick]
na
$_SESSION[Nick]
?
Paul149
to miało być tak jak wchodzisz na dane konto użytkownika nawet niezalogowany i masz widoczne jego zdjęcia i zdjęcie profilowe, a po zalogowaniu wyświetla mi na każdym koncie moje zdjęcia.
nospor
Kurcze... sam zaczales pobierac dane ludka z sesji wiec miej pretensje do siebie... Jak chciales pobierac dane kliknietego ludka, to wstawiaj tam nick kliknietego ludka. To ty wiesz, skad ten nick wziac. Z url?
Paul149
podpowiedz mi jak by takie zapytanie miało wyglądać? mniej więcej żebym mógł napisać.
nospor
Ty w ogole nie czytasz co sie do Ciebie pisze :/

Zapytanie się nie zmienia.... zmienia sie tylko to, skad bierzesz ten NICK...
Zamiast z :
$_SESSION[Nick]
masz go brać z URL czy skad ty go tam masz
Paul149
  1.  
  2. if(isset($_GET['id']))
  3. {
  4. $profile = mysql_query("SELECT * FROM `Konta` WHERE `ID` = '$_GET[id]'");
  5. $photos = mysql_query("SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '$_GET[Nick]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
  6.  
  7. }
  8.  


Mam coś takiego tylko. Pomożesz?
nospor
$photos = mysql_query("SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '$_GET[Nick]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
No i super, teraz sobie wyswietl zdjecia, jak to wyswietlales pare postow wczesniej
Paul149
Pusto niestety nawet jak zmienie na

$_GET[ID], $_GET[Login], $_GET[Nick]


  1.  
  2. <?
  3. $photos = mysql_query("SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '$_GET[Login]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
  4. while($p = mysql_fetch_array($photos)) { ?>
  5. <a href='/uploads/avatars/<? echo ($p['AID']); ?>.jpg' rel='lytebox'>
  6. <img src='/uploads/avatars/<? echo ($p['AID']); ?>.jpg' class='big_mod' alt='<? echo ($p['AID']); ?>' /></a>
  7. <? } ?>
nospor
Ty ciagle strzelasz.... zobacz co masz w $_GET i przestan strzelac :/

print_r($_GET);
b4rt3kk
Cytat(Paul149 @ 9.02.2015, 15:15:37 ) *
Pusto niestety nawet jak zmienie na

$_GET[ID], $_GET[Login], $_GET[Nick]


  1.  
  2. <?
  3. $photos = mysql_query("SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = '$_GET[Login]' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
  4. while($p = mysql_fetch_array($photos)) { ?>
  5. <a href='/uploads/avatars/<? echo ($p['AID']); ?>.jpg' rel='lytebox'>
  6. <img src='/uploads/avatars/<? echo ($p['AID']); ?>.jpg' class='big_mod' alt='<? echo ($p['AID']); ?>' /></a>
  7. <? } ?>


Może pokaż co masz z var_dump($_GET)? Jak wygląda URL?
Paul149
z print_r mam coś takiego:

Array ( [id] => 10/adam )


a URL wygląda tak

<a href='/profil/<? echo ($v['ID']); ?>/<? echo ($v['Login']); ?>.html' class='modela' title='modelka'><img src='<? echo ($v['Avatar']); ?>' alt='modelka' /></a>
nospor
$zm = explode('/',$_GET['id']);
$nick = $zm[1];

I zmienną $nick masz wstawic zamiast swojego starego
$_SESSION[nick]
Paul149
Dalej pusto :/

Ok działa, dałem zmienną w złe miejsce, a w index.php? macie jakieś pomysły?
b4rt3kk
Cytat(Paul149 @ 9.02.2015, 15:39:05 ) *
Dalej pusto :/


Naucz się debugować swój kod, bo cały wątek się z grubsza do tego sprowadza. Czyli przede wszystkim wyświetl sobie zawartość zmiennych, jak i treść zapytania i jeśli coś się nie zgadza, to zastanów się z jakiego powodu i jak to poprawić.
nospor
Cytat
Ok działa, dałem zmienną w złe miejsce, a w index.php? macie jakieś pomysły?
Jakie znowu pomysly? Skoro ci dziala to o jakich pomyslach mowisz?
Paul149
Kod
http://www.amithlon.pl/


  1. $profile = mysql_query("SELECT * FROM `Konta` ORDER BY ID DESC LIMIT 0, 16");
  2. $photos = mysql_query("SELECT * FROM Zdjecia WHERE Zdjecia.`Autor` = 'Paul149' AND Zdjecia.`Avatar` = '1' ORDER BY `AID` DESC");
  3.  


Ostatnie Zapytanie
nospor
Dobra, sluchaj, niech ktos inny sie z Tobą uzera, ja juz nie mam sił. I tak za duzo czasu zmarnowałem przez Twoj totalny brak myslenia.

Najpierw piszesz ze juz dziala, potem wstawiasz jakies zapytanie i weź sie człowieku domysl o co Tobie może chodzić...
b4rt3kk
A dlaczego ten profil wysypuje całą stronę?

http://www.amithlon.pl/profil/-10/dupa.html
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.