x-kom hosting

PHP wysyłanie formularza do bazy

Sonxz
utworzono
utworzono

Mój problem a w zasadzie pytanie jest następujące  jak wysłać dane z tego formularza do bazy danych w phpmyadmin oraz drugie jak porównać ze sobą hasła.Za wszystkie odpowiedzi dziękuje.

dodam jeszcze że jak na razie wszystko pięknie działa :)

<!DOCTYPE HTML>  
<html>
<?php
$con = mysqli_connect("localhost","root","","test");

if (mysqli_connect_errno())
  {
  echo "Połączenie nie udane: " . mysqli_connect_error();
  }


$nameErr = $emailErr = $hasloErr = $haslo1Err = "";
$name = $email = $haslo = $haslo1 = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
   if (empty($_POST["name"])) {
    $nameErr = "Uzupełnij Pole Login";
  } else {
    $name = test_input($_POST["name"]);
	if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
      $nameErr = "Dozwolone są tylko litery"; 
    }
  }
  
 if (empty($_POST["email"])) {
    $emailErr = "Uzupełnij e-mail";
  } else {
    $email = test_input($_POST["email"]);
	if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $emailErr = "Nieprawidłowy format e-mail"; 
    }
  }
  
 if (empty($_POST["haslo"])) {
    $hasloErr = "Uzupełnij hasło";
  } else {
    $haslo = test_input($_POST["haslo"]);
	if (!preg_match("/^[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$haslo)) {
      $hasloErr = "Niepraidłowy format hasła"; 
    }
  }
  
   if (empty($_POST["haslo1"])) {
    $haslo1Err = "Uzupełnij hasło";
  } else {
    $haslo1 = test_input($_POST["haslo1"]);
	if (!preg_match("/^[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$haslo)) {
      $hasloErr = "Niepraidłowy format hasła"; 
    }
	
  }
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>
<head>
<style>
span{
color:red;
}
</style>
</head>
<body>  



<h2>ZAREJSTRUJ SIĘ</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  Login: <input type="text" name="name">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
  E-mail: <input type="text" name="email">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
  Haslo: <input type="password" name="haslo">
  <span class="error">* <?php echo $hasloErr;?></span>
  <br><br>
  Powturz haslo: <input name="haslo1" type="password" />
  <span class="error">* <?php echo $haslo1Err;?></span>
  <br><br>
  <input type="submit" name="submit" value="Submit">  
</form>

<?php
echo "<h2>TWOJE DANE:</h2>";
echo $name;
echo "<br>";
echo $email;
echo "<br>";
echo $haslo;
echo "<br>";
echo $haslo1;
echo "<br>";
?>

</body>
</html>

 

index.php

  • 3 tygodnie później...

MasterYoghourt
komentarz
komentarz (edytowane)

Poniżej masz skrypt, nie pamiętam kogo autorstwa, chyba blueman to napisał. Tabelę "tabela_testowa" tworzysz albo za pomocą phpmyadmin albo poleceniem poprzez klienta mysql.


 

Spoiler

 

Poniżej przedstawiony został przykład wykorzystywania bazy danych mysql do zapisywania i odczytywania danych pobranych z formularza.
Skrypt składa się z kilku elementów:

    * zainicjowanie kilku zmiennych
    * połączenie z bazą
    * umieszczenie w bazie nowego wiersza
    * pobranie danych z bazy
    * wyświetlenie danych na stronie
    * wykorzystanie formularzy

Kod: mysql

CREATE TABLE `tabela_testowa` (
`nazwa_kolumny` VARCHAR( 20 ) NOT NULL
)

W powyższym przykładzie stworzona została nowa tabela o nazwie "tabela_testowa" z kolumną o nazwie "nazwa_kolumny" typu VARCHAR, długości 20 znaków…

Poniżej zawartość przykładowego pliku index.php do zbierania, umieszczania i wyświetlania informacji.
Kod: php

<?php

// informacje na temat bazy
  $host = ‘localhost’;  // nazwa lub numer IP hosta
  $user = ‘username’;  // nazwa użytkownika
  $password = ‘password’; // hasło do bazy
  $dbName = ‘databasename’;  // nazwa bazy danych
// te dane zależne są od Twojej bazy i muszą zostać podane
// przykładowo może to wyglądać w następujący sposób
  $host = ‘0.0.0.0′;
  $user = ‘janek’;
  $password = ‘jakies_haslo’;
  $dbName = ‘moja_baza’;
 
// połączenie i wybór bazy danych
  $polacz = mysql_connect($host, $user, $password) or die(mysql_error());
  $db = mysql_select_db($dbName, $polacz) or die(mysql_error());
?>

Polecienie mysql_connect() z argumentami zapisanymi w zmiennych $host, $user, $password. Przypisujemy do zmiennej $polacz. W przypadku braku połączenia wyświetlony zostanie błąd. Do zmiennej $db przypisujemy funkcję mysql_select_db(), która wybiera naszą bazę i wykonuje połączenie zapisane w zmiennej $połacz. Gdy połączenie jest nieudane polecenie  die(mysql_error()) wyrzuca błąd.
Kod: php

<?php

// wprowadzanie nowego wpisu po wciśnięciu przycisku submit
   if (isset($_POST[‘jakies_pole’]) && trim($_POST[‘jakies_pole’]) != ”) {
      $jakies_pole = $_POST[‘jakies_pole’];
// wstawianie wartości pobranej metodą POST do tabeli w naszej bazie
      $sql = "INSERT into tabela_testowa (nazwa_kolumny) VALUES (’$jakies_pole’)";
      $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
    } // koniec pobierania wartości pola o nazwie "jakies_pole"
?>

Ten kawałek sprawdza czy pobrana została metodą "POST" wartość pola o nazwie "jakies_pole" i czy wartość ta po zastosowaniu filtru "trim" jest różna od niczego. Jeżeli oba powyższe warunki są spełnione do zmiennej $jakies_pole przypisujemy wartość pola o nazwie "jakies_pole". Nie do końca rozumiesz co znaczy wartość pola o nazwie "jakies_pole" - taka wartość kryje się w formularzu w polu <input name="jakies_pole" />. Formularz jednak przeanalizujemy w dalszej części kodu.  Do zmiennej $sql przypisujemy treść polecenia mysql. Po naszemu brzmi to tak: umieść w tabeli "tabela_testowa" w kolumnie "nazwa_kolumny" wartości: wartość odebrana od zmiennej $jakies_pole. Natępnie do zmiennej $rezultat przypisywana jest wartość zapytania mysql_query(). Funkcja mysql_query() jako argumenty pobiera zmienną $sql i $polacz. Jęsli połączenie się nie uda następuje błąd.
Kod: php

<?php
// pobierabie wartości z tabeli "tabela_testowa"
   $sql = "SELECT nazwa_kolumny FROM tabela_testowa";
   $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
   
// wyświetlanie rezultatu na ekranie
   while ($lista = mysql_fetch_array($rezultat)) {
      echo $lista[‘nazwa_kolumny’]. "<br />";
   } // koniec while
?>

Najpierw do zmiennej $sql przypisywane jest zapytanie mysql: wybierz wartości z kolumny "nazwa_kolumny" z tabeli "tabela_testowa". Następnie do zmiennej $rezultat przypisywana jest wartość zapytania mysql_query(). Funkcja mysql_query() jako argumenty pobiera zmienną $sql i $polacz lub wyrzuca błąd w przypadku nieudanego połączenia. Następnie pętla while "mówi" - dopóki zmienna tablicowa $lista będzie wypełniana wartościami z kolumny "nazwa_kolumny" wyświetlaj na ekranie poszczególne wartości tej kolumny.
Kod: php

<?php     
// wyświetlenie formularza do wprowadzania danych
  echo <<<FORMULARZ
<br /> Dodaj wpis: <br />
<form action = "index.php" method = "post">
   <input type = "text" name = "jakies_pole" maxlength="20" size = "10">
   <input type = "submit" value = "Dodaj wpis">
</form>
FORMULARZ;
?>

To formularz z polem o nazwie "jakies_pole" i przyciskiem submit którego kliknięcie powoduje przeładowanie pliku index.php i wykonanie wszystkich instrukcji zapisanych w tym pliku. Mimo, że formularz znajduje się na końcu kodu, to właśnie od niego zaczyna się cała akcja. Po wciśnięciu przycisku submit następuje przeładowanie pliku index.php. Pole o nazwie "jakies_pole" przechowuje wówczas wartość, która równa jest temu co w to pole wpisaliśmy przed wysłaniem formularza. Żeby odebrać tę wartość przeładowany plik index.php pobiera metodą POST wartość pola "jakies_pole". Przypisuje tę wartość do zmiennej. Wartość zmiennej umieszcza poleceniem INSERT INTO w bazie. Następnie zapytanie SELECT pobiera tą wartość do zmiennej. Mając tę zmienną poleciem echo możemy ją wyświetlić.

W powyższym przykładzie w jednym pliku umieszczony został cały cykl od wpisania wartości w formularz do wyświetlenia ich z powrotem na ekranie. W praktyce polecenia rozdzielane są na wiele plików. W jednych zbieramy informacje z formularzy (np. formularze zamówień) i umieszczamy je w bazie. W innych wykorzystując te dane prezentujemy je w postaci np. tabeli zamówień.

Zrozumienie i opanowanie sztuki wykorzystywania baz danych i formularzy daje bardzo wiele możliwości. Większość, jeżeli nie wszystkie nowoczesne strony internetowe opieają się na takich mechanizmach.

Poniżej zamieszczam cały kod do wykorzystania na stronie.
Kod: mysql

   
CREATE TABLE `tabela_testowa` (
`nazwa_kolumny` VARCHAR( 20 ) NOT NULL
)
Kod: php

 
<?php

// informacje na temat bazy
  $host = ‘localhost’;
  $user = ‘username’;
  $password = ‘password’;
  $dbName = ‘databasename’;

// polaczenie i wybór bazy danych
  $polacz = mysql_connect($host, $user, $password) or die(mysql_error());
  $db = mysql_select_db($dbName, $polacz) or die(mysql_error());

// wprowadzanie do bazy nowego wpisu po wciśnięciu przycisku submit
   if (isset($_POST[‘jakies_pole’]) && trim($_POST[‘jakies_pole’]) != ”) {
      $jakies_pole = $_POST[‘jakies_pole’];
      $sql = "INSERT into tabela_testowa (nazwa_kolumny) VALUES (’$jakies_pole’)";
      $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
    }

// pobierabie wartości z tabeli "tabela_testowa"
   $sql = "SELECT nazwa_kolumny FROM tabela_testowa";
   $rezultat = mysql_query($sql, $polacz) or die(mysql_error());
   while ($lista = mysql_fetch_array($rezultat)) {
      echo $lista[‘nazwa_kolumny’]. "<br />";
   }
 

// formularz
echo <<<FORMULARZ
<br /> Dodaj wpis: <br />
<form action = "index.php" method = "post">
   <input type = "text" name = "jakies_pole" maxlength="20" size = "10">
   <input type = "submit" value = "Dodaj wpis">
</form>
FORMULARZ;
?>

 

 

 

 

A tutaj przykład jak zrobić prosty formularz. Po angielsku ale skapujesz:

 

 

Edytowane przez MasterYoghourt

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.