Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Mysql zapytanie Select do dwóch tabel.
Forum PHP.pl > Forum > PHP
przem1969
Witam.
Chciałbym opisac temat ,którego nie moge ugryżć . Tz zanim napisałem zrobiłem wydaje mi sie wiele w tym temacie. Próbowałem na wszytskie strony. Nie trybi tak jak chciałbym. Tz efekt nie jest zadawalający. Może ktoś mi pomoże? Otóz mam dwie tabele jedna questions która zawiera id,ques,created_on i druga news30_story w której przechowuje artykuły swojej strony .Ona zawiera id, sory, shortstory, itd . Artykuły wyswietlaja sie liniem np takim http://siatkowkaweb.pl/ramki/ramka.php?id=1204 W bazie i tabeli questions mam sondy do artykułów wpisuje je z palca o takim samym id jak id artykułu. i Myslalem ze jak porownam te id = id sondy kazda sonda trafi do artykułu mu przeznaczonego niestety tak nie jset. Plik obslugujacy sonde ma zapytanie takie SELECT id, ques FROM questions ORDER BY id LIMIT 1 oczywiscie mozna dopisac DESC czy asc myslalem ze jak zmieni zapytanie i porownam id jak wspominalem to mi sie wyswietli stan jaki chcialbym select * from news30_story s left join questions q on s.id = q.id where s.id czy tez Order By s.id . Nic z tego wyswitla sie ostatnia sonda wiec zle
napisalem sobie switcha do tego
<?
if(isset($_GET['id'])) {


$id = $_GET['id'];


}

switch($id){
case 1204:
case 1200:
case 1201:
echo include_once 'index_poll.php';
break;

case 1185:
case 1202:
echo include_once 'index_chemik.php';
break ;

case 1191: case 1193:
echo include_once 'index_LM.php';
break ;
case 1207:
echo include_once 'index_Skra.php';
break ;
}
?>

