Dane z formularza do bazy danych


(Jadekdj13) #1

Witam. Próbuję wysłać dane z formularza do bazy danych, ale submit nie reaguje. Coś na pewno źle zrobiłem. Tutaj skrypt:

<?php

$db_host = "localhost";
$db_user = "user";
$db_pass = "pass";
$db_name = "db";

$sql_conn = @mysql_connect($db_host,$db_user,$db_pass)
    or die("Error: Brak połączenia z serwerem MySQL");
$db_select = @mysql_select_db($db_name)
    or die('Error: Błąd wyboru bazy danych');

$timestamp = time();
$datum = date("Y-m-d (D) H:i:s",$timestamp);

echo 'Wpisz nick gracza:<input type="text">'.$nick.' Haslo:<input type="text">'.$pass.' <input type="submit" value"Wyślij">';
$zapytanie = "INSERT INTO `amx_amxadmins`(`id`, `username`, `password`, `access`, `flags`, `steamid`, `nickname`, `icq`, `ashow`, `created`, `expired`, `days`) VALUES (`AUTO_INCREMENT`,'.$nick.','.$pass.',`sz`,`ak`,``,'.$nick.',``,`0`,'.$datum.',`0`,`0`)";
mysql_query($zapytanie);
?>

Dziękuję z góry za pomoc. Pozdrawiam.


(Szymad) #2

Halt. Stop. Nie. Gdzie PDO?

 

Może ktoś inny Ci pomoże, ale podłącz PDO, naucz się z niego korzystać, on rozwiąże dużą część problemów, jest bezpieczniejszy. Naprawdę.


(Jadekdj13) #3

No dobrze PDO to do bazy ale dlaczego submit nie reaguje ?


(Szymad) #4

Kod formularza? Nie masz nigdzie form, nigdzie nie masz trybu pracy (POST/GET) ani nigdzie nie masz akcji (w tym przypadku to ten sam plik).


(Jadekdj13) #5

A więc mam takie coś. (połączenie z bazą i formularz w innym pliku.)

<?php
require("connection.php");
connection();
$nick = $_POST['nick'];
$pass = $_POST['pass'];
$timestamp = time();
$datum = date("Y-m-d (D) H:i:s",$timestamp);

$zapytanie = pierwsza kwerenda
$zapytanie = druga kweredna
$wykonaj = "mysql_query('$zapytanie') or die('Error')";

?>

Jak mam wykonać to, aby dopiero po wykonaniu pierwszej kwerendy i pobraniu z niej id wykonała się druga kwerenda.

Coś takiego?

<?php
require("connection.php");
connection();
$nick = $_POST['nick'];
$pass = $_POST['pass'];
$timestamp = time();
$datum = date("Y-m-d (D) H:i:s",$timestamp);

$zapytanie = pierwsza kwerenda
$wykonaj = "mysql_query('$zapytanie') or die('Error')";
if($wykonaj == true)
{
    $zapytanie1 = druga kwerenda
    $wykonaj1 = "mysql_query('$zapytanie1') or die('Error')";
}


?>

Do tego jak pobrać id użytkownika, tego którego wysłałem w kwerendzie pierwszej? Jest AUTO_INCREMENT.


(Szymad) #6

Uhhh, nie cierpię serio proceduralnego stylu. Dałem tu obiektowy. 

<?php

$mysql_host = 'localhost'; //host
$port = '3306'; //port 3306
$username = 'login';
$password = 'hasło';
$database = 'nazwa_bazy'; //jaką tam masz
 
try{
	$pdo = new PDO('mysql:host='.$mysql_host.';dbname='.$database.';port='.$port, $username, $password );
         /*mamy już połączenie :) */
        $sql = $pdo -> prepare('INSERT INTO `users` VALUES (
                                             NULL,
                                             :nick,
                                             :pass)');
        $sql -> bindParam(':nick',$_POST['nick'],PDO::PARAM_STR); //dodajemy nick
        $sql -> bindParam(':pass',sha1($_POST['pass']),PDO::PARAM_STR); //zhashowany pass
        $sql -> execute();

        $lastAdded = $pdo -> lastInsertID(); //zbieramy ostatni wprowadzony rekord
  
        if($lastAdded > 0){
              echo 'Wprowadzono '.$lastAdded;             
         }else{
             throw new Exception('Nie mogę dodać użytkownika');
         }
 
                                                         
	
}catch(PDOException $e){
	echo "I cały misterny plan...";
}
?>

Czy to o to chodziło? :slight_smile:

 

Nigdy nie trzymaj haseł w postaci zwykłego tekstu, w żaden sposób nie przetworzonego. Zawsze haszuj hasła - masz md5, sha1 i inne. Dodatkowo, możesz zmienić sól przy haszowaniu - bardzo zalecam.

 

I teraz tak:  http://phpkurs.pl/

Dwa:  http://pl.wikibooks.org/wiki/PHP/Czym_jest_framework%3F

Trzy:  http://ellislab.com/codeigniter

Cztery:  http://www.rubyonrails.pl/


(Jadekdj13) #7

Prawie o to, tylko, że nie chodzi o ostatni rekord tylko jedno pole z tego rekordu. Są pola nick, hasło, data dodania itp, a mi chodzi o pobranie wartości id w wysłanym rekordzie, id jest auto_increment.