Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [PHP][CSS][HTML5] Kolorowanie użytkowników i ich wiadomości

Napisany przez: xyz91 3.11.2019, 11:48:18

Witam,

Potrzebuje napisać kawałek kodu, żeby w prostym shoutboxie każdego nowego użytkownika jego wiadomość kolorowało na inny kolor. Wytłumaczę to trochę łopatologicznie, żeby wszytko było jasne. Chodzi o to, że na stronie wyświetla mi się aktualnie 5 ostatnich wiadomości, więc załóżmy, że na jednej przeglądarce wejdę wpisze Janusz i on dostanie jakiś kolor, który zostanie aktualnie do niego przypisany na tej przeglądarce, na innej wejdę wpisze np. nick Marek i on dostanie inny.
Myślę, że wystarczy właśnie 5 kolorów, żeby z nich kolorowało poszczególnych użytkowników i ich wiadomości.

  1. $rezultat = mysqli_query($polaczenie, "SELECT * FROM posty") or die ("Błąd zapytania do bazy: $dbname");
  2. print "<TABLE CELLPADDING=5 BORDER=1>";
  3. print "<TR><TD>ID</TD><TD>Nick</TD><TD>Data</TD><TD>Message</TD></TR>\n";
  4. ?>
  5. <form method="POST" action="dodaj.php">
  6. <br>
  7. Nick:<input type="text" name="user" value="<?php if (http://www.php.net/isset($_COOKIE['Nick'])) { http://www.php.net/echo $_COOKIE['Nick']; } ?> "; maxlength="10" size="10"><br>
  8. Post:<input type="text" name="post" maxlength="90" size="90">
  9. <br>
  10. <input type="submit" value="Send"/>
  11. </form>
  12. Posty:
  13. <br>
  14. <?php
  15. $rezultat = mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat FROM posty ORDER BY idk DESC LIMIT 5");
  16.  
  17. while ($wiersz = mysqli_fetch_array ($rezultat)) {
  18. $idk = $wiersz[0];
  19. $nick = $wiersz[1];
  20. $data = $wiersz[2];
  21. $komunikat = $wiersz[3];
  22.  
  23.  
  24. mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat FROM posty");
  25.  
  26. http://www.php.net/print "<TR><TD>$idk</TD><TD>$nick</TD><TD>$data</TD><TD>$komunikat</TD></TR>\n"; }
  27. http://www.php.net/print "</TABLE>";
  28. mysqli_close($polaczenie);
  29.  
  30. ?>

Napisany przez: dublinka 3.11.2019, 16:39:24

Przypisz sesje z kolorem dla użytkownika.

Zrob przyklad ktory zapisze gdzies w osobnej tabeli kolor. Sprawdzaj jesli jest uzyty wylosuj kolejny albo zrob tablice ze spora iloscia wartosci. Oczywiscie drugi przyklad nie da 100% pewnosci ze kolory nie powiela sie i min 2 userow nie bedzie mialo tego samego koloru.Chociaz z drugiej strony jesli bedzie wiecej niz 5 userow to i tak ktorys sie powieli
Najprosciej tak bez zapisywanie gdziekolwiek:

  1. http://www.php.net/session_start();
  2.  
  3. $color = http://www.php.net/array('red', 'blue', 'green', 'navy', 'yellow'.............................);
  4. $los_kolor = http://www.php.net/array_rand ($color);
  5. $losowy = $color[$los_kolor];
  6. $_SESSION['color'] = $losowy;
  7.  
  8. //print $_SESSION['color'];

Napisany przez: xyz91 3.11.2019, 18:55:55

Cytat(dublinka @ 3.11.2019, 16:39:24 ) *
Przypisz sesje z kolorem dla użytkownika.

Zrob przyklad ktory zapisze gdzies w osobnej tabeli kolor. Sprawdzaj jesli jest uzyty wylosuj kolejny albo zrob tablice ze spora iloscia wartosci. Oczywiscie drugi przyklad nie da 100% pewnosci ze kolory nie powiela sie i min 2 userow nie bedzie mialo tego samego koloru.Chociaz z drugiej strony jesli bedzie wiecej niz 5 userow to i tak ktorys sie powieli
Najprosciej tak bez zapisywanie gdziekolwiek:

  1. http://www.php.net/session_start();
  2.  
  3. $color = http://www.php.net/array('red', 'blue', 'green', 'navy', 'yellow'.............................);
  4. $los_kolor = http://www.php.net/array_rand ($color);
  5. $losowy = $color[$los_kolor];
  6. $_SESSION['color'] = $losowy;
  7.  
  8. //print $_SESSION['color'];


Ale ten przykład co zapisałeś mam wrzucić w nowy plik czy tutaj gdzie wrzucałem ten kawałek kodu? Mógłbyś bardziej to wytłumaczyć jak to zaimplementować do mojego kodu?

Napisany przez: dublinka 3.11.2019, 19:46:08

W momencie ustawienia Twojego Cookie. Zreszsta jak juz bedziesz robil sesje to zmien to ciaskto na sesje 'nick' bo po co mieszac dwie rzeczy.
Nie napisze jak bo nie widze co tam wczesniej robisz.

Mozesz wygenerowac koloro losowo:

  1. $out = '#' . http://www.php.net/substr(http://www.php.net/md5(http://www.php.net/rand()), 0, 6);
  2.  
  3. http://www.php.net/print "<span style=color:" . $out . ">TEST</span>";


lub

  1. $rand = http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  2.  
  3. http://www.php.net/print "<span style=color:#" . $rand . ">TEST</span>";

Napisany przez: xyz91 3.11.2019, 20:06:32

Cytat(dublinka @ 3.11.2019, 19:46:08 ) *
W momencie ustawienia Twojego Cookie. Zreszsta jak juz bedziesz robil sesje to zmien to ciaskto na sesje 'nick' bo po co mieszac dwie rzeczy.
Nie napisze jak bo nie widze co tam wczesniej robisz.

Mozesz wygenerowac koloro losowo:

  1. $out = '#' . http://www.php.net/substr(http://www.php.net/md5(http://www.php.net/rand()), 0, 6);
  2.  
  3. http://www.php.net/print "<span style=color:" . $out . ">TEST</span>";


lub

  1. $rand = http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  2.  
  3. http://www.php.net/print "<span style=color:#" . $rand . ">TEST</span>";


Mam coś takiego:
dodaj.php
  1. <?php
  2. $dbhost="localhost"; $dbuser="root"; $dbpassword=""; $dbname="php";
  3. $polaczenie = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);
  4. if (!$polaczenie) {
  5. http://www.php.net/echo "Błąd połączenia z MySQL." . PHP_EOL;
  6. http://www.php.net/echo "Errno: " . mysqli_connect_errno() . PHP_EOL;
  7. http://www.php.net/echo "Error: " . mysqli_connect_error() . PHP_EOL;
  8. http://www.php.net/exit;
  9. }
  10. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  11. $user = $_POST['user'];
  12. $post = $_POST['post'];
  13. if (http://www.php.net/isset($_POST['post'])) {
  14. mysqli_query($polaczenie, "INSERT INTO komunikaty(nick, data, komunikat) VALUES('$user','$godzina','$post')");
  15. http://www.php.net/setcookie('Nick', $user,http://www.php.net/time()+60*60);
  16. http://www.php.net/header("Location: index.php");
  17. http://www.php.net/exit();
  18.  
  19. }
  20.  
  21. ?>


