• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

System dodawania komentarzy - problem w wysyłaniu do bazy danych

42 Warsaw Coding Academy
0 głosów
515 wizyt
pytanie zadane 20 lipca 2018 w SQL, bazy danych przez fruczka Użytkownik (570 p.)

Cześć ;) Mam mały problem i nie wiem, jak sobie z nim poradzić. Jestem początkująca w programowaniu. :( Problem polega na tym, że w momencie wysyłania loginu i komentarza do bazy danych jest jedynie zwracany na ekran ukośnik i niżej opcja Usuń komentarz, która nie zadziała, dopóki z bazy danych się nie usunie elementu. Załącznik dla wizualizacji z błędem przesyłam. Nie wiem też, który fragment kodu mogę przesłać dlatego śmiało można powiedzieć (index.php, connect.php, wyslij.php, usun.php). Będę baaaardzo wdzięczna za pomoc! :))

Pozdrawiam, fruczka

1 odpowiedź

0 głosów
odpowiedź 20 lipca 2018 przez `Krzychuu Stary wyjadacz (13,940 p.)
pokaż kod z plików: index.php, wyslij.php i usun.php
komentarz 20 lipca 2018 przez fruczka Użytkownik (570 p.)

index.php
 

<?php

	session_start();

?>


<!DOCTYPE HTML>
<html>
	<head>
		<title>Komentarze</title>
	</head>
	<body>
		<form action="wyslij.php" method="post">
			<input type="text" name="autor" placeholder="Twój nick"/></br>
			<textarea name="tresc" placeholder="Treść komentarza..."></textarea></br>
			<input type="submit" value="Wyślij"/>
		</form>
		<?php
			if(isset($_SESSION['blad']))
			{
				echo '<div style="color: red;">'.$_SESSION['blad'].'</div>';
				unset($_SESSION['blad']);
			}
			else if(isset($_SESSION['wyslano']))
			{
				echo '<div style="color: green;">'.$_SESSION['wyslano'].'</div>';
				unset($_SESSION['wyslano']);
			}
		?>
		</br>
		<?php
			try
			{
				require_once("connect.php");
				$polaczenie = new mysqli($host, $user, $password, $name);
				if($polaczenie->connect_errno != 0)
				{
					throw new Exception(mysqli_connect_error());
				}
				else
				{
					mysqli_query($polaczenie, "SET CHARSET utf8");
					mysqli_query($polaczenie, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
					$sprawdz = $polaczenie->query("SELECT * FROM komentarze");
					if($sprawdz->num_rows>0)
					{
						$num = $sprawdz->num_rows+1;
						
						for($i = 1; $i < $num; $i += 1)
						{
							if($komentarz = $sprawdz = $polaczenie->query("SELECT * FROM komentarze WHERE id = '$i'"))
							$wiersz = $komentarz->fetch_assoc();
							
							if($wiersz['banned']==1)
							{
								continue;
							}
							
							echo '
								<div class="komentarz">'.
								$wiersz['autor'].' / '.
								$wiersz['data'].'
								</br>'
								.$wiersz['tresc'].'
								<a href = "usun.php?id='.$i.'">Usuń komentarz</a></br>
								</div>
								</br>
							';
						}
					}
					$polaczenie->close();
				}
			}
			catch(Example $error)
			{
				echo "ERROR!";
			}
		
		?>
	</body>
</html>

wyslij.php
 

<?php
	if(!isset($_POST['autor']))
	{
		header('Location: index.php');
		exit();
	}
	$nick = $_POST['autor'];
	$tresc = $_POST['tresc'];
	
	if(strlen($nick) == 0 || strlen($tresc) == 0)
	{
		$_SESSION['blad'] = "Żadne z pól nie może pozostać puste!";
		header('Location: index.php');
	}
	else
	{
		require_once("connect.php");
		try
		{
			$polaczenie = new mysqli($host, $user, $password, $name);
			if($polaczenie->connect_errno != 0)
			{
				throw new Exception(mysqli_connect_error());
			}
			else
			{
				mysqli_query($polaczenie, "SET CHARSET utf8");
				mysqli_query($polaczenie, "SET NAMES 'utf8' COLLATE 'utf8_polish_ci'");
				$data = date("d-m-Y | h:i:s");
				if($polaczenie->query("INSERT INTO komentarze VALUE(NULL, '$tresc', '$nick', '$data', 0)"))
				{
					$_SESSION['wyslano'] = true;
					header('Location: index.php');
					
				}
				else
				{
					$_SESSION['blad'] = "Błąd! Spróbuj ponownie.";
					header('Location: index.php');
				}
				$polaczenie->close();
			}
		}
		catch(Exception $error)
		{
			echo "Connection Error!";
		}
	}
?>

usun.php
 

<?php
	if(isset($_GET['id']))
	{
		try
			{
				require_once("connect.php");
				$polaczenie = new mysqli($host, $user, $password, $name);
				if($polaczenie->connect_errno != 0)
				{
					throw new Exception(mysqli_connect_error());
				}
				else
				{
					$id = $_GET['id'];
					if($polaczenie->query("UPDATE komentarze SET banned = 1 WHERE id = '$id'"))
					$polaczenie->close();
				}
			}
			catch(Excample $error)
			{
				echo "ERROR!";
			}
	}
	else
	{
		header('Location: index.php');
	}
	
	header('Location: index.php');
?>

 

komentarz 20 lipca 2018 przez `Krzychuu Stary wyjadacz (13,940 p.)
w bazie danych jest normalna treść komentarza czy też /?
komentarz 20 lipca 2018 przez fruczka Użytkownik (570 p.)

