Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
[PHP][MYSQL] Niepoprawne działanie skryptu z komentarzami i stronicowaniem komentarzy
#1
Witam,

Prosiłbym o pomoc w rozwiązaniu problemu ze skryptem dodającym komentarze i stronicowaniem.
Problem polega na tym, że skrypt dodający komentarze wg mnie działa, bo dane z komentarza zapisują się w bazie danych, ale nie wyświetla się komentarz pod formularzem dodającym komentarz. Dopiero jak odświeżę stronę to wtedy widać go.

Drugi problem jest źle działajace stronicowanie, gdzie prawidłowo jest wyświetlana liczba komentarzy do danego przepisu, ale nie działają linki w stronicowaniu: [1] [2] [3].... .

Na stronie, która wyświetla szczegóły przepisu i komentarze doi niego mam:

Kod:
<?php
            
            if(isset($_GET['strona_komentarzy'])==true)
            $strona=(($_GET['strona_komentarzy']-1)*3);
            else
                $strona=0;
            
            //pobranie wszystkich komentarzy i wyświetlanie ich na stronie


//wyciągamy wszystkie komentarze dotyczące konkretnego przepisu - z id przepisu
$wyniki=mysql_query("SELECT * FROM komentarze WHERE id_przepisu={$_GET['id_przepisu']}");
echo mysql_error();

echo "<div id='komentarze' style='margin-left: 80px; margin-right: 80px;'>";//zle dziala

$licznik=0;

while($komentarz=mysql_fetch_assoc($wyniki))//pokazujeje komentarze jedne pod drugimi
{
    if($licznik%2==0)//parzyste
    {
        echo "<span style='color: blue; '>{$komentarz['komentarz_przepisu']}</span>";
    }    
    else //nieparzyste
    {
        echo "<span style='color: red;'>{$komentarz['komentarz_przepisu']}</span>";    
    }
    $licznik++;
    
    echo "<hr style='color: red; '>";
}

echo "</div>";




//stronicowanie- zle dziala
                    
                    //zapytanie ktore liczy nam ile jest przepisów
                    $wynik=mysql_query("SELECT count(*) as ilosc FROM komentarze WHERE id_przepisu={$_GET['id_przepisu']}");
                    
                    $komentarze=mysql_fetch_assoc($wynik);
                    
                    echo "<span style='margin-left: 80px;'>Komentarzy</span><span style='margin-left:10px; color: green;'>( {$komentarze['ilosc']} )</span>";
                    
                    $liczba_stron=ceil($komentarze['ilosc']/3); //liczba komentarzy/ilosc komentarzy i zaokraglac w gore-ceil (floor-zaokraglenie w dol)
                    
                    echo "<span class='stronicowanie' style=' margin-left: 10px;'>";
                    
                    $licznik=1;
                    
                    while($licznik<=$liczba_stron) //wyswietli tyle razy ile mamy liczbe stron
                    {
                    echo "<a href='pokaz_przepis.php?strona_komentarzy=$licznik#komentarze' style='color: red; margin-left: 10px;'>[ {$licznik} ]</a>";//numery grup komentarzy, #komentarze- na koncu linku przenosi namw miejsce wystapienia diva (div komentarze), i trzeba objac wszystkie komentarze w diva
                    
                    $licznik++;
                    }
                    
                    echo "</span>";
                    
                    echo "</div>";


?>

Program dodający komentarz wygląda następująco:

Kod:
<?php

mysql_connect('localhost','root','haslo');
mysql_select_db('przepisy_kulinarne_mp');
mysql_query("SET NAMES UTF8");//polaczenie w utf8

//zeby nie wstawiac pustych komentarzy-jesli tresc byla pusta to exit
if($_GET['komentarz_przepisu']=='')
    exit();

mysql_query("INSERT INTO komentarze(komentarz_przepisu,id_przepisu) VALUES('{$_GET['komentarz_przepisu']}',{$_GET['id_przepisu']})");//odbieramy id z pola ukrytegio, komentarz razem z przepisem  bedzie on przekazany

//powoduje automatyczne przensozenie do pliku pokaz_przepis bez odswierzania-nie mozna nic wyswietlac-ani echa, ani include,zadnego kodu html nie daje sie

echo "INSERT INTO komentarze(komentarz_przepisu,id_przepisu) VALUES('{$_GET['komentarz_przepisu']}',{$_GET['id_przepisu']})";


header("Location: pokaz_przepis.php");

?>

Tabela przepisy wygląda następująco:

Kod:
id_przepisu, autor_przepisu, id_kategorii, id_rodzaju_kuchni, czas_wykonania, tytul_przepisu, skladniki, tresc_przepisu, czas_przepisu, id_komentarza

Tabela komentarze_przepisu jest taka:

Kod:
id_komentarza, komentarz_przepisu, id_przepisu

Pozdrawiam,

