Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zatwierdzenie newsa
#1
Cześć. To znowu ja^^
Mam system komentarzy, i chcę dodać do niego system zatwierdzania
Znalazłem takie teksty:
Cytat:ja bym to zrobil tak:
dodalbym do tabeli w bazie nowe pole o nazwie show
i jakby ktos dodal text to w polu show byloby false a jakbys to zatwierdzil zmienilo by sie na true a tam gdzie bys to wyswietal ustawil bys to tak aby wyswietlalo newsy tylko tam gdzie w polu show jest true,a w panelu admina w kategorii newsy do zatwierdzenia wyswietlal bys newsy gdzie w polu show maja false ;]
oczywiscie opisalem to na mysql'u

np w formularzu ktory wysyla newsa do zatwierdzenia do zmiennej w adresie dodalbys show=false a pozniej tam gdzie bys to wsadzal do mysqla to do pola show dalbys $_GET['zmienna'], a pozniej jakbys to zatwierdzil np linkiem to do linka dodalbys show=true i updateowalbys baze i wsadzil tam to :]

No i chcę zrobić, że pojawiają się tylko teksty na stronie z wartością w show "Tak"
No i w panelu opcja, Zatwierdz, no i wpisuję się w tabeli napis Tak

Chyba że ktoś ma lepszy pomysł
Odpowiedz
#2
GeoAce5 podstawy php i zapytań sql wystarczą, zapytanie select na koniec dajesz where zatwierdz = 1;
i komentarze które jedynki w tam nie mają nie będą wyświetlone

zaś w panelu admina zrobisz sobie update tabel i tam będziesz dopisywał im 1 tym które chcesz. Gotowców nie znajdziesz tutaj na forum raczej Wink
Odpowiedz
#3
Już ktoś mówił. Dopiero zaczynam z PHP Big Grin
A jakoś nakierować możesz ?
TO jest kod który 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();
?>

A z Panel admina sobie poradzę, bo nakierowałeś z update tabelami.
Odpowiedz
#4
SELECT * FROM articles_categories WHERE id='$id'
przerabiasz na:
SELECT * FROM articles_categories WHERE id='$id' and zatwierdzenie = 1

na ludzki wyciągasz * czyli wszystko z tabelki articles_categories w której id jest równe zmiennej $id oraz pole zatwierdzenie jest równe 1

ale ja jestem samoukiem wiec nie czepiać sie prosze sposobu w jaki to opisuje, po ludzku potrzebujesz wyświetlić artykuł którego id jest równe $id a tutaj dodatkowy warunek czyli "and" że ten artykuł musi mieć zatwierdzenie = (równe) 1 tylko gdy to wpiszesz wywali bład bo w bazie danych musisz dodać dodatkową kolumne zatwierdzanie i tam będzie napisane albo 1 albo 0 w zależności czy artykuł ma wyświetlić czy nie

i to sie tyczy każdego zapytania tam, wszędzie gdzie pobierasz artykuł dodajesz na końcu (ale przed order by) info że zatwierdzenie = 1;

ucz sie i szukaj w tutkach jest ich pełno, zapytania mysql i instrukcje warunkowe w php (czyli if)
Odpowiedz
#5
Mam dodatkową kolumnę 'show'
Możesz jaśniej ?^^
Odpowiedz
#6
no to zamiast zatwierdz = 1 wpiszesz show = 1
SELECT * FROM articles_categories WHERE id='$id' and show = 1

i artykuł ci zwróci tylko wtedy gdy ten będzie miał show równe 1 jeśli będzie show równe 0 wyniku nie będzie
Odpowiedz
#7
w kolumnie show masz mieć tylko wartość 1=pokaz 0=niepokazuj
czyli wychodzi na to że 1=zatwierdzone 2=niezatwierdzone
Odpowiedz
#8
No tak.
Panel admina już prawie, pokazuję mi jaka wartość, ale nie nadpisuje. O to kawałek kodu, odp. za edycje:
Kod:
// ZATWIERDZANIE ARTYKUŁU
function artykuly_show($id)
{
    // jeśli zostanie naciśnięty przycisk "Edytuj"
    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']);
        $show = mysql_real_escape_string($_POST['show']);
        $tresc = mysql_real_escape_string($_POST['tresc']);
        // pobieramy id kategorii
        $kategoria = $_POST['kategoria'];

        // tworzymy zapytanie
        $query = "UPDATE `articles` SET tytul='$tytul', show='$show', tresc='$tresc', id_cat='$kategoria' WHERE id='$id'";

        // jeśli zapytanie zostanie poprawnie wykonane to wyświetlamy komunikat
        if(mysql_query($query)) echo 'Pomyslnie wyedytowano artykuł! <a href="admin.php">wróć</a>';
        return 1; // zapobiegamy wyświetlania się formularza
    }
    // wyświetlamy napis
    echo '<b>Edytuj artykuł</b>';

    // pobieramy dane z artykułu który będziemy edytować
    $result = mysql_query("SELECT * FROM articles WHERE id='$id'");

    // tutaj nie ma while ponieważ jest pobierany tylko jeden rekord
    $row = mysql_fetch_array($result);

    // wyświetlamy prosty formularz z wypełnionymi danymi
    echo '<form action="" method="POST">
    Tytuł: <br />
    <input type="text" name="tytul" style="width:400px;" value="'.stripslashes($row['tytul']).'"><br />
    Show: <br />
    <input type="text" name="show" style="width:400px;" value="'.stripslashes($row['show']).'"><br />
    Kategoria: <br />
    <select name="kategoria">';
    // wykonanie zapytania na kategorie artykułów i wyświetlenie ich w rozwijanym menu
    $result2 = mysql_query("SELECT * FROM articles_categories");
    while($row2 = mysql_fetch_array($result2))
    {
        echo '<option value="'.$row2['id'].'"';
        // zaznacza aktualna kategorie artykulu
        if($row2['id']==$row['id_cat']) echo ' selected';
        echo '>'.stripslashes($row2['tytul']).'</option>';
    }
    echo '</select><br />
    Tresć: <br />
    <textarea name="tresc" style="width:400px;height:200px;">'.stripslashes($row['tresc']).'</textarea><br />
    <input type="submit" name="ok" value="Edytuj">
    </form>';
}


Dodam że nic się nie edytuje, ale jak dam tak jak było, czyli bez tego show to dziala, tylko jak dodam te show.
Odpowiedz
#9
a jaki błąd wywala skoro nie nadpisuje?
zrób sobie obsługę błędów to będziesz lepiej wiedział zawsze gdzie ci wywala i co wywala
np
Kod:
$wynik=mysql_query($query) or die(mysql_error());

zaraz za jakąś funkcją nie dajesz średnika tylko wklepujesz jeszcze "or die('jakiś błąd');" w naszym przypadku pokaże błąd mysql mysql_error()
Odpowiedz
#10
Skrypt edytuje normalnie, gdy przerobię zmienne i tabele na show, wtedy nie nadpisuje
Odpowiedz


Podobne wątki…
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  edycja newsa (php) agGresSive 1 2,258 31-08-2011, 19:07
Ostatni post: Dombas

Skocz do:


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