Ocena wątku:
- 0 głosów - średnia: 0
- 1
- 2
- 3
- 4
- 5
Zatwierdzenie newsa
|
Liczba postów: 35
Liczba wątków: 8
Dołączył: 18-05-2012
Reputacja:
0
18-05-2012, 19:10
(Ten post był ostatnio modyfikowany: 18-05-2012, 19:11 przez GeoAce5.)
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ł
Liczba postów: 367
Liczba wątków: 32
Dołączył: 22-04-2009
Reputacja:
9
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
Liczba postów: 35
Liczba wątków: 8
Dołączył: 18-05-2012
Reputacja:
0
Już ktoś mówił. Dopiero zaczynam z PHP 
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.
Liczba postów: 367
Liczba wątków: 32
Dołączył: 22-04-2009
Reputacja:
9
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)
Liczba postów: 35
Liczba wątków: 8
Dołączył: 18-05-2012
Reputacja:
0
Mam dodatkową kolumnę 'show'
Możesz jaśniej ?^^
Liczba postów: 367
Liczba wątków: 32
Dołączył: 22-04-2009
Reputacja:
9
18-05-2012, 20:24
(Ten post był ostatnio modyfikowany: 18-05-2012, 20:26 przez Radian.)
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
Liczba postów: 252
Liczba wątków: 10
Dołączył: 06-02-2012
Reputacja:
14
w kolumnie show masz mieć tylko wartość 1=pokaz 0=niepokazuj
czyli wychodzi na to że 1=zatwierdzone 2=niezatwierdzone
Liczba postów: 35
Liczba wątków: 8
Dołączył: 18-05-2012
Reputacja:
0
18-05-2012, 22:23
(Ten post był ostatnio modyfikowany: 18-05-2012, 22:32 przez GeoAce5.)
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.
Liczba postów: 252
Liczba wątków: 10
Dołączył: 06-02-2012
Reputacja:
14
18-05-2012, 22:38
(Ten post był ostatnio modyfikowany: 18-05-2012, 22:41 przez camelrafal.)
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()
Liczba postów: 35
Liczba wątków: 8
Dołączył: 18-05-2012
Reputacja:
0
Skrypt edytuje normalnie, gdy przerobię zmienne i tabele na show, wtedy nie nadpisuje
|
Użytkownicy przeglądający ten wątek: 1 gości
|
|
Sponsorzy i przyjaciele
|
|
|