martinstw
Odpowiedz
#2
Trochę to zakręciłeś. Musiałbym zobaczyć cały kod i to co wyświetla przeglądarka. w sprawie nie wyświetlania przychodzi mi na myśl 2 rozwiązani.

Po 1 nie możesz stosować header() bo przed jego wywołaniem nie może zostać nic wpisane do bufora wysyłającego zawartość strony. Dlatego nie możesz użyć include ani echo itd. wydaje mi się że lepszym rozwiązaniem jest odpuszczenie header() na rzecz include(). wtedy zawartość tamtego pliku poprostu wstawisz. może to również rozwiązać problem niepojawiania się ostatniego komentarza. Jeśli nie to jeszcze możesz po dodaniu komentarza zamknąć połączenie z bazą mysql_close().

Co do linków do stronnicowania to prześlij co widać w przeglądarce. przeanalizuj to w firebug lub sprawdź kod strony jaki dostaniesz z serwera to będzie wtedy można stwierdzić co jest nie tak. jest tam znacznik <a> więc powinien być link. href wskazuje na dobry plik więc trzeba przeanalizować po stronie przeglądarki co jest nie tak.

Na koniec mam rade:
isset($_GET['strona_komentarzy'])==true
można zastąpić
isset($_GET['strona_komentarzy'])
ładniejsze i czytelniejsze. po to jest napisane isset (jest ustawione) że nie trzeba pisać ==true.
http://webmaster.na6.waw.pl
Odpowiedz
#3
(26-11-2012, 03:39)andrzejhi napisał(a): Trochę to zakręciłeś. Musiałbym zobaczyć cały kod i to co wyświetla przeglądarka. w sprawie nie wyświetlania przychodzi mi na myśl 2 rozwiązani.

Po 1 nie możesz stosować header() bo przed jego wywołaniem nie może zostać nic wpisane do bufora wysyłającego zawartość strony. Dlatego nie możesz użyć include ani echo itd. wydaje mi się że lepszym rozwiązaniem jest odpuszczenie header() na rzecz include(). wtedy zawartość tamtego pliku poprostu wstawisz. może to również rozwiązać problem niepojawiania się ostatniego komentarza. Jeśli nie to jeszcze możesz po dodaniu komentarza zamknąć połączenie z bazą mysql_close().

Co do linków do stronnicowania to prześlij co widać w przeglądarce. przeanalizuj to w firebug lub sprawdź kod strony jaki dostaniesz z serwera to będzie wtedy można stwierdzić co jest nie tak. jest tam znacznik <a> więc powinien być link. href wskazuje na dobry plik więc trzeba przeanalizować po stronie przeglądarki co jest nie tak.

Na koniec mam rade:
isset($_GET['strona_komentarzy'])==true
można zastąpić
isset($_GET['strona_komentarzy'])
ładniejsze i czytelniejsze. po to jest napisane isset (jest ustawione) że nie trzeba pisać ==true.

Co do header to chciałbym go mieć, ponieważ jego działanie jest mi potrzebne.
Co do stroniocwania to wygląda ono tak:
Komentarzy( 13 )[ 1 ][ 2 ][ 3 ][ 4 ][ 5 ]
czyli prawidłowo sumuje liczbę komentarzy dla przepisu i widoczne są linki, ale po kliknięciu w link nie działa przechodzenie do wyświetlania kolejnej grupy komentarzy.
Odpowiedz
#4
No więc jeśli jest widoczny link to znaczy to że ścieżka w nim jest błędna. Ja staram sie gdy mam echo skladac je z uzyciem kropek. Tak jest dla mnie czytelniej i ciezko mi stwierdzic ktory fragment kodu u Ciebie jest zły.
Rozumiem ze link jaki jest tworzony jest dobry czyli pokaz_przepis.php?strona_komentarzy=2#komentarze i ze jak to wpiszesz recznie w przegladarketo tez nie działa. Jeśli tak to znaczy ze jest cos z początkie kodu php. Moze byc złe sprawdzanie tablicy get. Czyli że nie widzi ze get dostaje strona_komentarzy i zawszewyświetla 0.
http://webmaster.na6.waw.pl
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Jak sprawdzić czy adres www znajduje sie w bazie mysql? jarekcda 8 9,041 13-05-2017, 01:02
Ostatni post: miketodson255
  Limit czasu wykonywania skryptu jasikj 3 5,092 23-09-2013, 14:26
Ostatni post: Engine
  Optymalizacja MySQL-a tomek_00 1 3,932 01-09-2013, 13:31
Ostatni post: hieroshima
  [MySQL] Struktura bazy dla słownika msx83 2 3,931 24-08-2013, 16:26
Ostatni post: msx83
  Komunikacja PHP z MySQL na serwerze pawstrze 5 6,457 16-07-2013, 15:58
Ostatni post: Engine

Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości
Sponsorzy i przyjaciele
SeoHost.pl