Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Select z MySQL do PHP
Forum PHP.pl > Forum > Przedszkole
pikasso
Hej mam takie pytanie mam takie zapytanie w MySQL
  1. SELECT klient.Imie, klient.Nazwisko, klient.Ulica, miasto.Nazwa, miasto.Kod,
  2. wojewodztwo.Nazwa, telefon.Numer_telefonu, telefon.rodzaj_telefonu
  3. FROM `klient` , `wojewodztwo` , `miasto` , `telefon` WHERE telefon.widoczność = 'Tak';


i chciałbym je przekształcić do PHP tak żeby mi pokazywało wyniki no ale cały czas mam błąd. Wiem że jestem laikiem w tych sprawach no ale cóż kazdy kiedyś zaczynał smile.gif

  1. <?php
  2. @$db = mysql_pconnect("localhost", "root", "123456z");
  3. if (!$db)
  4. {  
  5. print '<center style="font-size:12px">wystapil blad w polaczeniu</center>';  
  6. exit;
  7. }
  8. mysql_select_db("kst2008"); 
  9. $query = "SELECT * FROM `ksiazkaa`"; 
  10. $result = mysql_query($query);
  11. $num_results = mysql_num_rows($result);
  12.  
  13. print '<p align="center" style="font-size:12px">';
  14. print 'Ilosc wyników wyszukiwania: ".$num_results."</p>';
  15. for ($i=0; $i <$num_results; $i++) {
  16. $row = mysql_fetch_array($result);
  17.  print '<table width="250" border="0" align="center" style="font-size:12px">';
  18.  print "<tr>";
  19.  print '<td width="100" bgcolor="#9EB4FC">Pozycja</td>';
  20.  print '<td width="150">'; 
  21.  print($i+1)."."; print"</td>";
  22.  print "</tr>";
  23.  print "<tr>";
  24.  print '<td width="100" bgcolor="#9EB4FC">Imie: </td>';
  25.  print '<td width="150">'; 
  26.  print stripslashes($row["imie"]); print"</td>";
  27.  print "</tr>";
  28.  print "<tr>";
  29.  print '<td width="100" bgcolor="#9EB4FC">Nazwisko: </td>';
  30.  print '<td width="150">'; 
  31.  print stripslashes($row["nazwisko"]); print "</td>";
  32.  print "</tr>";
  33.  print "<tr>";
  34.  print '<td width="100" bgcolor="#9EB4FC">Miejscowosc: </td>';
  35.  print '<td width="150">'; 
  36.  print stripslashes($row["Miasto"]); print "</td>";
  37.  print "</tr>";
  38.  print "<tr>";
  39.  print '<td width="100" bgcolor="#9EB4FC">Kod pocztowy: </td>';
  40.  print '<td width="150">'; 
  41.  print stripslashes($row["Kod"]); print "</td>";
  42.  print "</tr>";
  43.  print "<tr>";
  44.  print '<td width="100" bgcolor="#9EB4FC">Ulica: </td>';
  45.  print '<td width="150">'; 
  46.  print stripslashes($row["Ulica"]); print "</td>";
  47.  print "</tr>";
  48.  print "<tr>";
  49.  print '<td width="100" bgcolor="#9EB4FC">Nr Telefonu: </td>';
  50.  print '<td width="150">'; 
  51.  print stripslashes($row["Numer"]); print "</td>";
  52.  print "</tr>";
  53.  print "</table>";
  54.  print "<br>"; 
  55.  }
  56.  print "<br>"; 
  57.  print "<br>"; 
  58.  print '<p align="center" style="font-size:10px">Copyright C by Rafal Krasniej 2008</p>';
  59. ?>


Tak wygląda o to błąd
Cytat
</p align=\"center\" style=\"font-size:10px\"></p align=\"center\" style=\"font-size:12px\">
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\Ks\kscala.php on line 36
Ilosc wyników wyszukiwania: ".$num_results."


a mimo jak usunę ta linie i poprawię żeby nie zliczało tych numerów to nadal nie wyświetla mi wyników. </p align=\"center\" style=\"font-size:10px\"></p align=\"center\" style=\"font-size:12px\">
nospor
Cytat
no ale cały czas mam błąd. Wiem że jestem laikiem
W mysleniu tez jestes laikiem? Skoro masz blad to go pokaz

edit
no to masz blad zapytania.
zrob to:
http://nospor.pl/php-faq-n29.html#faq-6
pikasso
sorki że zdublowałem temat no ale dalej nie potrafię wykonać połączenia tych tabel. Mogli byście mi chociaż trochę pomóc chociaż pokazać jak mogło by to wyglądać a to co podał mi użytkownik: nospor porostu nie potrafię tego wykorzystać. No ale i tak z góry dzięki bo dużo zrobiłem.