Zeby zaczytało sobie do zmiennej id i wyswietliło odpowiednie z bazy questions do danego artykulu . Niestety . Próbowałem z Joinem i Joinem left nic z tego co jest zle. Przepraszam nie mam sie do kogo zwrocic wiec ogólnie pytam ?
Cos tam wiem ale nie ma sie czym chwalic .Bo wymiekam przy tym Gdzies podejrzewanm drobny błąd mi sie wkrada jakas błachostka myslę . Jeśli moge prosic o pmoc ?
mar1aczi
Samo zapytanie SQL wykonane "z palca", tzn. np. w phpmyadmin zwraca Ci poprawny wynik (taki jakiego oczekujesz)?
przem1969
Zapytanie i kombinacje SELECT zwracają niby wynik poprawny w phpmyadmin. Nie wiem jak to zastosować do pliku sondy ,czy pliku wyswietlajacego sonde . Jesli to robie wyswietla mi ostatnia albo pierwsza. i tu mam problem.!
mar1aczi
Pokaż kod jaki próbowałeś i co Ci zwrócił. Używaj znaczników code.
przem1969
  1. <?php
  2. //Update database information according to your server settings
  3. $conn=mysql_connect('localhost', '...', '...') or die("Can't connect to mysql host");
  4. //Select the database to use
  5. mysql_query("SET CHARSET utf8"); // polskie znaki
  6. mysql_select_db('xxxxxxxxxx') or die("Can't connect to DB");
  7. if(!$_POST['poll'] || !$_POST['pollid']){
  8. $query=mysql_query("SELECT id, ques FROM questions ORDER BY id LIMIT 1");
  9.  
  10.  
  11.  
  12.  
  13.  
  14. while($row=mysql_fetch_assoc($query)){
  15. //display question
  16. echo "<font size=\"+2\"><p class=\"pollques\" style=\"padding:5px\">".$row['ques']."</p></font>";
  17. $poll_id=$row['id'];
  18. }
  19. if($_GET["result"]==1 || $_COOKIE["voted".$poll_id]=='yes'){
  20. //if already voted or asked for result
  21. showresults($poll_id);
  22. }
  23. else{
  24. //display options with radio buttons
  25. $query=mysql_query("SELECT id, value FROM options WHERE ques_id=$poll_id");
  26. if(mysql_num_rows($query)){
  27. echo '<div id="formcontainer" style="width:660px;margin-left:0px" ><form method="post" id="pollform" action="'.$_SERVER['PHP_SELF'].'" >';
  28. echo '<p><input type="hidden" name="pollid" value="'.$poll_id.'" /><br/>';
  29. while($row=mysql_fetch_assoc($query)){
  30. echo '<div style="background:#059419;border:#ccc solid 2px;padding:5px"> <input class="bar1" style="float:left;font-size:15px;color:#ccc;width:200px;height:25px;padding:0px;opacity:0.4" type="radio" name="poll" value="'.$row['id'].'" id="option-'.$row['id'].'" />
  31. <label style="margin-top:20px;font-size:25px;font-family:Helvetica;" for="option-'.$row['id'].'" >'.$row['value'].'</label></p></div><br/>';
  32. }
  33. echo '<div class="yourvote" style="width:630px;height:30px;border:red solid 2px;margin-top:20px;padding:10px;font-size:20px;font-family:Helvetica;margin-left:2px"><center>Zogłosuj i zobacz wyniki</center><input style="width:640px;height:65px;opacity:0;margin-top:-70px" type="submit" value="" /></div></form>';
  34. echo '<br/><center><p><font color="#ccc" size="+0px"> <em>Musisz oddać głos żeby zobaczyć wyniki sondy.</em></font></p></centar></div>';
  35. }
  36. }
  37. }
  38. else{
  39. if($_COOKIE["voted".$_POST['pollid']]!='yes'){
  40.  
  41. //Check if selected option value is there in database?
  42. $query=mysql_query("SELECT * FROM options WHERE id='".intval($_POST["poll"])."'");
  43. if(mysql_num_rows($query)){
  44. $query="INSERT INTO votes(option_id, voted_on, ip) VALUES('".$_POST["poll"]."', '".date('Y-m-d H:i:s')."', '".$_SERVER['REMOTE_ADDR']."')";
  45. if(mysql_query($query))
  46. {
  47. //Vote added to database
  48. setcookie("voted".$_POST['pollid'], 'yes', time()+86400*300);
  49. }
  50. else
  51. echo "There was some error processing the query: ".mysql_error();
  52. }
  53. }
  54. showresults(intval($_POST['pollid']));
  55. }
  56. function showresults($poll_id){
  57. global $conn;
  58. $query=mysql_query("SELECT COUNT(*) as totalvotes FROM votes WHERE option_id IN(SELECT id FROM options WHERE ques_id='$poll_id')");
  59. while($row=mysql_fetch_assoc($query))
  60. $total=$row['totalvotes'];
  61. $query=mysql_query("SELECT options.id, options.value, COUNT(*) as votes FROM votes, options WHERE votes.option_id=options.id AND votes.option_id IN(SELECT id FROM options WHERE ques_id='$poll_id') GROUP BY votes.option_id");
  62. while($row=mysql_fetch_assoc($query)){
  63. $percent=round(($row['votes']*100)/$total);
  64. echo '<br/><div class="option" style="font-size:15px;color:#ccc;margin-top:-5px;margin-left:0px" ><p style="margin-left:15px">'.$row['value'].' (<em>'.$percent.'%, '.$row['votes'].' głosów</em>)</p>';
  65. echo '<div class="bar1 ';
  66. if($_POST['poll']==$row['id']) echo ' yourvote';
  67. echo '" style="width: '.$percent.'%;margin-left:2px;margin-top:5px;width:97% " ></div></div><br/>';
  68. }
  69. echo '<br/><p style="float:right;margin-top:-17px;margin-right:10px"><font style="font-size:17px;color:#f6f6f6">Ilość oddanych głosów: '.$total.'</font>'.'</p>';
  70. }
  71. ?>

To jest plik sondy ---wyswietla wszytskie sondy jest ich w bazie 5 chyba

To jest plik wyswietlajacy artykul tz php tego pliku . Nie bede tu sciezek wstawial css i htmla .

  1. <?php
  2.  
  3. if(isset($_GET['id'])) {
  4.  
  5.  
  6. $id = $_GET['id'];
  7.  
  8.  
  9. }
  10.  
  11. switch($id){
  12. case 1204:
  13. case 1200:
  14. case 1201:
  15. echo include_once 'index_poll.php';
  16. break;
  17.  
  18. case 1185:
  19. case 1202:
  20. echo include_once 'index_chemik.php';
  21. break ;
  22.  
  23. case 1191: case 1193:
  24. echo include_once 'index_LM.php';
  25. break ;
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. case 1207:
  33. echo include_once 'index_Skra.php';
  34. break ;
  35. }
  36.  
  37. ?>