index.php
  1. <?php
  2. $dbhost="localhost"; $dbuser="root"; $dbpassword=""; $dbname="php";
  3. $polaczenie = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);
  4. if (!$polaczenie) {
  5. http://www.php.net/echo "Błąd połączenia z MySQL." . PHP_EOL;
  6. http://www.php.net/echo "Errno: " . mysqli_connect_errno() . PHP_EOL;
  7. http://www.php.net/echo "Error: " . mysqli_connect_error() . PHP_EOL;
  8. http://www.php.net/exit;
  9. }
  10. $rezultat = mysqli_query($polaczenie, "SELECT * FROM komunikaty") or http://www.php.net/die ("Błąd zapytania do bazy: $dbname");
  11. http://www.php.net/print "<TABLE CELLPADDING=5 BORDER=1>";
  12. http://www.php.net/print "<TR><TD>ID</TD><TD>Użytkownik</TD><TD>Data i godzina</TD><TD>Wiadomość</TD></TR>\n";
  13. ?>
  14. <form method="POST" action="dodaj.php">
  15. <br>
  16. Nick:<input type="text" name="user" value="<?php if (http://www.php.net/isset($_COOKIE['Nick'])) { http://www.php.net/echo $_COOKIE['Nick']; } ?> "; maxlength="10" size="10"><br>
  17. Post:<input type="text" name="post" maxlength="90" size="90">
  18. <br>
  19. <input type="submit" value="Send"/>
  20. </form>
  21. Posty:
  22. <br>
  23. <?php
  24. $rezultat = mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat FROM komunikaty ORDER BY idk DESC LIMIT 5");
  25. while ($wiersz = mysqli_fetch_array ($rezultat)) {
  26. $idk = $wiersz[0];
  27. $nick = $wiersz[1];
  28. $data = $wiersz[2];
  29. $komunikat = $wiersz[3];
  30. $kolor = $wiersz[4];
  31.  
  32.  
  33. mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat FROM komunikaty");
  34.  
  35. http://www.php.net/print "<TR><TD>$idk</TD><TD>$nick</TD><TD>$data</TD><TD>$komunikat</TD></TR>\n"; }
  36. http://www.php.net/print "</TABLE>";
  37. mysqli_close($polaczenie);
  38.  
  39. ?>


To jest mój cały kod.

Napisany przez: dublinka 3.11.2019, 20:22:02

  1. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  2. $user = $_POST['user'];
  3. $post = $_POST['post'];
  4.  
  5. if (http://www.php.net/isset($_POST['post'])) {
  6. $kolor = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  7. mysqli_query($polaczenie, "INSERT INTO komunikaty(nick, data, komunikat,kolor) VALUES('$user','$godzina','$post','$kolor')");


Potem tylko pobierz z bazy i podstaw do formatowania tekstu. Oczywiscie najpierw tabele musisz usupalnic o pole 'kolor'
Albo
Tam gdzie jest
  1. http://www.php.net/setcookie('Nick', $user,http://www.php.net/time()+60*60);
  2. $_SESSION['kolor'] = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);


i tak samo sesje wstaw w formatowanie tekstu.
Przy opcji z sesja zainicjuj

  1. http://www.php.net/session_start();


na poczatku pliku

Napisany przez: xyz91 3.11.2019, 20:34:08

Cytat(dublinka @ 3.11.2019, 20:22:02 ) *
  1. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  2. $user = $_POST['user'];
  3. $post = $_POST['post'];
  4.  
  5. if (http://www.php.net/isset($_POST['post'])) {
  6. $kolor = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  7. mysqli_query($polaczenie, "INSERT INTO komunikaty(nick, data, komunikat,kolor) VALUES('$user','$godzina','$post','$kolor')");


Potem tylko pobierz z bazy i podstaw do formatowania tekstu. Oczywiscie najpierw tabele musisz usupalnic o pole 'kolor'
Albo
Tam gdzie jest
  1. http://www.php.net/setcookie('Nick', $user,http://www.php.net/time()+60*60);
  2. $_SESSION['kolor'] = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);


i tak samo sesje wstaw w formatowanie tekstu.
Przy opcji z sesja zainicjuj

  1. http://www.php.net/session_start();


na poczatku pliku


Zainicjonowałem sesje na początku, kolory mi się zapisują do bazy, ale nie wyświetla mi się na stronie - nie koloruje.

Napisany przez: dublinka 3.11.2019, 20:39:42

Wkradl mi sie maly blad. W pierwszym prrzypadku bedzie Ci dodawac za kazdym razem nowy kolor.

  1. http://www.php.net/session_start();
  2.  
  3. $_SESSION['nick'] = $_POST['user']; // zamiast setcookie('Nick', $user,time()+60*60);
  4. $_SESSION['kolor'] = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);


