Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Dane z formularza do bazy danych
Forum PHP.pl > Forum > Przedszkole
Malas
A więc uczę się jakiś niedługi czas php i w miarę postępów nauki postanowiłem pisać(a następnie udoskonalać) swój skrypt. Ok przejdźmy do rzeczy:
Założenia skryptu:
- poprzez formularz.html dodaje sobie zawodnika (chodzi o piłkę nożną). Dostęp do formularz.html miałby być poprzedzony logowaniem.
- plik obsluz_profil.php sprawdza czy podałem jakikolwiek tekst we wszystkich polach, a następnie poniżej wyświetla parametry zawodnika, które wprowadziłem w formularzu.
- jego dane dodaje do bazy danych.
To co już wydaje mi się, że zrobiłem to:
-stworzenie formularza
-stworzenie pliku obsluz_profil.php tak aby sprawdzał czy wprowadziłem dane we wszystkich polach i wyświetlał parametry gracza które podałem.
To co chciałbym jeszcze uzyskać:
- dodanie danych zawodnika do bazy danych
- dorobienie funkcji, która pozwalałaby mi dodać również zdjęcie(np 200x200px, jeżeli większe lub mniejsze to chciałbym aby skrypt przerabiał to zdjęcie właśnie na 200x200px)

To teraz przejdźmy do treści plików:
formularz.html
Cytat
<html>
<head>
<title>Profil Zawodnika</title>
</head>
<body>

<form action="obsluz_profil.php" method="post">
<fieldset><legend>Wprowadz do ponizszego formularza dane zawodnika ktorego chcesz dodac do bazy </legend>

<p><b>Imie:</b> <input type="text" name="imie" size="20" maxlenght="40" /></p>

<p><b>Nazwisko:</b> <input type="text" name="nazwisko" size="20" maxlenght="40" /></p>

<p><b>Kraj:</b> <input type="text" name="kraj" size="20" maxlenght="40" /></p>

<p><b>Data urodzenia:</b> <input type="text" name="urodzony" size="20" maxlenght="40" /></p>

<p><b>Miejsce urodzenia:</b> <input type="text" name="miejsce" size="20" maxlenght="40" /></p>

<p><b>Wzrost:</b> <input type="text" name="wzrost" size="20" maxlenght="40" /></p>

<p><b>Waga:</b> <input type="text" name="waga" size="20" maxlenght="40" /></p>

<p><b>Pozycja:</b> <select name="pozycja">
<option value="bramkarz">Bramkarz</option>
<option value="obronca">Obronca</option>
<option value="pomocnik">Pomocnik</option>
<option value="napastnik">Napastnik</option></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Wyslij dane" />
</form>
</div>
</body>
</html>




obsluz_profil.php
Cytat
<html>
<head>
<title>Potwierdzenie Dodania</title>
</head>
<body bgcolor="#CCCCCC">

<?php


// Sprawdzanie czy w każde pole wprowadzona została jakaś treść

if (!empty($_REQUEST['imie'])) { $imie = stripslashes($_REQUEST['imie']);
} else {
$imie = NULL;
echo '<p><font color="red">Zapomniales podac imienia!</font></p>';
}


if (!empty($_REQUEST['nazwisko'])) { $nazwisko = stripslashes($_REQUEST['nazwisko']);
} else {
$nazwisko = NULL;
echo '<p><font color="red">Zapomniales podac nazwiska!</font></p>';
}


if (!empty($_REQUEST['kraj'])) { $kraj = stripslashes($_REQUEST['kraj']);
} else {
$kraj = NULL;
echo '<p><font color="red">Zapomniales podac kraju!</font></p>';
}


if (!empty($_REQUEST['urodzony'])) { $urodzony = stripslashes($_REQUEST['urodzony']);
} else {
$urodzony = NULL;
echo '<p><font color="red">Zapomniales podac daty urodzenia!</font></p>';
}


if (!empty($_REQUEST['miejsce'])) { $miejsce = stripslashes($_REQUEST['miejsce']);
} else {
$miejsce = NULL;
echo '<p><font color="red">Zapomniales podac miejsca urodzenia!</font></p>';
}


if (!empty ($_REQUEST['wzrost'])) { $wzrost = stripslashes($_REQUEST['wzrost']);
} else {
$wzrost = NULL;
echo '<p><font color="red">Zapomniales podac wzrostu!</font></p>';
}



if (!empty($_REQUEST['waga'])) { $waga = stripslashes($_REQUEST['waga']);
} else {
$waga = NULL;
echo '<p><font color="red">Zapomniales podac wagi!</font></p>';
}


$pozycja = $_REQUEST['pozycja'];

// Wyświetlanie wprowadzonych danych

echo '<p><font face="arial">Dziekujemy, zawodnik o ponizszych parametrach zostal dodany do bazy danych
</font><br /><br />';
echo "<b>Imie:</b> $imie <br /><br />
<b>Nazwisko:</b> $nazwisko <br /><br />
<b>Kraj:</b> $kraj <br /><br />
<b>Data urodzenia:</b> $urodzony <br /><br />
<b>Miejsce urodzenia:</b> $miejsce <br /><br />
<b>Wzrost:</b> $wzrost <br /><br />
<b>Waga:</b> $waga <br /><br />
<b>Pozycja:</b> $pozycja <br /><br />";



?>

</body>
</html>


To teraz dalej. Niezbyt opanowałem jeszcze MySQL'a więc nie bardzo wiem jak dodać wprowadzone dane do bazy danych:

na końcu pliku obsluz_profil.php dołączam:
Cytat
require_once ('mysql/mysql_connect.php');




