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

PHP przesyłanie formularza na serwer

Object Storage Arubacloud
0 głosów
353 wizyt
pytanie zadane 29 listopada 2018 w PHP przez rav89lodz Użytkownik (590 p.)

Dzień dobry, napisałem skrypt do wysyłania formularza na serwer. Niestety coś jest nie tak, ponieważ dane nie trafiają do bazy danych. Bazę danych robię w XAMPPie, baza nosi nazwę 'ankieta', tabela 'opis' z jedną kolumną 'opis'. Co zrobiłem źle?

<?php

	$ocena=$_POST['happy'];
	$dsn = "mysql: host=localhost;dbname=ankieta";
	$uzytkownik = "root";
	$haslo = "";
	
	try
	{
		$dbo = new PDO($dsn, $uzytkownik, $haslo);
	}
	catch (PDOException $e)
	{
		echo "Błąd podczas łączenia z bazą danych: ".$e;
		exit;
	}	
	
	function sanitizeString($var)
	{
		if (get_magic_quotes_gpc())
		$var = stripslashes($var);
		$var = strip_tags($var);
		$var = htmlentities($var);
		return $var;
	}
	
	$opis = sanitizeString($_POST['opis']);
	
	$query = "INSERT INTO ankieta VALUES('$opis')";
	
	try
	{		
		$dbo->exec($query);
	}
	catch(Exception $e)
	{
		echo"Wystąpił błąd: ".$e;
	}
	
	if($ocena == 1)
	{
		echo "Dziękujemy za pozytywną opinię";
		echo "<br>";
		echo "Życzymy miłego dnia";
	}
	else if($ocena == 2)
	{
		echo "Dziękujemy za opinię";
	}
	else if($ocena == 3)
	{
		echo "Dlaczego tak słabo wypadliśmy?";
	}

echo<<<END
	<br><br><br>
	<a href="index.html">Powrót do strony głównej</a>
END;

	$dbo = null;
?>

Jeśli trzeba wrzucę też html, jeśli to miałoby w czymś pomóc. Pozdrawiam smiley

komentarz 29 listopada 2018 przez niezalogowany
ale co, jakiś błąd czy co?
komentarz 29 listopada 2018 przez Tnifey Pasjonat (24,190 p.)
ta spacja w dsn jest potrzebna? :)
komentarz 29 listopada 2018 przez rav89lodz Użytkownik (590 p.)

@ViruS, No właśnie nie wiem, jakiś błąd jest na pewno. Treść formularza nie ląduje na serwerze, więc coś musi być nie tak. Chociaż przeglądarka nie wywala żadnego błędu indecision Nie wiem, może bazę źle założyłem ...

 

1
komentarz 29 listopada 2018 przez rav89lodz Użytkownik (590 p.)

@Tnifey, białe znaki są ignorowane, robiłem i z, i bez, i to nic nie zmienia cheeky

komentarz 29 listopada 2018 przez rav89lodz Użytkownik (590 p.)
przeniesione 29 listopada 2018 przez Arkadiusz Waluk

Zrobiłem jeszcze mysqli ale też nic z tego. 

<?php
session_start();

$host = 'localhost'; // dane dostępowe do serwera
$baza = 'ankieta';
$uzytkownik = "root";
$haslo = "";

$db = new mysqli($host, $uzytkownik, $haslo, $baza); // nawiązanie połączenia z bazą danych

	if($db->connect_errno)
	{
		return SERVER_ERROR;
	}
	
	function sanitizeString($var)
	{
		if (get_magic_quotes_gpc())
		$var = stripslashes($var);
		$var = strip_tags($var);
		$var = htmlentities($var);
		return $var;
	}
	
	$opis = sanitizeString($_POST['opis']);
	
	$query = "INSERT INTO ankieta VALUES('$opis')";
				
	$db->query($query);
		
	if($_POST['happy']==1)
	{
		echo "Dziękujemy za pozytywną opinię";
		echo "<br>";
	}
	if($_POST['happy']==2)
	{
		echo "Dziękujemy za opinię";
		echo "<br>";
	}
	if($_POST['happy']==3)
	{
		echo "Szkoda że tak wyszło";
		echo "<br>";
	}
	
echo<<<END
	<br>
	<a href="index.html">Powrót do strony głównej</a>
END;

	$db->close();
?>

 

komentarz 29 listopada 2018 przez rav89lodz Użytkownik (590 p.)
przeniesione 29 listopada 2018 przez Arkadiusz Waluk

A tutaj jeszcze html na wypadek, gdyby był potrzebny.

<body>
	<header>
		<h1> Ankieta zadowolenia z zakupu </h1>
	</header>
	
	<div class="conteiner">
		<form action="wiadomosc.php" method="post">
			<div class= "emot">
				<div class="element"><label><div class="el_wew"><input type="radio" name="happy" value="1" checked></div><img src="img/01.jpg"></label></div>
				<div class="element"><label><div class="el_wew"><input type="radio" name="happy" value="2"></div><img src="img/02.jpg"></label></div>
				<div class="element"><label><div class="el_wew"><input type="radio" name="happy" value="3"></div><img src="img/03.jpg"></label></div>
			</div>
		
			<div class="pole_t">
				<textarea name="opis" cols="45" rows="8" wrap="physical" dirname="opis.dir" placeholder="Podziel się z nami swoją opinią" required></textarea>			
			</div>
			<div class="przycisk">
				<input type="submit" value="Wyślij">
			</div>
		</form>
	</div>
	
	<footer>
		<p> Firmatec </p>
	</footer>
	
	<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
	
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
	
	<script src="js/bootstrap.min.js"></script>
	
</body>

 

komentarz 30 listopada 2018 przez ShiroUmizake Nałogowiec (46,300 p.)

Co to za kwiatek??

echo<<<END

    <br>

    <a href="index.html">Powrót do strony głównej</a>

END;

Nie mieszaj logiki z szablonem.

2. Masz włączone debugowanie w xammp, domyślnie debugger jest wyłączony. Sprawdż php.ini.

$query = "INSERT INTO ankieta VALUES('$opis')";

Skąd ma wiedzieć do jakiej kolumny, ma trafić?

Btw. na przyszłość

  if($_POST['happy']==1)
    {
        echo "Dziękujemy za pozytywną opinię";
        echo "<br>";
    }
    if($_POST['happy']==2)
    {
        echo "Dziękujemy za opinię";
        echo "<br>";
    }
    if($_POST['happy']==3)
    {
        echo "Szkoda że tak wyszło";
        echo "<br>";
    }

To powinno być AJAX-em obsłużone, ostateczne parametrze routingu.

Co echouje $var?

komentarz 30 listopada 2018 przez rav89lodz Użytkownik (590 p.)

Racja, dzięki smiley już wszystko ładnie działa. Powinno wyglądać tak:

$query = "INSERT INTO opis(nowa) VALUES('$opis')";

Dopiero się uczę PHP i w ogóle programowania, także jeszcze wiele kwiatków zrobię w kodzie na pewno cheeky Ale dzięki za rady, będę się starał unikać takich rzeczy. 

Pozdrawiam 

komentarz 30 listopada 2018 przez ShiroUmizake Nałogowiec (46,300 p.)
Spoko

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 134 wizyt
pytanie zadane 17 lipca 2018 w PHP przez Mateusz Pijanowski Bywalec (2,130 p.)
0 głosów
1 odpowiedź 1,028 wizyt
0 głosów
1 odpowiedź 251 wizyt

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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!

...