Sprawdz sobie co zwracaja te sesje.

  1. http://www.php.net/print_r($_SESSION);

Napisany przez: xyz91 3.11.2019, 20:46:20

Cytat(dublinka @ 3.11.2019, 20:39:42 ) *
Sprawdz sobie co zwracaja te sesje.

  1. http://www.php.net/print_r($_SESSION);


Takie coś mi zwraca - Array ( [kolor] => #51c338 [nick] => Test 4 ) Array ( [kolor] => #51c338 [nick] => Test 4 ) Array ( [kolor] => #51c338 [nick] => Test 4 ) Array ( [kolor] => #51c338 [nick] => Test 4 ) Array ( [kolor] => #51c338 [nick] => Test 4 )

Napisany przez: dublinka 3.11.2019, 20:54:24

Pokaz mi gdzie ty to dajesz te sesje

  1. <?php
  2. http://www.php.net/session_start();
  3.  
  4. $dbhost="localhost"; $dbuser="root"; $dbpassword=""; $dbname="php";
  5. $polaczenie = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);
  6. if (!$polaczenie) {
  7. http://www.php.net/echo "Błąd połączenia z MySQL." . PHP_EOL;
  8. http://www.php.net/echo "Errno: " . mysqli_connect_errno() . PHP_EOL;
  9. http://www.php.net/echo "Error: " . mysqli_connect_error() . PHP_EOL;
  10. http://www.php.net/exit;
  11. }
  12. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  13. $user = $_POST['user'];
  14. $post = $_POST['post'];
  15. if (http://www.php.net/isset($_POST['post'])) {
  16. mysqli_query($polaczenie, "INSERT INTO komunikaty(nick, data, komunikat) VALUES('$user','$godzina','$post')");
  17. $_SESSION['nick'] = $_POST['user'];
  18. if(!http://www.php.net/isset($_SESSION['kolor']))
  19. {
  20.  
  21. $_SESSION['kolor'] = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  22.  
  23. }else {
  24.  
  25. $_SESSION['kolor'] = $_SESSION['kolor'];
  26. }
  27. http://www.php.net/header("Location: index.php");
  28. http://www.php.net/exit();
  29.  
  30. }
  31.  
  32. ?>

Napisany przez: xyz91 3.11.2019, 20:56:57

Cytat(dublinka @ 3.11.2019, 20:54:24 ) *
Pokaz mi gdzie ty to dajesz te sesje

  1. <?php
  2. http://www.php.net/session_start();
  3.  
  4. $dbhost="localhost"; $dbuser="root"; $dbpassword=""; $dbname="php";
  5. $polaczenie = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);
  6. if (!$polaczenie) {
  7. http://www.php.net/echo "Błąd połączenia z MySQL." . PHP_EOL;
  8. http://www.php.net/echo "Errno: " . mysqli_connect_errno() . PHP_EOL;
  9. http://www.php.net/echo "Error: " . mysqli_connect_error() . PHP_EOL;
  10. http://www.php.net/exit;
  11. }
  12. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  13. $user = $_POST['user'];
  14. $post = $_POST['post'];
  15. if (http://www.php.net/isset($_POST['post'])) {
  16. mysqli_query($polaczenie, "INSERT INTO komunikaty(nick, data, komunikat) VALUES('$user','$godzina','$post')");
  17. $_SESSION['nick'] = $_POST['user'];
  18. $_SESSION['kolor'] = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  19. http://www.php.net/header("Location: index.php");
  20. http://www.php.net/exit();
  21.  
  22. }
  23.  
  24. ?>


