Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: 3 zapytania, 1 wynik ??
Forum PHP.pl > Forum > Bazy danych > MySQL
primo
Witam,

następujący problem: mam w sumie w skrypcie 3 zapytania do bazy danych:
[php:1:1e44b70c36]<?php
$sql = "SELECT * FROM filmy WHERE gatunek = '".$gatunek."'";
$result = mysql_query($sql) or die(mysql_error());
?>[/php:1:1e44b70c36]

[php:1:1e44b70c36]<?php
$query = "SELECT * FROM filmy WHERE ID <= ".$from." AND ID > ".($from-$ile)." ORDER BY ID DESC";
$result = mysql_query($query);
if(!$result){
print("Problem z bazÄ… danych.");
exit;
?>[/php:1:1e44b70c36]

[php:1:1e44b70c36]<?php
$query = "SELECT MAX(ID) FROM filmy";
$result = mysql_query($query);
if (!$result){
print("Problem z baz&plusmn; danych. Odrzucone zapytanie.");
exit;
?>[/php:1:1e44b70c36]

pierwsze zapytanie wyszukuje tylko filmy o gatunku komedia, drugie i trzecie zapytanie mają za zadanie ułożenia tych wyników z zapytania pierwszego, aby wpis o max id był na górze i stronnicować po 3 zapytania... jak coś to zamieszczę pełny kod

jest ktoś w stanie to rozgryźć ?
spenalzo
Co mamy rozgryźć? Nie działa coś?
primo
właśnie o to chodzi że chodzi, ale nie sortuje wg tej kategorii gatunek, po prostu wyrzuca wszystkie rekordy z bazy


tak sobie myślę, że może dałoby radę połączyć 2 zapytania w jedno questionmark.gif

[php:1:a77b33ccbc]<?php
"SELECT * FROM filmy WHERE gatunek = '".$gatunek."'" and WHERE ID <= ".$from." AND ID > ".($from-$ile)." ORDER BY ID DESC";
?>[/php:1:a77b33ccbc]

istnieje jakaś taka możliwość połączenia tego questionmark.gif
Foxx
No ale w drugim zapytaniu nie ma mowy o gatunku - nie powinno być tak:
[php:1:67bff4b057]<?php
$query = "SELECT * FROM filmy WHERE gatunek='".$gatunek."' AND ID <= ".$from." AND ID > ".($from-$ile)." ORDER BY ID DESC";
?>[/php:1:67bff4b057]
?
dob
Niewiem czy dobrze kombinuje ale sprawdz cos takiego to 2 zapytanie zmien na takie :

[php:1:15f7f487bc]<?php
$query = "SELECT * FROM filmy WHERE ID <= ".$from." AND ID > ".($from-$ile)." AND gatunek='".$gatunek."' ORDER
BY ID DESC";
$result = mysql_query($query);
if(!$result){
print("Problem z bazÄ… danych.");
exit;
?>[/php:1:15f7f487bc]

[edit]
ups spoźniełem się...
primo
Something is wrong in your syntax obok 'AND ID > -14 ORDER BY ID DESC' w linii 1
spenalzo
Już Ci kiedyś pisałem -> [manual:6c64fa6059]mysql_error[/manual:6c64fa6059] - naucz się tego stosować !!
Foxx
[php:1:c9cec84b41]<?php

$query = "SELECT * FROM filmy WHERE gatunek='".$gatunek."' AND ID <= '".$from."' AND
ID > '".($from-$ile)."' ORDER BY ID DESC";

?>[/php:1:c9cec84b41]
primo
to zmodyfikowane zapytanie mam umieścić jak zapytanie 2 a pierwsze usunac, czy w miejsce pierwszego a drugie usunac


aby nie było wątpliwości to jest cały kod, dodatkowa trudność że drugie zapytanie tworzy funkcję:

[php:1:a2f3672a20]<?php
$ile = 14;
$gatunek = $_GET["gatunek"];


$link = mysql_connect("db.st.interia.pl", "cosik", "cosik");
$flag = mysql_select_db("cosik");
if(!$link || !$flag){
print(mysql_error());
print("Problem z poł&plusmn;czeniem z baz&plusmn; danych.");
exit;
}

function readRecord($result)
{
$row = mysql_fetch_row($result);
if(!$row){
$contents= "";
}
else{

$contents = $row[1]."<BR>";
$contents .= $row[2]."<BR>";
$contents .= $row[3]."<BR>";
$contents .= $row[4]."<BR><BR>";
}
return $contents;
}

function readId($from, $ile)
{
$query = "SELECT * FROM filmy WHERE gatunek='".$gatunek."' AND ID <= '".$from."' AND ID > '".($from-$ile)."' ORDER BY ID DESC";
$result = mysql_query($query) or die(mysql_error());
if(!$result){
print("Problem z bazÄ… danych.");
exit;
}

do{
$record = readRecord($result);
$contents .=$record;
}
while ($record <> "");
return $contents;
}






$query = "SELECT MAX(ID) FROM filmy";
$result = mysql_query($query);
if (!$result){
print("Problem z baz&plusmn; danych. Odrzucone zapytanie.");
exit;
}
$row = mysql_fetch_row($result);
if(!$row){
print("Problem z baz&plusmn; danych. Odrzucone zapytanie.");
exit;
}
$rek_no = $row[0];

$from = $_GET["from"];
if($from <= 0 || $from >= $rek_no){
$from = $rek_no;
$prev = $rek_no;
$next = $rek_no - $ile;
}
else{
$prev = $from + $ile;
$next = $from - $ile;
}
if($imie == "" && $nazwisko == ""
&& $email == "" && $contents == ""){
$tempStr = readId($from, $ile);
print($tempStr);
}

mysql_close($link);

$code = "<A HREF="index.php?op=3&go=2&gatunek=komedia&from=$prev">Poprzednie</A>
<A HREF="index.php?op=3&go=2&gatunek=komedia&from=$next">Następne</A>";
if($rek_no > $ile){
print("$code");
}



?>[/php:1:a2f3672a20]
Foxx
No ja tam już nie widze tego pierwszego zapytania więc sobie zmieniłeś.
Żeby Ci odpowedzieć trzeba by znać ten pierwotny skrypt.
Ale to nie jest takie trudne - jeżęli to pierwsze zapytanie nie jest Ci już do niczego potrzebne, to wywal je i wszystkie wywołania funkcji w której ono się pojawiało (o ile ta funkcja nie robi jeszcze czegoś)
primo
kombinuję, zmieniam i nic... :x
pierwotny kod:



[php:1:9e398d180d]<?php
$ile = 14;
$gatunek = $_GET["gatunek"];


$link = mysql_connect("db.st.interia.pl", "cosik", "cosik");
$flag = mysql_select_db("cosik");
if(!$link || !$flag){
print(mysql_error());
print("Problem z poł&plusmn;czeniem z baz&plusmn; danych.");
exit;
}

$sql = "SELECT * FROM filmy WHERE gatunek = '".$gatunek."'";
$result = mysql_query($sql) or die(mysql_error());

function readRecord($result)
{
$row = mysql_fetch_row($result);
if(!$row){
$contents= "";
}
else{

$contents = $row[1]."<BR>";
$contents .= $row[2]."<BR>";
$contents .= $row[3]."<BR>";
$contents .= $row[4]."<BR><BR>";
}
return $contents;
}

function readId($from, $ile)
{
$query = "SELECT * FROM filmy WHERE ID <= ".$from." AND ID > ".($from-$ile)." ORDER BY ID DESC";
$result = mysql_query($query);
if(!$result){
print("Problem z bazÄ… danych.");
exit;
}

do{
$record = readRecord($result);
$contents .=$record;
}
while ($record <> "");
return $contents;
}






$query = "SELECT MAX(ID) FROM filmy";
$result = mysql_query($query);
if (!$result){
print("Problem z baz&plusmn; danych. Odrzucone zapytanie.");
exit;
}
$row = mysql_fetch_row($result);
if(!$row){
print("Problem z baz&plusmn; danych. Odrzucone zapytanie.");
exit;
}
$rek_no = $row[0];

$from = $_GET["from"];
if($from <= 0 || $from >= $rek_no){
$from = $rek_no;
$prev = $rek_no;
$next = $rek_no - $ile;
}
else{
$prev = $from + $ile;
$next = $from - $ile;
}
if($imie == "" && $nazwisko == ""
&& $email == "" && $contents == ""){
$tempStr = readId($from, $ile);
print($tempStr);
}

mysql_close($link);

$code = "<A HREF="index.php?op=3&go=2&gatunek=komedia&from=$prev">Poprzednie</A>
<A HREF="index.php?op=3&go=2&gatunek=komedia&from=$next">Następne</A>";
if($rek_no > $ile){
print("$code");
}

?>[/php:1:9e398d180d]
Foxx
Nic nie mówię... ale zapytanie z linii 15 w ogóle nie gra żadnej roli w tym skrypcie
wynik tego zapytania przypisujesz zmiennej $result ale zanim cokolwiek z nią zrobisz , w linii 56 przypisujesz tej samej zmiennej nową wartość...
Więc po co Ci w ogóle to zapytanie?
Kod funkcji najlepiej zamieszczać na początku albo na końcu pliku (albo w ogóle w pliku z funkcjami) - tak jest czytelniej
primo
powróciłem do starego kodu, który tak filtruje dane, że sortuje wyniki wg kategorii i zwraca filmy - o kategorii - komedia

[php:1:7d4ed4909e]<?php
$gatunek = $_GET["gatunek"];
mysql_connect ("db.st.interia.pl", "cosik", "cosik") or die("Nie można połączyć się z
bazą danych");

mysql_select_db ("cosik") or die("Nie można połączyć się z bazą danych");
$sql = "SELECT * FROM filmy WHERE gatunek = '".$gatunek."'";
$result = mysql_query($sql) or die(mysql_error());

print "<table border=0 cellpadding=0 cellspacing=5 class=outside1>";
print "<TR><td class=white1><div class=text><B>Tytuł</B></TD>
<td class=white1><div class=text><B>Aktorzy</B></TD></TR>n";

while ($rekord = mysql_fetch_array ($result)) {
$id = $rekord[0];
$tytul_pl = $rekord[1];
$tytul_ang = $rekord[2];
$dlugosc = $rekord[3];
$aktorzy = $rekord[5];
$recenzja = $rekord[7];
$gatunek = $rekord[10];


print "<TR><td class=white1><div class=text><a href="cos.php">".$tytul_pl."</a></TD><td class=white1><div class=text1>$aktorzy</TD></TR>n";

}
print "</TABLE>";
?>[/php:1:7d4ed4909e]

teraz do niego chciałbym dołączyć kod o którem mowa była na początku, a więc aby było stronnicowanie + wyciąganie najnowszych wyników na samą górę

dacie jakiś punkt zaczepienia questionmark.gif
spenalzo
Panie leniwiec, szukasz punktu zaczepienia?
:arrow: http://pl.php.net/manual/pl/
:arrow: http://www.mysql.com/doc/en

Ale lepij być leniem i czekać az ktoś napisze. W tym czasie co siedzisz i produkujesz te posty byś 10 razy znalazł co chcesz.
Nie znasz angielskiego? http://www.google.pl - poszukaj po polsku.

Twoje tematy urastaja do gigantycznych rozmiarów, bo sie nie chce poszukać samemu - a tego nie cierpie. angrysmiley.gif
primo
śmierdzi złośliwością ;(
spenalzo
Cytat
śmierdzi złośliwością ;(

To nie śmierdzi złośliwościa. To JEST złośliwość.
primo
wg mnie po to jest to forum, że jak już kompletnie nie mam pojęcia jak coś ugryżć to właśnie piszę tutaj, a jak ktoś nie chce to po prostu nie odpisuje; i niezdrowo jest oceniać ludzi swą miarą, iż im się nie chce nie stąd to płynie... a jeżeli post rozrasta się do niebotycznych rozmiarów to dobrze, znaczy że jest problem nad którym warto posiedzieć itd.


pozdrawiam


zniechęcony
thx wielkie
scanner
[b]Proszę się trzymać tematu wątku.
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.