php - formularz rejestracji

0

Witam,

Jako, że jestem zielony w php potrzebuję pomocy.
Założyłem bazę danych mysql, znam login i hasło.
Po otworzeniu strony dodaj.html wyświetla się formularz. Po wypełnieniu pól i wciśnięciu przycisku "wyslij" nie dodaje mi do bazy wpisanych danych tylko w przeglądarce wyświetla się kod źródłowy. W czym tkwi problem?

connection.php

<?php
//function connection() { 
        // host 
        $mysql_host = "localhost"; 
        // user
        $mysql_user = "root"; 
        // has³o 
        $mysql_pass = "password"; 
        // nazwa bazy 
        $mysql_db = "fikus"; 
        // nawiızujemy po³ıczenie z serwerem MySQL 
        @mysql_connect($mysql_host, $mysql_user, $mysql_pass) 
        or die('Brak po³ıczenia z serwerem MySQL.'); 
        // ³ıczymy siê z bazı danych 
        @mysql_select_db($mysql_db) 
        or die('B³ıd wyboru bazy danych.');
} 

?> 

dodaj.php

<?php
require("connection.php");
connection();
$model = $_POST['model'];
$marka = $_POST['marka'];
$rok = $_POST['rok'];

$zapytanie = "INSERT INTO `formularz` VALUES('$model','$marka','$rok')";
$wykonaj = "mysql_query('$zapytanie')";
?> 

install.php

<?php
require("connection.php");
connection();
$zapytanie  = "CREATE TABLE `formularz` (
`marka` VARCHAR(30) NOT NULL,
`model` VARCHAR(40) NOT NULL,
`rok` VARCHAR(40) NOT NULL)";
// zapisujemy zapytanie do zmiennej
$wykonaj = mysql_query('$zapytanie');
// wykonujemy zapytanie;)
?> 

dodaj.html

<html>
<head>
<title> Dodawanie rekordów </title></head>
<body> 
 <form method="POST" action="dodaj.php">
Podaj marka: <input type="text" size="30" name="marka"><br>
Podaj model: <input type="text" size="40" name="model"><br>
Podaj rok: <input type="text" size="40" name="rok"><br>
<input type="submit" value="wyœlij!">
</form>
</body>
</html> 
1

dodaj.php :

 $wykonaj = "mysql_query('$zapytanie')";

Usuń apostrofy i cudzysłów, bo w twoim przypadku zmienna $wykonaj to po prostu string i nie wykona zapytania.

install.php :

$wykonaj = mysql_query('$zapytanie');

Jak wyzej, usun apostorfy.

0

Zrobiłem, tak jak sugerujesz, ale nadal nie dodaje do bazy danych.
Po wciśnięciu przycisku pojawia się tylko kod strony dodaj.php

0

Zapomniałem o jednym. W pliku connection.php odkomentuj pierwszą linie (z nazwą funkcji connection.php) i spróbuj wtedy

0

Zmieniłem,
Niestety nadal tak samo ;/

0

W sensie widzisz kod php w przeglądarce? To znaczy, że nie masz zainstalowanego/skonfigurowanego php na serwerze.

0

Ja po prostu zainstalowałęm mysql, ręcznie założyłem bazę danych o nazwie 'fikus' i za pomocą przeglądarki próbuje uruchomić skrypt dodaj.html
Po wciśnięciu przycisku widzę tylko kod,

0

I myślisz, że przeglądarka odpali php? Otóż nie. PHP działa po stronie serwerowej, a to oznacza, że potrzebujesz serwer www.

0

ok, dlatego pisałem, że jestem zielony ;)
Więc pomożesz jak miałbym to zrobić?
Ogólnie chce osiągnąć coś takiego, aby za pomocą prostego formularza przekazywać dane do bazy a później te dane pobierać, wyszukiwać. Taka wewnętrzna baza danych z obsługą gui. Prosta w której będą podstawowe informacje o samochodach oraz naprawach - tyle ;)

0
  1. W żadnym wypadku nie używaj przestarzałych, wycofanych już funkcji mysql_, serio - od tego jest biblioteka PDO, w ostateczności mysqli_.
  2. W żadnym wypadku nie używaj ukrywania błędów @ - jak ukryjesz błedy to one nie znikną, będą - a jakże - ukryte, najgorszy rodzaj błędów. Błędy należy obsługiwać a nie olewać.

Tu masz w miarę ogarnięty kurs: https://php-kurs.gitbooks.io/phpkurs/content/ (opis tablic nie do końca prawdziwy, jak wszędzie)
Tu też lepsze niż to z czego korzystasz: https://pl.wikibooks.org/wiki/PHP
No i najważniejsze: http://php.net/manual/pl/index.php
Interaktywny kurs: https://www.codecademy.com/learn/php