W bazie danych wygląda w porządku. :)

komentarz 20 lipca 2018 przez `Krzychuu Stary wyjadacz (13,940 p.)
edycja 20 lipca 2018 przez `Krzychuu
if($sprawdz->num_rows>0)
                    {
                        $num = $sprawdz->num_rows+1;
                         
                        for($i = 1; $i < $num; $i += 1)
                        {
                            if($komentarz = $sprawdz = $polaczenie->query("SELECT * FROM komentarze WHERE id = '$i'"))
                            $wiersz = $komentarz->fetch_assoc();
                             
                            if($wiersz['banned']==1)
                            {
                                continue;
                            }
                             
                            echo '
                                <div class="komentarz">'.
                                $wiersz['autor'].' / '.
                                $wiersz['data'].'
                                </br>'
                                .$wiersz['tresc'].'
                                <a href = "usun.php?id='.$i.'">Usuń komentarz</a></br>
                                </div>
                                </br>
                            ';
                        }
                    }

Zamień na 

if($sprawdz->num_rows>0) {                        
    while($wiersz = $sprawdz->fetch_assoc()) {
        if($wiersz['banned']==1) {
            continue;
        }
                              
        echo '
            <div class="komentarz">'.
                $wiersz['autor'].' / '.
                $wiersz['data'].'
                </br>'
                .$wiersz['tresc'].'
                <a href = "usun.php?id='.$wiersz['id'].'">Usuń komentarz</a></br>
            </div>
            </br>
        ';
    }
}

napisz co wyszło

komentarz 20 lipca 2018 przez fruczka Użytkownik (570 p.)
Wow! Super! Udało się, komentarze są jedne pod drugim i wyświetlają się poprawnie. Dziękuję ślicznie za pomoc Krzychuu! :))))
komentarz 20 lipca 2018 przez `Krzychuu Stary wyjadacz (13,940 p.)
działa usuwanie ?
komentarz 20 lipca 2018 przez fruczka Użytkownik (570 p.)
Tak, usuwanie działa. W bazie danych pokazuje "banned" = 1 przy nicku, który chcemy usunąć. Wszystko jest już dobrze. :)

Podobne pytania

0 głosów
1 odpowiedź 218 wizyt
0 głosów
1 odpowiedź 360 wizyt
pytanie zadane 2 lutego 2020 w Nasze projekty przez Carl Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,596 wizyt
pytanie zadane 30 grudnia 2018 w PHP przez mi-20 Stary wyjadacz (13,250 p.)

93,394 zapytań

142,387 odpowiedzi

322,550 komentarzy

62,752 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...