// Utwórz zapytanie.
$query = "INSERT INTO users (imie, nazwisko, kraj, urodzony, miejsce, wzrost, waga, pozycja) VALUES ('$imie', '$nazwisko', '$kraj', '$urodzony', '$miejsce', '$wzrost', '$waga', '$pozycja', NOW() )";
$result = @mysql_query ($query);
if ($result)


// Wy¶wietl komunikat.
echo '<h1 id="mainhead">Dziekujemy!</h1>
<p>Dane zawodnika zostaly dodane do bazy</p><p><br /></p>';

mysql_close();

plik służący do połączenia się z bazą znajduje się w "mysql/mysql_connect.php . Tu nie mam żadnych wątpliwości czy jest dobrze, bo łączy się z bazą poprawnie. Problem leży w dalszej części czyli utworzeniu poprawnego zapytania

Zwyczajnie wyciągnąłem to z innego skryptu, zapewne to jakieś głupoty smile.gif więc proszę o pomoc.

W reszcie "skryptu" (szczególnie obsluz_profil.php) pewnie sporo jeszcze większych głupot jest, proszę o wyrozumiałość.

To by było na tyle:P
Kalinowcyk
Po pierwsze nie zgadza Ci się ilość wstawianych wartości z ilością pól w tabeli.

Poza tym na pierwszy rzut oka wygląda ok.
Czy tabele masz stworzoną?
Wywala Ci jakieś błędy?

Zamień tą linie:

  1. <?php
  2. $result = @mysql_query ($query);
  3. ?>


na taką:

  1. <?php
  2. $result = mysql_query ($query) or die(mysql_error());
  3. ?>


Wtedy w przypadku błędów w zapytaniu ładnie wyświetli Ci o jakie błędy chodzi.
Ellington
Wykorzystaj funkcję mysql_error(), która pokaże Ci, gdzie w zapytaniu do bazy masz błąd, jeżeli takowy występuje. Wydaje mi się, że problem będzie tkwił w liczbie komórek tabeli, do której wysyłasz wartości - na pewno nie równoważą się, bo wysyłasz 9 wartości do 8 kolumn bazy:<br /><br />
  1. INSERT INTO users (imie, nazwisko, kraj, urodzony, miejsce, wzrost, waga, pozycja) VALUES ('$imie', '$nazwisko', '$kraj', '$urodzony', '$miejsce', '$wzrost', 
  2. 560
  3. 9;$waga', '$pozycja', NOW() )
<br /><br />Wszystko też zależy od architektury bazy - możliwe, że jakieś pole pominąłeś.
trike
zmienne w zapytaniu umieszczaj nastepujaco:
  1. <?php
  2. $query ="INSERT INTO users (imie, nazwisko, kraj, urodzony, miejsce, wzrost, waga, pozycja) VALUES ('".$imie."', '".$nazwisko."', '".$kraj."', '".$urodzony."', '".$miejsce."', '".$wzrost."', '".$waga."', '".$pozycja."', NOW() )\";
  3. ?>


a o tym ze masz nierowna ilosc pol w tabeli z wstawianymi danymi to juz zauwazyli chlopaki wyzej
Malas
Cytat(Kalinowcyk @ 26.03.2009, 21:25:37 ) *
Po pierwsze nie zgadza Ci się ilość wstawianych wartości z ilością pól w tabeli.

Poza tym na pierwszy rzut oka wygląda ok.
Czy tabele masz stworzoną?
Wywala Ci jakieś błędy?

Zamień tą linie:

  1. <?php
  2. $result = @mysql_query ($query);
  3. ?>


na taką:

  1. <?php
  2. $result = mysql_query ($query) or die(mysql_error());
  3. ?>


Wtedy w przypadku błędów w zapytaniu ładnie wyświetli Ci o jakie błędy chodzi.

Zrobiłem tak jak mówisz i rzeczywiście wywala:
Cytat
Column count doesn't match value count at row 1


Cytat
a o tym ze masz nierowna ilosc pol w tabeli z wstawianymi danymi to juz zauwazyli chlopaki wyzej

Ale ciut nie rozumiem. http://www.bankfotek.pl/image/211642.jpeg
Mam 8 pól i wstawiam dane z 8 zmiennych tak?to w czym problem?
Ellington
Usuń z zapytania funkcję NOW()

Notice: Tak na przyszłość to polecałbym dodać jeszcze jedną kolumnę 'id'. Znacznie ułatwi Ci to pracę na późniejszym etapie. W końcu nazwisko nikogo nie identyfikuje, nie jednemu psu Burek.
trike
NOW() traktowana jest jako kolejna zmienna
Malas
Ok wielkie dzięki za szybką pomoc teraz działa idealnie:)
Jeżeli mógłbym prosić, nie zamykajcie tego tematu, jak już pisałem będę próbował udoskonalać ten skrypt więc jeżeli będę miał problem, lub będę chciał zaprezentować to co zrobiłem to zrobię to w tym temacie.

Teraz chciałbym aby automatycznie tworzyło link do strony z profilem dodanego zawodnika. Nie wiem na razie jak się za to zbytnio zabrać. Moglibyście mnie nakierować?smile.gif
Spawnm
profil.php?id=nowo dodane id nowego usera
teraz w pliku odczytujesz id usera przez $_GET['id']
sprawdzasz czy is_numeric co by ktoś nam psikusa nie zrobił
  1. <?php
  2. $id=$_GET['id'];
  3. if(!is_numeric($id)){
  4. die('nie kombinuj');
  5. }
  6. ?>

i dajesz w mysql->
  1. SELECT dane_usera FROM tabela WHERE is_usera=$id
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.