Wiec mam wielka prośbę. Mógłby mi ktoś to zapisać z połączeniami jako zapytanie php tego selecta
  1. SELECT klient.Imie, klient.Nazwisko, klient.Ulica, miasto.Nazwa, miasto.Kod, wojewodztwo.Nazwa,
  2. telefon.Numer_telefonu, telefon.rodzaj_telefonu
  3. FROM `klient` , `wojewodztwo` , `miasto` , `telefon` WHERE telefon.widoczność = 'Tak';
nospor
no ale czego nie umiesz wykorzystac? Nie umiesz napisac: or die('Zapytanie: '.$sql.' --- błąd: '.mysql_error());
questionmark.gif No bez jaj....

  1. <?php
  2. //....
  3. $result = mysql_query($query) or die('Zapytanie: '.$query.' --- błąd: '.mysql_error());
  4. //...
  5. ?>
pikasso
ok wyrzuciło taki oto błąd:

Zapytanie: SELECT klient.Imie, klient.Nazwisko, klient.Ulica, miasto.Nazwa, miasto.Kod, wojewodztwo.Nazwa, telefon.Numer_telefonu, telefon.rodzaj_telefonu FROM `klient` , `wojewodztwo` , `miasto` , `telefon` WHERE telefon.widocznosc = 'Tak'; --- blad: Unknown column 'telefon.widocznosc' in 'where clause'
phpion
Stawiałbym raczej na polskie znaki w nazwie kolumny bo dane wybierasz również z tabeli telefon.
nospor
raz masz widocznosc a raz widoczność
zdecyduj sie bo nie wiem czy to literowki teraz robisz czy naprawde tak masz.

lub jak mowi phpion wywal z nazw tabel te krzaki
pikasso
faktycznie w bazie danych miałem widoczność zmieniłem na widocznosc i zobaczymy jaki będzie efekt
pikasso
Faktycznie zmieniło się nie wyskakuje błąd. Dzięki wielkie.
Ale teraz gdy włączyłem żeby wyświetliło mi wyniki to wyświetliło mi 432 puste wyniki nie wiem czemu smile.gif możne coś w bazie namieszałem.

Kurcze... nie wiem czemu w tym nowym zapytaniu mi niby błędu nie wyrzuca ale nie wyświetla wyników tylko puste pola a pole numerowane (kolejność) normalnie jest liczone i wyświetlane
Pride
Tak w sumie na marginesie, ale czy nie "prościej" byłoby dać to w 1 echo " "; niż rozdrabniać każdą linijkę osobno? tongue.gif
pikasso
Wiesz ja jestem bardzo początkującym i tak jestem zadowolony z tego co mi tutaj udało się naskrobać smile.gif Wszystko się wzoruję na jakichś tutkach i staram się napisać coś sam smile.gif
kaem
No ale widzę, że pobierasz wszystko z tabeli książka, a wyświetlasz takie dane jak: imię, nazwisko, miasto, ulica itd, które masz w innych tabelach (wnioskując po tym twoim pierwszym zapytaniu, tj)
  1. SELECT klient.Imie, klient.Nazwisko, klient.Ulica, miasto.Nazwa, miasto.Kod,
  2. wojewodztwo.Nazwa, telefon.Numer_telefonu, telefon.rodzaj_telefonu
  3. FROM `klient` , `wojewodztwo` , `miasto` , `telefon` WHERE telefon.widoczność = 'Tak';
  4. ?>
pikasso
No tak tylko że teraz nie mam żadnego błędu w zapytaniu a mimo to nie widzę wyników chociaż w PhpMyAdmin są widoczne te wyniki w takiej samej liczbie w zależności od zapytania.