-------------------------------------------

próbowałem do pliku sondy wstawic zapytanie takie :

select * from news30_story s left join questions q on s.id = q.id where s.id = {Twoj id};


próbowałem tez

select * from news30_story s left join questions q on s.id = q.id order by s.id

nie trybi.

Niby proste ;


pojawia sie artykul ktore dodaje systemem newsow . ta sonada pojawia sie poza systemem bo on nie czyta php .

czyli jakis artykul np.
http://siatkowkaweb.pl/ramki/ramka.php?id=1200


ma w sobie sonde z innym id ktory powinien miec ! bo powinnna wyswietlic sie sonda z id=1200
a wyswietla sie pierwsza wpisana . chyba wszytsko opisalem
To jest pewnie cos prostego ale naogół te najprstsze sprawiaja mi najwieksze problemy .
mar1aczi
Przeczytałem raz jeszcze całość tematu i nie wszystko rozumiem.
Plik wyświetlający artykuły, to "ramka.php"? Za co odpowiadają pliki: "index_poll.php", "index_chemik.php", "index_LM.php", "index_Skra.php"?

Skąd masz taka konstrukcję:
  1. echo include_once 'index_poll.php';

(i pozostałe pliki index_* wymienione wcześniej)?
Jak wygląda ich kod?

Generalnie, aby pobrać sondę powinieneś rozbudować zapytanie pobierające dany artykuł, tak aby pobrała się również sonda dla niego. Jak już masz dane, to pozostaje je tylko wyświetlić w pożądanym miejscu.
przem1969
Ten drugi plik PHP jest takim modułem do wyswietlania pod trescia artykulu . http://siatkowkaweb.pl/ramki/Social_media_...kul.php?id=1204
Tam w nim jest kod PHP przedstawiony na obrazku . Poniewaz mam na ftpie sondę zrobiona na pliku txt np. A ponieaz nie potrafię zrobić parę głosowań w jednym pliku .txt więc oznaczam i dodaje kolejne pliki np. index_LM.php --> plik sondy dziłający w danym artykule Ligi Mistrzów. i pokazywany przez switcha . To chyba nie ma znaczenia w temacie .
Nie rozumiem o co pytasz? i po co?
Sprawa jest prosta ale nie dla mnie ja widać. Moduł Social_media_artykul.php jest pod kazdym artykułem dopinany do niego -> includowany . w nim znajduja się pliku jak widzsz belka socialmedia, glosowanie jakies tam , artykuły z kategorii i sonda. swich był po to żeby nie pojawiała sie w kazdym artykule sonda ta sama czyli nie chce miec sondy nie dodaje casa o danym id i sie nie pojawia. Problem polega na tym ,zreszta rozumiesz ,że sonda nie pojawia sie odpowiednia do odpowiedniegi id artykulu a w bazie sa identyczne id ,sondy i artykulu. plik sondy masz tez wkleilem. I teraz jest pytanie jak napisac Selekt zeby odpowiednia sonda wpisana do bazy o takim id jak id artykulu wyswietlila sie w bloku Social_media_artykul.php bo ten plik dolaczany do pliku rakma.php Czy to zapytanie dodac do np pliku Social_media_artykul.php a nie do pliku poll.php ? Bo inaczej plik poll.php nie bedzie dzialal. Mowiłem Ci ze tak będziemy tak sobie pisac . Jestem na g g . Jeli bedziesz mial ochote to napisz do mnie . J abym napisal ale nie podałeś danych komunikatoro itd.
mar1aczi
Znajdź w źródłach strony to miejsce, gdzie pobierasz z bazy danych określony artykuł na podstawie $_GET['id']. Będzie tam zapytanie select po tabeli news30_story. Pokaż tego selecta.

Poza tematem: pisz po polsku, bo naprawdę trudno jest Cię zrozumieć.
przem1969
Zamykam temat ! Dziękuje. ...
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.