PS
Serio nie mam pojęcia skąd ludzie biorą te kursy, nawet Zelent używa mysqli_ :P

0

Co do serwera http://www.webserv.pl/zystać z gotowych rozwiązań takich jak to: http://www.webserv.pl/

Windowsowa instalka, która zainstaluje apacha, php i mysql. Nie wiem czy jest to aktualne - zawsze możesz poszukać innych jak co.

0

Zainstalowałem WebServ.
Dodałem ręcznie bazę danych w phpmysql.
Wszystkie pliki przegrałem do C:\WebServ\httpd
Gdy odpalam dodaj.html i klikam w button wyślij to mam:
Parse error: syntax error, unexpected '}' in C:\WebServ\httpd\connection.php on line 17

1

Skoro zakomentowaleś delarację funkcji i nawias otwierający to powinieneś zakomentować nawias zamykający

//function connection() { 

//}

Poza tym polecam poczytanie na temat sql injection.

0

Dzięki za wszystkie odpowiedzi.
Doszedłem teraz do momentu, że nie mam żadnego błędu na ekranie, ale dane z formularza nie są wrzucane do bazy.
Ręcznie przekleiłem zapytanie do utworzenia bazy danych:

 CREATE TABLE formularz 
(
`marka` VARCHAR(30) NOT NULL,
`model` VARCHAR(40) NOT NULL,
`rok` VARCHAR(40) NOT NULL
);

I utworzyło tablę w bazie.
Ale skrypt już nie dodaje do niej danych wpisanych w pola.
Co znów zepsułem.

0

Lektura na dziś:
http://php.net/manual/en/function.mysql-error.php
https://en.wikipedia.org/wiki/Relational_database

Jednak najlepiej będzie to wywalić i napisać z użyciem PDO/mysqli.

0

@ziomek443
Wklej jeszcze raz kod, który masz w każdym pliku...
Bo jak wrzuciłem Twój kod z tematu i z moimi poprawkami do xammpa to wszystko działa

0

Więc tak.

Plik connection.php

<?php
function connection() { 
        // host 
        $mysql_host = "localhost"; 
        // user
        $mysql_user = "fikus"; 
        // hasło 
        $mysql_pass = "fikus"; 
        // nazwa bazy 
        $mysql_db = "fikus"; 
        // nawiązujemy połączenie z serwerem MySQL 
        @mysql_connect($mysql_host, $mysql_user, $mysql_pass) 
        or die('Brak połączenia z serwerem MySQL.'); 
        // łączymy się z bazą danych 
        @mysql_select_db($mysql_db) 
        or die('Błąd wyboru bazy danych.');
}

?>
 

dodaj.php

<?php
require("connection.php");
connection();
$model = $_POST['model'];
$marka = $_POST['marka'];
$rok = $_POST['rok'];

$zapytanie = "INSERT INTO `formularz` VALUES('$model','$marka','$rok')";
$wykonaj = "mysql_query('$zapytanie')";
?>
 

install.php

<?php
require("connection.php");
connection();
$zapytanie  = CREATE TABLE 'formularz' 
(
`marka` VARCHAR(30) NOT NULL,
`model` VARCHAR(40) NOT NULL,
`rok` VARCHAR(40) NOT NULL
);
// zapisujemy zapytanie do zmiennej
$wykonaj = mysql_query('$zapytanie');
// wykonujemy zapytanie;)
?>
 

dodaj.html

<html>
<head>
<title> Dodawanie rekordów </title></head>
<body> 
 <form method="POST" action="dodaj.php">
Podaj marka: <input type="text" size="30" name="marka"><br>
Podaj model: <input type="text" size="40" name="model"><br>
Podaj rok: <input type="text" size="40" name="rok"><br>
<input type="submit" value="wyślij!">
</form>
</body>
</html>
 

Bazę założyłem ręcznie poprzez phpmyadmin.
Wygląda ona tak:
<image>foo<php.png/image>

Wszystkie pliki mam w folderze C:\WebServ\httpd\

0

Teraz działa. Zastosowałem się do Twoich uwag nerdxg, zainstalowałem xampa i poszło. Dodaje do bazy.

1

Wywal te małpy! Zamień

@mysqli_connect(// ....

na

mysqli_connect(// ....

Małpa ukrywa jakikolwiek błąd rzucony przez tą funkcję, czyli jak coś zepsujesz to nie będziesz o tym wiedział. Ukryte bugi są trudniejsze do naprawienia.

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