• 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

VPS Starter Arubacloud
0 głosów
322 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ź 180 wizyt
0 głosów
1 odpowiedź 280 wizyt
pytanie zadane 2 lutego 2020 w Nasze projekty przez Carl Nowicjusz (120 p.)
0 głosów
1 odpowiedź 1,537 wizyt
pytanie zadane 30 grudnia 2018 w PHP przez mi-20 Stary wyjadacz (13,190 p.)

92,452 zapytań

141,262 odpowiedzi

319,085 komentarzy

61,854 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.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...