No tak dokładnie dałem, na początku.
Tu chyba coś zmienić, żeby wyświetlało dobrze:
  1. $rezultat = mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat, kolor FROM komunikaty ORDER BY idk DESC LIMIT 5");
  2. $rand = http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  3. while ($wiersz = mysqli_fetch_array ($rezultat)) {
  4. $idk = $wiersz[0];
  5. $nick = $wiersz[1];
  6. $data = $wiersz[2];
  7. $komunikat = $wiersz[3];
  8. $kolor = $wiersz[4];
  9.  
  10.  
  11.  
  12. mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat FROM komunikaty");
  13. http://www.php.net/print "<TR><TD>$idk</TD><TD>$nick</TD><TD>$data</TD><TD>$komunikat</TD></TR>\n"; }
  14. http://www.php.net/print "</TABLE>";
  15.  
  16. mysqli_close($polaczenie);
  17.  

Napisany przez: dublinka 3.11.2019, 21:04:46

Ma byc tak: [sory ale rownoczesnie ogladam F1 biggrin.gif i nie moge sie skupic ani tu ani tu

  1. <?php
  2. http://www.php.net/session_start();
  3.  
  4. $dbhost="localhost"; $dbuser="root"; $dbpassword=""; $dbname="php";
  5. $polaczenie = mysqli_connect($dbhost, $dbuser, $dbpassword, $dbname);
  6. if (!$polaczenie) {
  7. http://www.php.net/echo "Błąd połączenia z MySQL." . PHP_EOL;
  8. http://www.php.net/echo "Errno: " . mysqli_connect_errno() . PHP_EOL;
  9. http://www.php.net/echo "Error: " . mysqli_connect_error() . PHP_EOL;
  10. http://www.php.net/exit;
  11. }
  12. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  13. $user = $_POST['user'];
  14. $post = $_POST['post'];
  15. if (http://www.php.net/isset($_POST['post'])) {
  16. mysqli_query($polaczenie, "INSERT INTO komunikaty(nick, data, komunikat) VALUES('$user','$godzina','$post')");
  17. $_SESSION['nick'] = $_POST['user'];
  18. $_SESSION['kolor'] = (!http://www.php.net/isset($_SESSION['kolor'])) ? '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT) : $_SESSION['kolor'];
  19.  
  20. http://www.php.net/header("Location: index.php");
  21. http://www.php.net/exit();
  22.  
  23. }
  24.  
  25. ?>


W drugim pliku tez musisz zainicjowac sesje. Tam nie dajesz juz losowania hex-a bo juz to masz w sesji i wystarczy ja wywolac

Tam gdzie chcesz formatowac teskt poprostu wywolaj ją

Tam gdzie sprawdzales cookie teraz sprawdzaj sesje..

NIE DODAWAJ NIC DO BAZY.

Zostaw to tak jak miales..


W drugim pliku tam w petli gdzie wyciagasz z bazy:

  1. http://www.php.net/print "<span style=color:".$_SESSION['kolor'].">" . $komunikat . "</span>";

Napisany przez: xyz91 3.11.2019, 21:22:34

Chyba gdzieś się pogubiłem. Koloruje mi teraz, ale tylko na zielono zarówno na jednej jak i na drugiej przeglądarce. Teraz mam tak:

  1. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  2. $user = $_POST['user'];
  3. $post = $_POST['post'];
  4. if (http://www.php.net/isset($_POST['post'])) {
  5. $kolor = '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  6. mysqli_query($polaczenie, "INSERT INTO komunikaty(nick, data, komunikat,kolor) VALUES('$user','$godzina','$post','$kolor')");
  7. http://www.php.net/setcookie('Nick', $user,http://www.php.net/time()+60*60); //możliwość wprowadzania danych nick tylko raz\
  8. $_SESSION['nick'] = $_POST['user'];
  9. $_SESSION['kolor'] = (!http://www.php.net/isset($_SESSION['kolor'])) ? '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT) : $_SESSION['kolor'];
  10. http://www.php.net/header("Location: index.php");
  11. http://www.php.net/exit();
  12.  
  13. }



  1. $rezultat = mysqli_query($polaczenie, "SELECT * FROM komunikaty") or die ("Błąd zapytania do bazy: $dbname");
  2. print "<TABLE CELLPADDING=5 BORDER=1>";
  3. print "<TR><TD>ID</TD><TD>Użytkownik</TD><TD>Data i godzina</TD><TD>Wiadomość</TD></TR>\n";
  4. ?>
  5. <form method="POST" action="dodaj.php">
  6. <br>
  7. Nick:<input type="text" name="user" value="<?php if (http://www.php.net/isset($_COOKIE['Nick'])) { http://www.php.net/echo $_COOKIE['Nick']; } ?> "; maxlength="10" size="10"><br>
  8. Post:<input type="text" name="post" maxlength="90" size="90">
  9. <br>
  10. <input type="submit" value="Send"/>
  11. </form>
  12. Posty:
  13. <br>
  14. <?php
  15. $rezultat = mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat, kolor FROM komunikaty ORDER BY idk DESC LIMIT 5");
  16. $rand = http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT);
  17. while ($wiersz = mysqli_fetch_array ($rezultat)) {
  18. $idk = $wiersz[0];
  19. $nick = $wiersz[1];
  20. $data = $wiersz[2];
  21. $komunikat = $wiersz[3];
  22. $kolor = $wiersz[4];
  23.  
  24.  
  25.  
  26. mysqli_query($polaczenie, "SELECT idk, nick, data, komunikat FROM komunikaty");
  27. http://www.php.net/print_r($_SESSION);
  28. http://www.php.net/print "<TR><TD>$idk</TD><TD>$nick</TD><TD>$data</TD><TD><span style=color:".$_SESSION['kolor'].">" . $komunikat . "</span></TD></TR>\n"; }
  29. http://www.php.net/print "</TABLE>";
  30.  
  31. mysqli_close($polaczenie);

Napisany przez: dublinka 3.11.2019, 21:41:05

Kazda przeglądarka przechowuje swój własny zestaw plikow cookie (ktore są technologicznymi sesjami) - nie są one wspołuzytkowane przez rozne przeglądarki.

Sprobuj wywolac

  1.  
  2. http://www.php.net/session_destroy();


wklej to w pliku (na poczatku za session_start()) i wywolaj plik. Potem to usun i sprawdz ponownie.

Napisany przez: xyz91 3.11.2019, 21:47:14

Nie pykło i jeszcze jakiś warning wywaliło. Może gdzieś w kodzie są błędy.

Napisany przez: dublinka 3.11.2019, 22:26:21

Cytat(xyz91 @ 3.11.2019, 20:47:14 ) *
Nie pykło i jeszcze jakiś warning wywaliło. Może gdzieś w kodzie są błędy.

szklanej kuli nie mam i nie czytam w myslach.

  1. http://www.php.net/session_start();
  2.  
  3. @$mysqli = new mysqli($server, $username, $password, $database);
  4.  
  5. if ($mysqli->connect_error)
  6. {
  7. http://www.php.net/die("Błąd połączenia z MySQL: " . $mysqli->connect_error);
  8. }
  9.  
  10. $sql = "SELECT `idk`, `nick`, `data`, `komunikat` FROM komunikaty ORDER BY `idk` DESC LIMIT 5";
  11. $result = $mysqli->query($sql);
  12.  
  13. $allRows = $result->num_rows;
  14.  
  15. if ($allRows > 0)
  16. {
  17.  
  18. http://www.php.net/print 'Wszystkich rekordów: <u><b>' . $allRows . '</b></u>';
  19.  
  20. while($row = $result->fetch_assoc())
  21. {
  22. http://www.php.net/print "</span style=\"color:".$_SESSION['kolor']."\">".$row['komunikat']."</span><br>";
  23.  
  24. }
  25.  
  26. } else
  27. {
  28.  
  29. http://www.php.net/print 'Znaleziono: ' . $allRows . ' rekordów';
  30.  
  31. }
  32.  
  33. $mysqli->close();


Generalnie lepiej jest zapisac do bazy
Nalezaloby tak jak w tym przypadku sprawdzic czy sesja istnieje (przed zapisem do bazy) - dac ten sam warunek. Zapisac i wyciagac z bazy kolor.
To nie takie trudne.

Zapis sesji do bazy

  1. http://www.php.net/session_start();
  2.  
  3. $mysqli = new mysqli($SERVER, $USER, $PASSWORD, $DBNAME);
  4.  
  5.  
  6. $godzina = http://www.php.net/date("Y-m-d H:i:s");
  7. $user = $_POST['user'];
  8. $post = $_POST['post'];
  9. $_SESSION['kolor'] = (!http://www.php.net/isset($_SESSION['kolor'])) ? '#' . http://www.php.net/str_pad(http://www.php.net/dechex(http://www.php.net/rand(0x000000, 0xFFFFFF)), 6, 0, STR_PAD_LEFT) : $_SESSION['kolor'];
  10. $kolor = $_SESSION['kolor'];
  11.  
  12. if ($stmt = $mysqli->prepare("INSERT INTO komunikaty" . " (nick, data, komunikat, kolor) VALUES ( ?, ?, ?, ? )"))
  13. {
  14.  
  15. $stmt->bind_param('ssss', $user, $godzina, $post, $kolor);
  16.  
  17. $stmt->execute();
  18. $stmt->close();
  19. $mysqli->close();
  20.  
  21.  
  22. http://www.php.net/header('location: index.php'); // jesli ok
  23.  
  24. }
  25.  
  26. else {
  27.  
  28. http://www.php.net/print 'blad zapisu';
  29. http://www.php.net/exit;
  30.  
  31. }

Napisany przez: xyz91 3.11.2019, 22:28:23

No to wcześniej zapisywało w formacie hex, tylko że zapisywało randomowo, a chyba ma zapisywać do nicku określony kolor. Próbowałem wyciągnąć kolor z bazy, ale nie działało w taki sposób:



Edit. Dobra, udało się chyba. Dzięki wielkie za pomoc i za cierpliwość, ale programowanie to nie moja bajka. Dzięki!

Napisany przez: dublinka 3.11.2019, 22:38:54

A niby ta funkcja co robi. HEX to format koloru.
Przeczytaj sobie wczesniejszy post i zastosuj. Nie mieszaj swojego z moim.

Musisz przed dodaniem do bazy dac ten warunek bo inaczej caly czas bedzie dodawalo nowy kolor.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)