Dodawanie rekordów do bazy danych

0

Mam problem ze stworzeniem kodu dodajacego rekordy do bazy danych a to kod:

 try
{
	$pdo = new PDO('mysql:host=localhost;dbname=ijdb', 'damian1', 'meleme13');
}
catch(PDOException $e)

{
	
	
	echo 'Blad polaczenia';
}
$joketext = $_POST['joketext'];


	

$sql = 'INSERT INTO joke SET joketext = :joketext';
$s ->$pdo -> prepare($sql);
$s->bindValue(':joketext', $_POST['joketext']);
$s ->execute();
<html>
<body>
<?php include 'new7.php'?>

<?php foreach ($jokes as $joke): ?>
<blockquote>
<p>
<?php include 'text1.html'; ?>
<p><a href="dr1.php"> Dodaj nowy dowcip</a></p>
<p>Dowcipy w bazie</p>
<?php echo htmlspecialchars($joke, ENT_QUOTES, 'UTF-8'); ?>
</p>
</blockquote>
<?php endforeach;?>
</body>
</html> 

W/w kod nie dodaje nic do bazy danych. Czy ktoś może pomóc ? Co w tym zmienić ?

0

W notatniku piszesz ten kod?
Jakiekolwiek IDE nie dość, że Ci poukłada ten kod to jeszcze podświetli błąd:

$s ->$pdo -> prepare($sql);
// zamień na
$s = $pdo -> prepare($sql);

Korzystaj z dokumentacji.
Staraj się zrozumieć każdą linijkę kodu. Jak coś nie działa to po prostu głośno mów (możesz mówić do gumowej kaczki - to działa) co każda linijka robi.

PS. Szacun za używanie PDO. Jesteś wyjątkiem (w pozytywnym słowa znaczeniu) ;)

0

Dzięki za pochwałe i za pokazanie błędu. Używam pdo bo jak się uczyć to najlepszych technik

0

Zmieniłem kod

<?php
try
{
	$pdo = new PDO('mysql:host=localhost;dbname=ijdb', 'damian1', 'meleme13');
}
catch(PDOException $e)

{
	
	
	echo 'Blad polaczenia';
}
$joketext = $_POST['joketext'];


	

$sql = 'INSERT INTO joke SET joketext = :joketext';
$s = $pdo -> prepare($sql);
$s->bindValue(':joketext', $_POST['joketext']);
$s ->execute();



?> 

I nie działa , wyświetla takie błędy.

Notice: Undefined index: joketext in C:\xampp\htdocs\dashboard\dr1.php on line 13

Notice: Undefined index: joketext in C:\xampp\htdocs\dashboard\dr1.php on line 20
Do bazy danych jest dodawany pusty wiersz

Ma ktoś jakiś pomysł ?

edit.
Spróbowałem innym sposobem

<?php
$connection = @mysql_connect('localhost:3080', 'damian1', 'meleme13') 
or die('Brak połączenia z serwerem MySQL'); 
$db = @mysql_select_db('jdb', $connection) 
or die('Nie mogę połączyć się z bazą danych'); 

$joketext = $_POST['joketext'];

$ins = @mysql_query("INSERT INTO test SET joketext='$joketext'");
if ($ins)
{
		echo "Rekord dodany";
		
}
else {
		
		echo "Błąd";
}
?> 

Jeśli nie dodam numeru portu 3080 to wyswietla sie blad polaczenia , jesli dodam to laduje sie w nieskonczonosc

0

Nie próbuj tego innego sposobu, bo właśnie wprowadziłeś dziurę do kodu! Poprzedni kod był dobry.

Pokaż kod HTML, bo zakładam, że dane wczytujesz z formularza.

0
<form action="dr.php" method ="POST">
<div>
<label for "joketext" id="joketext" name="joketext">Wpisz tekst dowcipu:</label>
<textarea id="joketext" name="joketext" rows="3" cols="40"></textarea>
</div>
<div input type="submit" value ="Dodaj"></div>
</form> 

O to kod z formularza. Dziekuje z gory za pomoc

Jak wrzucam tamten kod to takie bledy sie wyswietlają

Notice: Undefined index: joketext in C:\xampp\htdocs\dashboard\dr1.php on line 13

Notice: Undefined variable: s in C:\xampp\htdocs\dashboard\dr1.php on line 19

Notice: Trying to get property of non-object in C:\xampp\htdocs\dashboard\dr1.php on line 19

Fatal error: Call to a member function prepare() on null in C:\xampp\htdocs\dashboard\dr1.php on line 19

0

Ok, zacznijmy od przeróbki HTML:

BĄDŹ DOKŁADNY. Komputer musi wiedzieć o co Ci chodzi. Ty sobie wstawiasz losowo spacje, zapominasz znaku równości, stosujesz tagi, których nie rozumiesz, ale skądś przekleiłeś więc "niech będzie" i tworzysz kompozycje typu <div input ...>- z takim podejściem nigdzie nie zajdziesz.

<form action="dr.php" method="post">
  <div>
    <label for="joke">Wpisz tekst dowcipu:</label>
    <textarea id="joke" name="joketext" rows="3" cols="40"></textarea>
  </div>
  <input type="submit" value="Dodaj" />
</form> 

Następnie w kodzie PHP dopisz na początku var_dump($_POST); - sprawdzimy, czy wszystko jest ok.

Podrzuć też najnowszą wersję kodu PHP.

0

Wszystko teraz działa dodaje sie rekord tylko bo dodaniu pojawia sie komunikat
array(1) { ["joketext"]=> string(0) "" }
O co chodzi z nim ?

0

Pokaż kod. To coś to efekt var_dumpa, ale skoro pokazuje pusty string to ja nie wiem co Ci się tam dodaje.

Kod wklejaj na bieżąco przy każdej zmianie, bo nie jesteśmy wróżkami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1