Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP+SQL]System pw
Forum PHP.pl > Forum > Przedszkole
marcio
Witam pisze sobie system pw tzn jest skonczony ale nie dziala tak jak chce(mniej wiecej)
Mam tabele pw z 7 kolumnami
  1. <?php
  2. id //wiadomosc auto incremet primary key
  3. tytul // wiadomo
  4. tresc // wiadomo
  5. nadawca // do kogo jest wiadomosc
  6. odbiorca // od kogo jest wiadomosc
  7. data // data wyslania
  8. stan // stan moze byc nadana jesli odbiorca jej nie przeczytal lub przeczytana jesli od
    biorca przeczytal
  9. ?>

Wiec wysylanie pw dziala bez zarzotow pw dochodza widac poprawa ilosc nieprzeczytanych etc problem pojawia sie gdy chce usunac wiadomosc
Powiedzmy user marcio wysyla wiadomosc do user'a ktos wiec kolumna bedzie tak wygladac
1|tutaj tytul|tutaj tresc|marcio|ktos|jakas data|nadana
Czyli jak widac odbiorca KTOS jeszcze nie odczytal wiadomosci smile.gif i mam takie zarzadzanie(podaje tylko fragment)
  1. <?php
  2. echo('<td class="contents">
  3. <a href="#"><h2>Zarzadzanie PW ['.$_COOKIE['name'].']</h2></a>
  4. <div>');
  5.  
  6. $zap = ('select * from pw where odbiorca = "'.mysql_real_escape_string($_COOKIE['name']).'" order by id desc');
  7.  $ris = mysql_query($zap, $db) or die(mysql_error());
  8.  
  9. while($dane = mysql_fetch_assoc($ris)) {
  10.  
  11. $tresc = substr($dane['tresc'], 0, 15);
  12.  
  13. <div>
  14. <center><b>'.$dane['nadawca'].' | '.$dane['odbiorca'].' | '.$dane['tytul'].' | '.$tresc.'...</b>
  15. <a href="?action=usun&id='.$dane['id'].'&autor='.$dane['nadawca'].'"><input type="submit" value="Usun" style="background-color:#ECECEC; color:#000000; border: 1px solid blue;"></a>
  16. <a href="czyt_pw.php?action=pokaz&id='.$dane['id'].'&autor='.$dane['nadawca'].'"><input type="submit" value="Pokaz" style="background-color:#ECECEC; color:#000000; border: 1px solid blue;"></a> 
  17. <a href="pw.php"><input type="submit" value="Odpisz" style="background-color:#ECECEC; color:#000000; border: 1px solid blue;"></a>');
  18. }
  19.  
  20. if(mysql_num_rows($ris) == 0) echo('<center><b style="color:#f00"><big>Nie masz wiadomosci w skrzynce</big></b></center>');
  21.  
  22. echo(</div></td>);
  23. ?>

Wiec ktos klika na button pokaz i przenosi nas do pliku czyt_pw.php(kawalek jego zawartosci) Najwazniejsz jego czesc za zmiena warotsci kolumny STAN
  1. <?php
  2. echo('<td class="contents">');
  3.  
  4.  $query2 = ('select * from pw where id = '.(int)$_GET['id'].' AND nadawca = "'.mysql_real_escape_string($_GET['autor']).'"');
  5. $query3 = ('update pw set stan = "przeczytane" where id = '.(int)$_GET['id'].' AND nadawca = "'.mysql_real_escape_string($_GET['autor']).'"'); 
  6. $ris = mysql_query($query2, $db) or die(mysql_error());
  7.  $ris1 = mysql_query($query3, $db);
  8.  
  9. while($dane = mysql_fetch_assoc($ris)) {
  10.  
  11. echo('<a href="#"><h2>'.$dane['tytul'].'</h2></a>
  12. <div>
  13. '.stripslashes($dane['tresc']).'
  14. <br><br>
  15. <li class="date">Data dodania: '.$dane['data'].'</li>
  16.  
  17. <li class="author">Autor: '.$dane['nadawca'].'</li>
  18. </div>
  19. <br><br>');
  20. }
  21.  
  22. echo('</div></td><td class="menu">');
  23. ?>

I dotad dziala

Teraz powiedzmy ze user marcio czyli nadawca chce usunac wiadomosc z wyslanych lecz nie moze poniewaz zrobilem tak skrypt ze dopoki odbiorca nie przeczyta wiadomosc nadawca nie moze jej usunac a nawet jak przeczyta to i tak moze ja usunac tylko odbiorca usuwajac tez ze skrzynki nadawczej wiadomosc wyslana przez nadawce
Kawalki kodu odpwiedzialne za usuwanie:
PLIK:opcje_pw.php(czyli if do get'a z pierwszego kodu)
  1. <?php
  2. if($_GET['action'] == 'usun') {
  3.  
  4. $query3 = ('delete from pw where id = '.(int)$_GET['id'].' AND odbiorca = "'.mysql_real_escape_string($_COOKIE['name']).'" AND stan = "przeczytane"');
  5.  
  6. if(mysql_query($query3, $db)) echo('<script>alert("Wiadomosc zostala usunieta");</script>');
  7.  
  8. else echo('<script>alert("Wiadomosc nie zostala przeczytna nie mozna usunac");</script>');
  9.  
  10.  }
  11. ?>

Nie wiem czemu tez nie dziala else w sensie takim ze chce usunac wiadomosc jako obiorca ale wczesniej jej nie przeczytalem i pokazuje sie ze wiadomosc zostala usunieta lecz my wiemy ze bez jej wczesniejszego przecztania tej operacj zrobic nie mozna a komunikat w else nie dziala jak by on dziala to by juz bylo lepiej

Ogolnie moje pytanie jest jak zrobic system zeby kazdy user mogl usuwac swoje wyslane/odebrane wiadomosc bez ingerencji w wiadomosci do wyslanych user'ow czyli cos takiego jak ma php-fusion

P.S ogolnie jak ktos chce zobaczyc jak to dziala to prosze wejdz tutaj:http://www.marcio.szu.pl
Podam 2 konta zeby szlo testowac
Login:marcio
Haslo:marcio15@
Drugie konto
Login:test2
Haslo:tester

Mam nadzieje ze ktos pomoze na ale coz ale niech wytlumaczy jak to zrobic
Jak ktos jest chetny to moge dac caly kod tych 4 plikow duzo php tam nie ma smile.gif

Pozdro
mokry
Ogólnie pomyśl nad modyfikacją Twojej bazy danych.

Jeśli chcesz aby odbiorca i nadawca mieli niezależne statusy i aby wiadomości się nie kasowały u nich jednocześnie, dodaj statusy dla wiadomości oddzielne dla odbiorcy i nadawcy.

Przy wysłaniu, status dla nadawcy nadawaj 1 a dla odbiorcy też 1. Jeśli nadawca usunie wiadomość z wysłanych zmień jego status na 0, jeśli odbiorca przeczyta- ustaw na 2 a jeśli wykasuje to 0.

I teraz możesz sie pobawić w usuwanie wiadomości z bazy danych w zależności od tego kto ją usunie jako drugi (poprzez statusy wiadomości). Jeśli jeden już wykasowal i zrobi to drugi- wpis znika z bazy danych.
marcio
Ogolnie chyba w takie cos sie bawic nie bede albo popruboje a jak nie to zrobie tak ze jak odbiorca przeczyta wiadomosc to moga usunac ja nadawca/odbiorca a nie tylko odbiorca

P.S wiem ze glupie pytanie ale dlaczego te else tam nie dziala?
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.