bolus150
5.12.2014, 17:07:42
Witam, mam taki problem. Jak połączyć logowanie, że dany użytkownik jak jest zalogowany to dodać może jakiegoś newsa. Mam 2 tabele (user,news) Da się to na jednej zrobić? Chciałbym zrobić coś takiego, że będzie Autor i np nick kogos z tabeli(user) a wiadomość żeby zapisywała się w tabeli (news) idzie tak zrobić i czy programista amator da sobie z tym rade?
Programista amatro jak najbardziej, wystarczy chwilę poczytać. 2 tabele niezbedne są do tego.
1) user: id_usera, login, password
2) news: id_newsa, id_usera, content, date
- rejestracja (jeżeli jej nie masz oczywiście), czyli dodajesz użytkowników do bazy danych.
- logowanie, czyli sprawdzasz czy taki użytkownik z takim loginem i hasłem jest w bazie, jeśli jest dajesz do zmiennej sesyjnej ID użytkownika
- wylogowanie, czyli niszczysz wszystko co jest w sesji
- jeśli to wyżej wszystko działa, dla osób zalogowanych pokazujesz magiczny formularz dodawania newsów
- sprawdzasz czy dane zostały przesłane (z formularza) i dodajesz wpis do tabeli gdzie id_usera wstawiasz id użytkownika z sessji
- skoro masz dodawanie newsów, możesz teraz elegancko wyświetlić newsy z bazy danych łącząc dwie tabele
Wszystkiego dowiesz się w manualu PHP oraz mySQL. Jeśli masz jakiś problem, to z pewnością tutaj Ci pomogą.
bolus150
5.12.2014, 18:12:42
Ok poradziłem sobie, a jak zrobić teraz, żeby edytować mógł tylko użytkownik który dodał danego newsa?
Cytat(bolus150 @ 5.12.2014, 18:12:42 )

Ok poradziłem sobie, a jak zrobić teraz, żeby edytować mógł tylko użytkownik który dodał danego newsa?
Sprawdziłeś czy id_usera który dodał newsa jest takie samo jak id użytkownika w sesji?
nospor
5.12.2014, 18:15:06
if ($id_zalogowanego_usera != $id_usera_ktory_dodal_dany_news) {
}
bolus150
5.12.2014, 18:15:23
Mam taki kod, może mi ktoś powiedzieć jeszcze dlaczego dodaje 2 rekordy do bazy na raz? jeden pusty, a w drugim jest to co wpisze do okienka na stronie.
echo '<form action="" method="post">
<br/>Autor <input type="text" value="'.$user_data['user_name'].'" disabled="true"><br>
Tytuł: <input type="text" name="tytul">
<br/>Treść <textarea name="tresc" ></textarea>
<br/><input type="submit" value="Dodaj"></form>'
?>
<?php
include("polacz.php");
$query = mysql_query("insert into news values('','".$_POST['tytul']."',now(),'".$user_data['user_name']."','".$_POST['tresc']."')"); ?>
nospor
5.12.2014, 18:16:29
Bo dodawanie masz robic dopiero wtedy, gdy wyslano formularz.
if (!empty($_POST['tytul'])) { //dopiero tutaj dodawanie
}
Bo wywołujesz dodanie do bazy nawet jak nie masz danych. Potrzbujesz czegoś takiego:
if(isset($_POST['tresc'])) { $query = mysql_query("insert into news values('','".$_POST['tytul']."',now(),'".$user_data['user_name']."','".$_POST['tresc']."')"); }
bolus150
5.12.2014, 23:06:51
Tym razem zmagam się z plikiem edit_news.php
Może mi ktoś powiedzieć dlaczego nie chcę mi się nawet zalogować? Jako użytkownik. Chciałbym to delikatnie przekształcić, żeby były newsy przypisane do danego uzytkownika i zeby tylko ten uzytkownik mógł usuwać i edytować.
echo '<b>Newsy:</b><br>'; $link=mysql_query('SELECT * FROM news ORDER BY id desc'); {
echo '<b>'.$wiersz['tytul'].'</b>'; echo '<a href="index.php?newsy=edytuj&id='.$wiersz['id'].'">Edytuj</a>'; echo '<a href="index.php?newsy=usun&id='.$wiersz['id'].'">Usun</a>'; };
if(isset($_GET['newsy']) && $_GET['newsy']=='edytuj' && isset($_GET['id'])) {
$id=$_GET['id'];
$link=mysql_query("SELECT * FROM news WHERE id='$id'");
echo '<b>Edytuj newsa:</b><br>'; echo '<form method="POST" action="index.php?newsy=wyedytuj&id='.$wiersz['id'].'"> Tytul:<br>
<input type="text" name="tytul" size="64" value="'.$wiersz['tytul'].'"><br>
Tresc:<br>
<textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea><br>
<input type="submit" value="EDYTUJ">
</form>';
}
elseif(isset($_GET['newsy']) && $_GET['newsy']=='dopisz') {
$tytul=$_POST['tytul'];
$tresc=$_POST['tresc'];
$data=date('d.m.Y, H:i');
mysql_query("UPDATE `karol_piekarski_cba_pl`.`news` SET `nazwa` = '$nazwa', `tresc` = '$tresc' WHERE `news`.`id` ='$id';"); echo 'Pomyslnie dodalem newsa o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b> z datą'.$data.'.';
}
elseif(isset($_GET['newsy']) && $_GET['newsy']=='wyedytuj' && isset($_GET['id'])) {
$tytul=$_POST['tytul'];
$tresc=$_POST['tresc'];
$id=$_GET['id'];
mysql_query("UPDATE `karol_piekarski_cba_pl`.`news` SET `nazwa` = '$nazwa', `tresc` = '$tresc' WHERE `news`.`id` ='$id';"); echo 'Pomyslnie wyedytowalem newsa! <br> Jego nowy tytul to: <b>'.$tytul.'</b>, a tresc: <b>'.$tresc.'</b>';
}
elseif(isset($_GET['newsy']) && $_GET['newsy']=='usun' && isset($_GET['id'])) {
$id=$_GET['id'];
echo 'Pomyslnie usunalem newsa numer '.$id.'!';
}
?>