Dodawanie danych poprzez formularz php

0

Witam, jestem dosc niedoswiadczonym uzytkownikiem w ort! php i bazy danych mysql.
Mam problem z dodawaniem daych do bazy z poziomu php.
Mam taki formularz html :

<html>
<head>
  <title>"Książkorama" - Wstawianie nowej książki</title>
</head>

<body>
  <h1>"Książkorama" - Wstawianie nowej książki</h1>

  <form action="wstaw_ksiazke.php" method="post">
    <table border="0">
      <tr><td>ISBN</td><td><input type="text" name="isbn" maxlength="13" size="13"></td></tr>
      <tr><td>Autor</td><td> <input type="text" name="autor" maxlength="30" size="30"></td></tr>
      <tr><td>Tytuł</td><td> <input type="text" name="tytul" maxlength="60" size="30"></td></tr>
      <tr><td>Cena PLN</td><td><input type="text" name="cena" maxlength="7" size="7"></td></tr>
      <tr><td colspan="2"><input type="submit" value="Zapisz"></td></tr>
    </table>
  </form>
</body>
</html>

natomiat plik wstaw_ksiazke.php wyglada nastepujaco:

<html>
<head>
  <title>"Książkorama" - rezultat wstawiania nowej książki</title>
</head>
<body>
<h1>"Książkorama" - rezultat wstawiania nowej książki </h1>
<?php
  // utworzenie krótkich anzw zmiennych
  $isbn=$_POST['isbn'];
  $autor=$_POST['autor'];
  $tytul=$_POST['tytul'];
  $cena=$_POST['cena'];

  if (!$isbn || !$autor || !$tytul || !$cena) {
     echo "Nie podano wszystkich potrzebnych danych.<br />"
          ."Wróć do poprzedniej strony i spróbuj ponownie.";
     exit;
  }

  if (!get_magic_quotes_gpc()) {
    $isbn = addslashes($isbn);
    $autor = addslashes($autor);
    $tytul = addslashes($tytul);
    $cena = doubleval($cena);
  }

  @ $db = new mysqli('adres serwera', 'moja nazwa uzytkownika', 'haslo', 'nazwa bazy danych');

  if (mysqli_connect_errno()) {
     echo "Błąd: : Połączenie z bazą danych nie powiodło się. Spróbuj jeszcze raz później.";
     exit;
  }

  $zapytanie = "insert into ksiazki values ('".$isbn."', '".$autor."', '".$tytul."', '".$cena."')";
  $wynik = $db->query($zapytanie);

  if ($wynik) {
      echo  $db->affected_rows." książka zapisana do bazy.";
  } else {
      echo "Wystąpił błąd. Książka nie została dodana do bazy.";
  }

  $db->close();
?>

</body>
</html>

Po wypelnieniu formularza nie zostaje wyswietlony zaden komunikat o bledzie ani potwierdzenie dodania danych do bazy (dane nie zostaja dodane). Wszystkie tabele w bazie sa dodane, sa w nich umieszczone przykladowe dane (dodalem je z pliku sql).

Bardzo prosze o pomoc w rozwiazaniu tego problemu, gdyz bez tego nie dam rady nic zrobic na stronie

0

Skoro nic sie nie wyświetla, a coś powinno, to zakładałbym błąd w kodzie.
Czy masz włączone wyświetlanie błędów? Ewentualnie logowanie ich do pliku?
W php.ini ustaw display_errors (http://php.net/manual/en/errorfunc.configuration.php), ewentualnie jeśli nie masz dostępu do pliku konfiguracyjnego to ini_set (http://php.net/manual/en/function.ini-set.php) dla display_errors.

To oczywiście tylko na czas debugowania, w środowisku produkcyjnym logowanie błędów tylko i wyłacznie do pliku i to niedostępnego z poziomu przeglądarki!

0

Hej
Ja tez niedawno przerabialem ten przyklad i rowniez mialem podobny problem, ale cos zrobilem i teraz poprawnie dziala chociaz teraz to juz nie pamietam nawet co :-).
Ponizej zamieszczam kod pliku wstaw_ksiazke.php bo raczej w formularzu bledow nie ma.

<html>
<head>
<title>"Ksiazkorama" - rezultat wstawiania nowej ksiazki</title>
</head>
<body>

<h1>"Ksiazkorama" - rezultat wstawiania nowej ksiazki</h1>
<?php
$isbn = $_POST['isbn'];
$autor = $_POST['autor'];
$tytul = $_POST['tytul'];
$cena = $_POST['cena'];

if(!$isbn || !$autor || !$tytul || !$cena)
{
echo 'Nie podano wszystkich potrzebnych danych.<br/>'.'Wroc do poprzedniej strony i sporobuj ponownie';
exit;
}

if (!get_magic_quotes_gpc())
{
$isbn = addslashes($isbn);
$autor = addslashes($autor);
$tytul = addslashes($tytul);
$cena = doubleval($cena);
}

@ $db = new mysqli('localhost', 'nazwa_uzytkownika', 'haslo_uzytkownika', 'nazwa_bazy_danych');

if(mysqli_connect_errno())
{
echo 'Blad: Polaczenie z baza danych nie powiodlo sie. Sprobuj jeszcze raz pozniej.';
exit;
}

$zapytanie = "INSERT INTO ksiazki VALUES ('".$isbn."', '".$autor."', '".$tytul."', '".$cena."')";
$wynik = $db->query($zapytanie);
if($wynik)
	echo $db->affected_rows.' ksiazka zapisaan do bazy.';
?>

</body>
</html> 

Moim zdaniem w moim kodzie nie ma zadnej roznicy wzgledem twojego, ale moze ktos z bystrzejszym okiem cos zauwazy.

EDIT:

Nawet skopiowalem twoj kod i wkleilem do pliku zamiast mojego a mimo to wszystko dzialalo co dowodzi ze raczej nie ma zadnych bledow w kodzie. Sprawdz moze lepiej czy poprawnie wpisales paramtery polaczenia mysqli, i byc moze wykonujesz ta operacje uzytkownikiem ktory nie ma takich przywilejow i wtedy ci crashuje skrypt - sporobuj zrobic to rootem oczywiscie jesli masz do niego dostep.

0

Możesz spróbować dodawać rekordy w ten sposób:

$wstawianie = @mysql_query("INSERT INTO Nazwa_tabeli SET rekord_w_bazie='$wartosc_do_wstawienia', rekord_w_bazie1='$wartosc_do_wstawienia1'");
if($wstawianie)
{
      echo "Rekord został dodany poprawnie";
}
else
{ 
      echo "Błąd nie udało się dodać nowego rekordu"; 
}
0

używasz składni:

@ $db = new mysqli

a **małpa **przed funkcją wyłącza błędy. Usuń ją to ci wyświetli błędy.

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