• 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

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

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...