Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Logowanie + system newsów
Forum PHP.pl > Forum > Przedszkole
bolus150
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?
Rysh
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
Ok poradziłem sobie, a jak zrobić teraz, żeby edytować mógł tylko użytkownik który dodał danego newsa?
Rysh
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
  1. if ($id_zalogowanego_usera != $id_usera_ktory_dodal_dany_news) {
  2. echo 'Spadaj dziadu';
  3. }
bolus150
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.
  1. echo '<form action="" method="post">
  2. <br/>Autor <input type="text" value="'.$user_data['user_name'].'" disabled="true"><br>
  3. Tytuł: <input type="text" name="tytul">
  4. <br/>Treść <textarea name="tresc" ></textarea>
  5. <br/><input type="submit" value="Dodaj"></form>'
  6. ?>
  7.  
  8. <?php
  9. include("polacz.php");
  10. $query = mysql_query("insert into news values('','".$_POST['tytul']."',now(),'".$user_data['user_name']."','".$_POST['tresc']."')");
  11. ?>
nospor
Bo dodawanie masz robic dopiero wtedy, gdy wyslano formularz.

  1. if (!empty($_POST['tytul'])) {
  2. //dopiero tutaj dodawanie
  3. }
Rysh
Bo wywołujesz dodanie do bazy nawet jak nie masz danych. Potrzbujesz czegoś takiego:
  1. if(isset($_POST['tresc'])) {
  2. $query = mysql_query("insert into news values('','".$_POST['tytul']."',now(),'".$user_data['user_name']."','".$_POST['tresc']."')");
  3. }
bolus150
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ć.
  1. echo '<b>Newsy:</b><br>';
  2. $link=mysql_query('SELECT * FROM news ORDER BY id desc');
  3. while($wiersz=mysql_fetch_array($link))
  4. {
  5. echo '<b>'.$wiersz['tytul'].'</b>';
  6. echo ' - ';
  7. echo $wiersz['data'];
  8. echo ' - ';
  9. echo '<a href="index.php?newsy=edytuj&id='.$wiersz['id'].'">Edytuj</a>';
  10. echo ' - ';
  11. echo '<a href="index.php?newsy=usun&id='.$wiersz['id'].'">Usun</a>';
  12. echo "<br>\n";
  13. };
  14. if(isset($_GET['newsy']) && $_GET['newsy']=='edytuj' && isset($_GET['id']))
  15. {
  16. $id=$_GET['id'];
  17. $link=mysql_query("SELECT * FROM news WHERE id='$id'");
  18. $wiersz=mysql_fetch_array($link);
  19.  
  20. echo '<b>Edytuj newsa:</b><br>';
  21. echo '<form method="POST" action="index.php?newsy=wyedytuj&id='.$wiersz['id'].'">
  22. Tytul:<br>
  23. <input type="text" name="tytul" size="64" value="'.$wiersz['tytul'].'"><br>
  24. Tresc:<br>
  25. <textarea rows="5" name="tresc" cols="42">'.$wiersz['tresc'].'</textarea><br>
  26. <input type="submit" value="EDYTUJ">
  27. </form>';
  28. }
  29. elseif(isset($_GET['newsy']) && $_GET['newsy']=='dopisz')
  30. {
  31. $tytul=$_POST['tytul'];
  32. $tresc=$_POST['tresc'];
  33. $data=date('d.m.Y, H:i');
  34.  
  35. mysql_query("UPDATE `karol_piekarski_cba_pl`.`news` SET `nazwa` = '$nazwa', `tresc` = '$tresc' WHERE `news`.`id` ='$id';");
  36. echo 'Pomyslnie dodalem newsa o tytule: <b>'.$tytul.'</b> i o treści: <b>'.$tresc.'</b> z datą'.$data.'.';
  37.  
  38. }
  39. elseif(isset($_GET['newsy']) && $_GET['newsy']=='wyedytuj' && isset($_GET['id']))
  40. {
  41. $tytul=$_POST['tytul'];
  42. $tresc=$_POST['tresc'];
  43. $id=$_GET['id'];
  44. mysql_query("UPDATE `karol_piekarski_cba_pl`.`news` SET `nazwa` = '$nazwa', `tresc` = '$tresc' WHERE `news`.`id` ='$id';");
  45. echo 'Pomyslnie wyedytowalem newsa! <br> Jego nowy tytul to: <b>'.$tytul.'</b>, a tresc: <b>'.$tresc.'</b>';
  46.  
  47. }
  48. elseif(isset($_GET['newsy']) && $_GET['newsy']=='usun' && isset($_GET['id']))
  49. {
  50. $id=$_GET['id'];
  51.  
  52. mysql_query("DELETE FROM news WHERE id='$id'");
  53. echo 'Pomyslnie usunalem newsa numer '.$id.'!';
  54.  
  55. }
  56. ?>
  57.  
  58.  
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.