Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
Dziwne.. - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Początkujący webmaster (https://www.webmastertalk.pl/forum-poczatkujacy-webmaster)
+--- Wątek: Dziwne.. (/thread-dziwne)



Dziwne.. - GeoAce5 - 18-05-2012

Witam.
Mam dziwny problem..
Mam skrypt, który wyświetla newsy, gdy dodam pierwsze newsy jest normalnie, gdy zaczne dodawać następne się strasznie mieszają.

Czyli jak dodam tych kilka jest ok, najnowsze u gory, potem jak dodaje następne się coś pieprzy, i jak dodam tekst, zamiast pokazywać się u góry, to się pokazuje w środku..

Kod co wyświetla:
Kod:
<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();
// Łączymy się z bazą
require 'config.php';
polaczSQL();
// przerabiamy dane z GETa na liczbę (zabezpieczenie)
$id = (int)$_GET['id'];

// tworzymy zapytanie na kategorię, żeby wydobyć z niej nazwę
$result = mysql_query("SELECT * FROM articles_categories WHERE id='$id'");
// przerabiamy na tablicę
$row = mysql_fetch_array($result);


{
  
//Wyświetlamy wpisy
}
// i wyświetlamy nagłówek
echo '<h2>'.stripslashes($row['tytul']).'</h2>';
// tworzymy zapytanie na artykuły z tej kategorii
$result = mysql_query("SELECT * FROM articles WHERE id_cat='$id' ORDER BY tytul ASC");
// i je wyświetlamy
while($row = mysql_fetch_array($result))
{
echo '<img src="images/pasek.png" alt="Tekst" /><br>';
// wyświetlanie oceny
echo '<a href="art.php?id='.$row['id'].'"><b>'.stripslashes($row['tytul']).'</b></a> ('.date("d.m.Y, H:i", $row['data']).')<br />';
echo '<a href="art.php?id='.$row['id'].'"><b>Oceń.. </b></a>';
echo '<h3>Ocena: ';

// jeśli nie było jeszcze żadnej oceny to wyświetla 0, w przeciwnym wypadku zaokrąglamy do 2 miejsc po przecinku dzielenie sumy/ilość ocen
echo ($row['ocen']==0) ? 0 : round(($row['suma']/$row['ocen']),2);
echo '</h3>';
    echo stripslashes($row['opis']).'<br /><br />';
}


// koniec buforowania
ob_end_flush();
?>

Kod który dodaje
Kod:
<?php
// rozpoczęcie buforowania (jest to potrzebne by nie mieć błędów typu headers already sent)
ob_start();
// start sesji
session_start();
//Łączymy się z bazą
require 'config.php';
polaczSQL();

// nagłówek
echo '<a href="dodaj.php?page=artykuly_dodaj"><h2>Dodaj tekst</h2></a>';
{
    // przy odpowieniej stronie wyświetlamy daną funkcję
    switch($_GET['page'])
    {
        // dodawanie artykułu
        case 'artykuly_dodaj':
            artykuly_dodaj();
    }
}

// DODAWANIE ARTYKUŁU
function artykuly_dodaj()
{
    // jeśli zostanie naciśnięty przycisk "Dodaj"
    if(isset($_POST['ok']))
    {
        // filtrujemy dane aby zapytanie do mysql nam się nie psuło, tj. zamieniamy ` na \`
        $tytul = mysql_real_escape_string($_POST['tytul']);
        $opis = mysql_real_escape_string($_POST['opis']);
        $tresc = mysql_real_escape_string($_POST['tresc']);
        // pobieramy id kategorii
        $kategoria = $_POST['kategoria'];
        // pobieramy date
        $data = time();

        // tworzymy zapytanie
        $query = "INSERT INTO `articles` (`tytul`, `opis`, `tresc`, `id_cat`, `data`, `suma`, `ocen`) VALUES ('$tytul', '$opis', '$tresc', '$kategoria', '$data', '0', '0')";

        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) echo 'Pomyślnie dodano tekst! <a href="dodaj.php">wróć</a>';
        return 1; // zapobiegamy wyświetlania się formularza
    }
    // wyświetlamy napis
    echo '<b>Dodaj nowy tekst</b>';
    // wyświetlamy prosty formularz
    echo '<form action="" method="POST">
    Tytuł: <br />
    <input type="text" name="tytul" style="width:400px;"><br />
    Treść: <br />
    <input type="text" name="opis" style="width:400px;"><br />
    Kategoria: <br />
    <select name="kategoria">';
    // wykonanie zapytania na kategorie artykułów i wyświetlenie ich w rozwijanym menu
    $result = mysql_query("SELECT * FROM articles_categories");
    while($row = mysql_fetch_array($result))
    {
        echo '<option value="'.$row['id'].'">'.stripslashes($row['tytul']).'</option>';
    }
    echo '</select><br />
    Opis: <br />
    <textarea name="tresc" style="width:400px;height:200px;"></textarea><br />
    <input type="submit" name="ok" value="Dodaj">
    </form>';
}

// rozłączenie z bazą danych

// koniec buforowania
ob_end_flush();
?>



RE: Dziwne.. - camelrafal - 18-05-2012

nie chciało mi się całego kodu przeglądać i nie wiem na jakiej zasadzie działa twoja baza ale z tego co widze to problem masz w sortowaniu chyba
sortowanie to zadanie sql więc masz złe zapytanie sql
możliwe że sortujesz według złej pozycji
powinieneś sortować przez id raczej
ORDER BY id

tutaj chyba jest błąd:
Kod:
// tworzymy zapytanie na artykuły z tej kategorii
$result = mysql_query("SELECT * FROM articles WHERE id_cat='$id' ORDER BY tytul ASC");
tutaj masz jakies sortowanie po tytulach (dziwne)
moze zamiast tytul wpisz id to bedzie ci wyswietlało według kolejności dodania


RE: Dziwne.. - GeoAce5 - 18-05-2012

Ok, poradziłem sobie, złe sortowanie było