Mam problem z systemem oceniania.
Założenia jest takie:
1. Nie jesteś zalogowany -> nie głosujesz (komunikat: Musisz się zalogować aby zagłosować)
2. Jesteś zalogowany i nie głosowałeś -> możesz zagłosować
3. Jesteś zalogowany i głosowałeś -> nie głosujesz (komunikat: Oddałeś już głos)
Teoretycznie działa ale tylko dla wcześniej oddanych głosów jeśli oddam głos na nowo dodane zdjęcie to komunikaty się nie wyświetlają.
Do tego jak wyśle formularz z oceną bez wybrania oceny to wysyła się pusty i nie mam pomysłu jak zablokować możliwość wysyłania pustego formularza.
<?PHP session_start(); $zap_dwa = $polaczenie->query(" SELECT AVG(ocena) as ocena, count(*) as ile FROM zdjecia_oceny WHERE id_zdjecia = '".$_GET['id']."' "); $row = $zap_dwa->fetch_assoc(); if (isset($_POST['ocena'])) { $polaczenie->query(" INSERT INTO zdjecia_oceny SET id_zdjecia='".$_GET['id']."', id_uzytkownika='".$_SESSION['id']."', ocena='".$_POST['ocena']."' "); header("Refresh:0"); } $zap_trzy = $polaczenie->query(" SELECT * FROM zdjecia_oceny WHERE id_zdjecia='".$_GET['id']."' AND id_uzytkownika='".$_SESSION['id']."' "); $ile = $zap_trzy->num_rows; if ( $ile<1 && isset($_SESSION['zalogowany'])) { echo ' <form action="foto.php?id='.$_GET['id'].'" method="POST"> <input type="hidden" value="'. $_GET['id'].'" name="id_zdjecia"> <select name="ocena"> <option>Oceń</option> <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> <option>6</option> <option>7</option> <option>8</option> <option>9</option> <option>10</option> </select></br></br> <input type="submit" name="Oceń" value="ocen"> </form> '; } elseif ($ile>1 && isset($_SESSION['zalogowany'])) { echo "Głosowałeś już"; } elseif (!isset($_SESSION['zalogowany'])){ echo "Musisz się zalogować aby załogować"; } echo '<p>Ocena zdjęcia: '.round($row['ocena'],1).' </br> Ocenione przez: '.$row['ile'].' użytkowników<br>'; ?>