oto kod PHP a pod spodem zamieszczam obrazek
  1. <?php
  2. @$db = mysql_pconnect("localhost", "root", "123456z");
  3. if (!$db)
  4. {  
  5. print '<center style="font-size:12px">wystapil blad w polaczeniu</center>';  
  6. exit;
  7. }
  8. mysql_select_db("kst2008");
  9. mysql_query('SET CHARSET latin2'); 
  10. $query = "SELECT klient.Imie, klient.Nazwisko, klient.Ulica, miasto.Nazwa, miasto.Kod
    , wojewodztwo.Nazwa, telefon.Numer_telefonu, telefon.rodzaj_telefonu
  11. FROM `klient` , `wojewodztwo` , `miasto` , `telefon` WHERE telefon.widocznosc = 'Tak' 
  12. AND wojewodztwo.idWojewodztwo = '14';"; 
  13. $results = mysql_query($query);
  14. $num_results = mysql_num_rows($results);
  15.  
  16. print '<p align="center" style="font-size:12px">';
  17. print "Znaleziono osob w ksiazce: ".$num_results."";
  18. print "<br>";
  19.  
  20. for ($i=0; $i <$num_results; $i++)
  21. {
  22.  $row = mysql_fetch_array($results); 
  23.  print "<br>";  
  24.  print '<table width="250" border="0" align="center" style="font-size:12px">';
  25.  print "<tr>";
  26.  print '<td width="100" bgcolor="#9EB4FC">Pozycja</td>';
  27.  print '<td width="150">'; 
  28.  print ($i+1)."."; 
  29.  print"</td>";
  30.  print "</tr>";
  31.  print "<tr>";
  32.  print '<td width="100" bgcolor="#9EB4FC">Imie: </td>';
  33.  print '<td width="150">'; 
  34.  print stripslashes($row["klient.Imie"]); 
  35.  print"</td>";
  36.  print "</tr>";
  37.  print "<tr>";
  38.  print '<td width="100" bgcolor="#9EB4FC">Nazwisko: </td>';
  39.  print '<td width="150">'; 
  40.  print stripslashes($row["klient.Nazwisko"]);
  41.  print "</td>";
  42.  print "</tr>";
  43.  print "<tr>";
  44.  print '<td width="100" bgcolor="#9EB4FC">Ulica: </td>';
  45.  print '<td width="150">'; 
  46.  print stripslashes($row["klient.Ulica"]); 
  47.  print "</td>";
  48.  print "<tr>";
  49.  print '<td width="100" bgcolor="#9EB4FC">Miasto: </td>';
  50.  print '<td width="150">'; 
  51.  print stripslashes($row["miasto.Nazwa"]); 
  52.  print "</td>";
  53.  print "<tr>";
  54.  print '<td width="100" bgcolor="#9EB4FC">Kod pocztowy: </td>';
  55.  print '<td width="150">'; 
  56.  print stripslashes($row["miasto.Kod"]); 
  57.  print "</td>";
  58.  print "<tr>";
  59.  print '<td width="100" bgcolor="#9EB4FC">Wojewodztwo: </td>';
  60.  print '<td width="150">'; 
  61.  print stripslashes($row["wojewodztwo.Nazwa"]); 
  62.  print "</td>";
  63.  print "<tr>";
  64.  print '<td width="100" bgcolor="#9EB4FC">Nr tel: </td>';
  65.  print '<td width="150">'; 
  66.  print stripslashes($row["telefon.Numer_telefonu"]); 
  67.  print "</td>";
  68.  print "<tr>";
  69.  print '<td width="100" bgcolor="#9EB4FC">Rodzaj tel: </td>';
  70.  print '<td width="150">'; 
  71.  print stripslashes($row["telefon.rodzaj_telefonu"]); 
  72.  print "</td>";
  73.  print "</tr>";
  74.  print '<img src="line.jpg">';
  75.  };
  76. ?>



m87
  1. ...WHERE telefon.widoczność = 'Tak';


Sorry za mały offtop, ale tutaj chyba wystarczy tinyint(1), a nie varchar. Czyli po prostu wartość binarna 0 i 1, a nie string 'tak' i 'nie'. Taka mała rada na przyszłość winksmiley.jpg
kaem
Oto działający początek skryptu:
  1. <?php
  2. @ $db = mysqli_connect('localhost', 'root', 'mojehaslo');
  3. if (!$db)
  4. {
  5. print 'wystapil blad w polaczeniu';
  6. }
  7. mysqli_select_db($db,"ksiazki\");
  8. //mysql_query('SET CHARSET latin2'); /* jest cos takiego wogole?  bo u mnie wywala błąd przy tym*/
  9. $query ="SELECT klienci.nazwisko, klienci.adres from klienci&#092;";
  10. $result = mysqli_query($db, $query);
  11. $num_results = mysqli_num_rows($result);
  12.  
  13. //costam costam
  14. for ($i=0; $i <$num_results; $i++)
  15. {
  16.  $row = mysqli_fetch_array($result);
  17. ?>

Oczywiscie to jest robione na mojej przykladowej bazie wiec musisz sobie pozmieniac. Jak widzisz używam tutaj nowszej wersji poleceń MySQL, ktore zaczynają się tak: mysqli_costam. i znaczy "improved" czyli po polsku ulepszone. Poi za tym zamień
  1. <?php
  2. print stripslashes($row["klient.Imie"]);
  3. ?>
na
  1. <?php
  2. print stripslashes($row["Imie"]);
  3. ?>
. Nie wiem natomiast jak się dostać do kolumn o takiej samej nazwie, które są w róznym tabelach, ale u Ciebie akurat nie ma takiego przypadku więc luz.

Kolejna sprawa to łączenie tabel. Nie wiem jak ta twoja baza wygląda, ale dziwne masz to zapytanie. Tabele są tak jak by ze sobą nie połączone. Żadnych kluczy itp. Pokaż może jak twoje tabele wyglądają, chodzi mi tylko o kolumny jakie masz a nie dane w nich zawarte. Poczytaj sobie o kluczach (podstawowych i obcych), bo to podstawa. Bez tego nie zaprojektujesz żadnej sensownej bazy danych.
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.