Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]phpmyadmin + automatyczna data
Forum PHP.pl > Forum > Przedszkole
roxman
Witam jestem świeżakiem i dopiero zaczynam zabawe z php i sql dlatego proszę o cierpliwość. Mam pytanko zrobiłem wprowadzanie do bazy danych 3 danych imie nazwisko i mail oraz czwarta kolumna nazwana UID i chcialbym żeby wpisywało tutaj czas i date wpisu. W phpmyadmin wstawiam autotimestamp i wpisuje mi tylko 0000-00-00 00:00:00 podpowie ktoś jak to szturchnąć aby prawidłowo wpisywało czas z data ?
roxman
no fakt duzo mi to pomogło tu jest opisane jak w formularzu ustawiac a mnie interesuje jak w phpmyadmin ustawic jak bede bieglym programista to z pewnoscia sobie sam to zrobie na chwile obecna nie umiem dlatego szukam jak najprostrzego rozwiazania w formularzu zrobilem cos takiego

$zapytanie .="VALUES ('(NOW()),'$imie','$nazwisko','$mail')"

i jest ok wszystkie dane wprowadza do tabeli prawidlowo tylklo nie timestamp jest 00 wszędzie
Pyton_000
pole datetime z default CURRENT_TIMESTAMP i attribute ON UPDATE...
nospor
No przeciez ci napisano... DLa kolumny masz dac typ TIMESTAMP. Kolumna tego typu bedzie wypelniana datą wpisu rekordu
roxman
no ok wiec mam tak
Nazwa kolumny UID
TYP DATETIME
Długość pusto
Ustawienia domyślne CURRENT_TIME
Metoda porównywania napisów puste
ATRYBUTY ON UPDATE CURRENT TIME

biore save i wyskakuje mi błąd #1067 INVALID DEFAULT VALUE FOR UID
Pyton_000
Cytat(Pyton_000 @ 10.07.2014, 12:29:31 ) *
pole datetime z default CURRENT_TIMESTAMP i attribute ON UPDATE...


Cytat
Ustawienia domyślne CURRENT_TIME


Znajdź 10 różnic
roxman
zmieniam na TIMESTAMP i dalej to samo nie wiem o jakie ci różnice biega

00-00 00:00:00 999 999 999
0000-00-00 00:00:00 ezzz def 120
0000-00-00 00:00:00 ezzz def 120
0000-00-00 00:00:00 ezzz def 120
0000-00-00 00:00:00 ezzz def 120
0000-00-00 00:00:00 ezzz def 120
0000-00-00 00:00:00 jokkkk def 120
0000-00-00 00:00:00 jokkkk def 120
nospor
$zapytanie .="VALUES ('(NOW()),'$imie','$nazwisko'
Skoro pole jest timestamp, to ty juz sam nie musisz wprowadzac dla niego wartosci.... Ba, nawet nie powinienies.
Ale skoro juz sam wprowadzasz te wartosc, to:
1) Daj polu typ poprostu DATETIME
2) Wprowadzaj poprawnie..... NOW() to funkcja a nie tekst...... Tak ma byc:
$zapytanie .="VALUES (NOW(),'$imie','$nazwisko'
roxman
nic nie dziala zastosowalem sie do twoich sugesti zawsze jest 000000
nospor
widac zastosowales się źle...

Pokaz kod po zmianach. Poczatkujacy lubią popelniac cale masy glupich bledow, nawet jak mają wszystko niemal podane. Pamietaj o tym i podawaj na przyszlosc sam kod bez proszenia o niego
roxman
Jako że mnie nie wychodzi postanowiłem zaadoptować taki skrypt od wójka google aby zrozumieć o co w tym wszystkim biega bo egzamin E-14 sie zbliża a ja w szczerym polu jestem ale w głębokim lesie. Nadmienie tylko że autor tego skrytu wyraża zgodę na jego użycie i modyfikacje "http://www.cauchy.pl/systemy/php-mysql/wprowadzanie-danych-do-bazy-mysql/" Do celów edukacyjnych nadaje się wyśmienicie.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Serwis ABC</title>
<meta http-equiv=content-type content="text/html; charset=iso-8859-2">
<meta http-equiv="Content-Language" content="pl">
</head>

<body>
<?php

////////////////////////////////////////////////////////////
//Przykład kodu wprowadzającego dane do bazy mysql
//Sposob dzialania kodu:
//Kod obrazuje zapisywanie sie na listy dystrybucyjna newslettera
//Po otwarciu strony uzytkownik widzi formularz gdzie musi podac:
// * imie
// * nazwisko
// * adres mail
//Po kliknieciu przycisku "Zaloguj" kod sprawdza czy podane sa wszystkie
//pola (imie, nazwisko, mail) oraz usuwa biale znaki z poczaku i konca
//kazdego pola
// Jesli podane sa wszystkie pola to sa one wprowadzane do bazy mysql
// Jesli nie sa podane wszystkie pola to wyswietlana jest informacja
// o bledzie i wyswietlany jest ponownie formularz zapisu na
// newsletter
//Ograniczenia programu
// 1. Program nie sprawdza czy uzytkownik juz istnieje w bazie
// 2. Program nie sprawdza czy adres mail ma poprawna skladnie
//Wymagania
// 1. Zalozona baza mysql na serwerze
// 2. Tabela newsletter w bazie mysql z polami imie, nazwisko, mail
////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////
//Definicje zmiennych

//adres ip serwera mysql który zawiera bazę danych i tabele z osobami
//zapisanymi na listę dystrybucyjna newslettera
$adres_ip_serwera_mysql_z_baza_danych = '91.200.238.15';

//nazwa bazy danych z tabelą newsletter zawierającą osoby zapisane na
//listę dystrybucyjna newslettera
$nazwa_bazy_danych = 'test2';

//nazwa uzytkownika bazy danych $nazwa_bazy_danych
$login_bazy_danych = 'man';

//haslo uzytkownika bazy danych $nazwa_bazy_danych
$haslo_bazy_danych = 're12';

//Formularz umozliwiajacy dopisanie się do bazy danych czyli zapisanie
//się na liste dystrybucyjna newslettera
//Formularz bedzie pokazywany gdy strona wyswietlana pierwszy raz
//lub gdy użytkownik poda bledne lub niepelne dane
$formularz_dodaj_uzytkownika = '
<FORM method="POST" action="">
Ime: <INPUT type="text" name="imie">
<br />Nazwisko: <INPUT type="text" name="nazwisko">
<br />Mail: <INPUT type="text" name="mail">
<br /><INPUT type="submit" value="Zapisz się!">
</FORM>
';

////////////////////////////////////////////////////////////
//Kod programu

//Ustanawiamy połączenie z serwerem mysql
if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,

$login_bazy_danych, $haslo_bazy_danych) ) {
echo 'Nie moge polaczyc sie z baza danych';
exit (0);
}
//Wybieramy baze danych na serwerze mysql ktora zawiera tabele
//newsletter gdzie sa dane osob z listy dystrybucyjnej
if ( !mysql_select_db($nazwa_bazy_danych) ) {
echo 'Blad otwarcia bazy danych';
exit (0);
}

//Sprawdzamy czy formularz został zaakceptowany - czyli czy zmienna
//$_POST["mail"] jest zdefiniowana
//Jesli zmienna $_POST["mail"] nie jest zdefiniowana to strona jest
//wyswietlana po raz pierwszy i wyswietlimy formularz dodania do
//newslettera
//Jesli zmienna $_POST["mail"] jest zdefiniowana to strona byla
//wczesniej wyswietlana i formularz dodania do newslettera zostal
//zaakceptowany. Musimy sprawdzic poprawnosc danych (poprawne to
//dodajemy nowa osobe na liste dystrybucujna, niepoprawne to wyswietlamy
//komunikat bledu i ponownie wysiwetlamy formularz)
if ( isset($_POST["mail"]) ){
//Jesli zmienna $_POST["mail"] jest zdefiniowana to znaczy, ze nasza
//strona jest wyswietlana po raz kolejny. Wczesniej ktos wypelnil
//formularz i wcisnal przycisk "Zapisz się!"

//Porzadkujemy dane wprowadzone przez uzytkownika
SkorygujZmienneZFormularza($imie,$nazwisko,$mail);
//Sprawdzamy czy uzytkownik podal poprawne dane
$czy_poprawne_dane = SprawdzPoprawnoscDanych ($imie, $nazwisko,

$mail);
if ($czy_poprawne_dane == "dane_ok") {
//Jesli podane przez uzytkownika dane sa ok to wprowadzamy je do tabeli

//Definiujemy zapytanie do tabeli newsletter wpisujace dane nowego
//subskrybenta

$zapytanie = "INSERT INTO `newsletter` (`UID`, `Imie`, `Nazwisko`,`Mail`) ";
$zapytanie .= "VALUES ('', '$imie', '$nazwisko', '$mail')";


//Wykonujemy zapytanie na bazie mysql
$wynik_zapytania = mysql_query($zapytanie);
//Sprawdzamy cz baza danych zwrocila blad
if (!$wynik_zapytania) {
//Jesli baza danych zwrocila blad to wyswietlamy komunikat o problemie
//z baza danych
echo("<br />Nie moge dodać rekordu do bazy!<br /><br />");
} else {
//Jesli dodanie subskrybenta sie udalo to wyswietlamy gratulacje oraz
echo "Gratulacje!!!";
echo "<br />Właśnie zostałeś zapisany na listę dystrybucyjną

naszego wspaniałego newslettera!!!!";
}
} else {
//Jesli podane przez uzytkownika dane sa niepoprawne to informujemy
//o bledzie i ponownie wysiwetlamy komunkat
echo "Wprowadziles niepoprawne dane do formularza.
Być może nie wszystkie pola sa wypelnione";
echo "<br />Spróbuj ponownie:";
echo $formularz_dodaj_uzytkownika;
}
} else {
//Jesli nasza strona jest wyswietlana po raz pierwszy (zmienna
//$_POST["mail"] niejest zdefiniowana) to
// * zachecamy do zapisania sia na liste newslettera
// * wyswietlamy formularz pozwalajacy pdoac nowego subskrybenta
echo "Zapisz się <strong>TERAZ</strong> na listę dystrybucyjną
naszego wspaniałego newslettera.";
echo $formularz_dodaj_uzytkownika;
}

//Zamykamy połączenie z bazą danych
if ( !mysql_close() ) {
echo 'Nie moge zakonczyc polaczenia z baza danych';
exit (0);
}

////////////////////////////////////////////////////////////
//Dodatkowe funkcje

////////////////////////////////////////////////////////////
//// Funkcja SkorygujZmienneZFormularza(&$imie,&$nazwisko,&$mail) ////
//Funkcja porządkuje dane wprosprawdzone do formularza:
//Jesli pole nie zostalo wproawadzone to zmienna ma pusta wartosc ("")
//Jesli pole zostalo wproawadzone to ma obcinane puste spacje z obu
//stron
//////////////////////////////////////////////////////////////////////
function SkorygujZmienneZFormularza(&$imie,&$nazwisko,&$mail) {
if ( isset($_POST["imie"]) )
$imie = trim($_POST["imie"]);
else
$imie = "";
if ( isset($_POST["nazwisko"]) )
$nazwisko = trim($_POST["nazwisko"]);
else
$nazwisko = "";
if ( isset($_POST["mail"]) )
$mail = trim($_POST["mail"]);
else
$mail = "";
}

////////////////////////////////////////////////////////////
//// Funkcja SprawdzPoprawnoscDanych ($imie, $nazwisko, $mail) ////
//Funkcja sprawdza czy podane przez uzytkownika dane sa poprawne czyli
//czy nie sa puste
//Jesli ktorekolwiek pole $imie lub $nazwisko lub $mail jest puste to
//zwracany jest komunikat o niepoprawnych danych (zle_dane)
//Jesli wszystkie pola $imie lub $nazwisko lub $mail są wypełnione to
//zwracany jest komunikat o poprawnych danych (dane_ok)
////////////////////////////////////////////////////////////////////////
function SprawdzPoprawnoscDanych ($imie, $nazwisko, $mail) {
if ( ($imie=="") || ($nazwisko=="") || ($mail=="") )
return "zle_dane";
return "dane_ok";
}

?>
</body>
</html>


Niby wszystko ładnie śmiga tutaj ale w podkreślonym kawałku nie wiem jak dodać tą autodatę w kolumnie UID. Nie wiedzieć czemu nie wyświetla mi poprawnie polskich znaków wystawiłem to do wglądu tutaj http://91.200.238.15/tmp/index.php Muszę się zastanowić jak dodać tutaj linijkę chcąc poprawić zamiast dopisywać podejrzewam że zamiast INSERT zamienić trzeba by było na UPDATE
nospor
1) Uzywaj BBCODE dla wstawianego kodu
2)
Cytat
nie wiem jak dodać tą autodatę w kolumnie UID
Koluma UID to pole z datąquestionmark.gif To pisalem ci przeciez jak to ma wygladac.....
  1. $zapytanie = "INSERT INTO `newsletter` (`UID`, `Imie`, `Nazwisko`,`Mail`) ";
  2. $zapytanie .= "VALUES (now(), '$imie', '$nazwisko', '$mail')";
roxman
qurde ale to proste kreciłem się na około a faktycznie INERT INTO to jest wskazanie gdzie chcę wpisać wartości a VALUES podaje co ma być tam wpisane. Dzięki serdeczne dopiero jak moje gały to ujrzały poskładało mi się to w całość. Wiem że to podstawy ale niestety muszę przez to przejść żeby zagłębiac się z czasem coraz mocnie dzięki za cierpliwość.

<?php
// nawiazujemy polaczenie
$connection = @mysql_connect('91.200.238.15', 'man', '12')
// w przypadku niepowodznie wyświetlamy komunikat
or die('Brak polaczenia z serwerem MySQL.<br />Blad: '.mysql_error());
// połączenie nawiązane ;-)
echo "Udalo sie polaczyc z serwerem!<br />";
// nawiązujemy połączenie z bazą danych
$db = @mysql_select_db('wojsko', $connection)
// w przypadku niepowodzenia wyświetlamy komunikat
or die('Nie moge polaczyc sie z baza danych<br />Blad: '.mysql_error());
// połączenie nawiązane ;-)
echo "Udalo sie polaczyc z baza dancych!<br />";
// zamykamy połączenie
//mysql_close($connection);

/* zapytanie do konkretnej tabeli */
$wynik = mysql_query("SELECT * FROM dane")
or die('Blad zapytania!');

/*
wyświetlamy wyniki, sprawdzamy,
czy zapytanie zwróciło wartość większą od 0
*/
if(mysql_num_rows($wynik) > 0) {
/* jeżeli wynik jest pozytywny, to wyświetlamy dane */
echo "<table cellpadding=\"2\" border=1>";
while($r = mysql_fetch_assoc($wynik)) {
echo "<tr>";
echo "<td>".$r['login']."</td>";
echo "<td>".$r['rodzaj']."</td>";
echo "<td>".$r['ilosc']."</td>";
echo "<td>
<a href=\"index.php?a=del&amp;id={$r['id']}\">DEL</a>
<a href=\"index.php?a=edit&amp;id={$r['id']}\">EDIT</a>

</td>";
echo "</tr>";
}
echo "</table>";
}

?>

Mam pytanko do tego skryptu wszystko z niego rozumiem tylko zastanawia mnie jedna sprawa podświetliłem klawisze edycji DEL i EDIT są jak gdyby nie aktywne czy jeżeli chciałbym żeby usuneły rekor lub włączyć edycje to muszę odwołanie do funkcji UPDATE I DELETE podlinkować ?
nospor
Po raz ostatni proszę byś zaczął uzywac BBCODE

I tak, jesli chcesz by sie cos kasowalo to wypadaloby kod do kasowania napisac i podpiac. Samo w magiczny sposob się nie zrobi
roxman
Hmm chciałem zastosować wiedzę z poprzedniego skryptu wygenerowałem fajny formularz z bajerami http://91.200.238.15/tmp/form/form.html wygląda świetnie ale gdzieś po drodze straciło funkcjonalność nie wprowadza danych z formularza do bazy sql. Może ktoś rzucić okiem na to i powiedzieć mi gdzie naknociłem ? czy problem leży w pobraniu danych z tablicy $_POST czy może w zapytaniu do sql ? Bo pacze sie i pacze nic chyba nie wypacze porównuje z innymi skryptami powinno chodzić ale znowu gdzieś coś mi umyka.

  1. long_code_here = ';
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o$
  4. <html xmlns="http://www.w3.org/1999/xhtml">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>IMPERIUM TENGU</title>
  8. <link rel="stylesheet" type="text/css" href="view.css" media="all">
  9. <script type="text/javascript" src="view.js"></script>
  10.  
  11. </head>
  12.  
  13. <body id="main_body" >
  14.  
  15. <img id="top" src="top.png" alt="">
  16. <div id="form_container">
  17.  
  18. <h1><a>IMPERIUM TENGU</a></h1>
  19. <form id="form_872826" class="appnitro" method="post" action="$
  20. <div class="form_description">
  21. <h2>IMPERIUM TENGU</h2>
  22. <p>Organizacja para militarna.</p>
  23. </div>
  24. <ul >
  25.  
  26. <li id="li_1" >
  27. <label class="description" for="element_1">Podaj login </label>
  28. <div>
  29. <input id="element_1" name="element_1" class="element t$
  30. </div>
  31. </li> <li id="li_2" >
  32. <label class="description" for="element_2">Wybierz rodzaj wojsk$
  33. <div>
  34. <input id="element_2" name="element_2" class="element t$
  35. </div>
  36. </li> <li id="li_3" >
  37. <label class="description" for="element_3">Podaj ilosc wojakow $
  38. <div>
  39. <input id="element_3" name="element_3" class="element t$
  40. </div>
  41. </li>
  42.  
  43. <li class="buttons">
  44. <input type="hidden" name="form_id" value="872826" $
  45.  
  46. <input id="saveForm" class="button_text" type="$
  47. </li>
  48. </ul>
  49. </form>
  50. <div id="footer">
  51. Generated by <a href="http://www.phpform.org">pForm</a>
  52. </div>
  53. </div>
  54. <img id="bottom" src="bottom.png" alt="">
  55.  
  56. <?php
  57. $adres_ip_serwera_mysql_z_baza_danych = '91.200.238.15';
  58. $nazwa_bazy_danych = 'wojsko';
  59. $login_bazy_danych = 'man';
  60. $haslo_bazy_danych = 'em';
  61.  
  62. if ( !mysql_connect($adres_ip_serwera_mysql_z_baza_danych,
  63.  
  64. $login_bazy_danych, $haslo_bazy_danych) ) {
  65. echo 'Nie moge polaczyc sie z baza danych';
  66. exit (0);
  67.  
  68. if ( !mysql_select_db($nazwa_bazy_danych) ) {
  69. echo 'Blad otwarcia bazy danych';
  70. exit (0);
  71.  
  72. //pobieram wartosci z formularza
  73.  
  74. $login=$_POST['element_1'];
  75. $rodzaj=$_POST['element_2'];
  76. $ilosc=$_POST['element_3'];
  77.  
  78. $zapytanie = "INSERT INTO `dane` (`UID`, `Imie`, `Nazwisko`,`Mail`) ";
  79. $zapytanie .= "VALUES (now(), '$imie', '$nazwisko', '$mail')";
  80.  
  81. mysql_query($zapytanie);
  82.  
  83.  
  84. ?>
  85.  
  86.  
  87. </body>
  88. </html>
  89.  
  90.  
  91.  
  92.  
nospor
Do kodu PHP oraz PHP+HTML nalezy uzywac BBCODE PHP
Poprawilem Twoj post o to bbcode. Nie sądzisz ze czytelniej?

Co to za jakies dolary w kodzie?? Przeciez ten kod jest totalnie skaszaniony.

Zas co do kodu php, to wkladasz do bazy zmienne $imie, $nazwisko, $mail a nigdzie ich nie tworzysz to sie nie dziw ze sie nie wkladają....
Prosze, tu jest temat:
Temat: Jak poprawnie zada pytanie
z praktycznymi wskazowkami. Zapoznaj sie z nim i zastosuj do niego. Masz tam napisane jak wyswietlac bledy, jak wyswietlac bledy zapytan, jak sprawdzac zawartosc zmiennych i inne... Gdybys to zrobil, to bys widzial blad od razu na ekranie.

Kolejna rzecz: zajrzyj w zrodlo strony do ktorej sam dales nam linka. Przeciez tam jest caly kod, wlacznie z php. Oznacza to, ze kod php nie zostal w ogole sparsowany. I nic dziwnego, jak ty go umieszczasz w pliku .html. Kod php ma byc w pliku .php

Oraz kolejna rzecz na pozniej: dane do bazy masz wkladac dopiero gdy zostanie wyslany formularz. Czyli masz uzyc IF
roxman
Najsmutniejsze jest to że przeczytałem i wcale mnie to nie oświeciło w dalszym ciągu nie wiem co robię nie tak.
nospor
Pierwsze i najwazniejsze: poprawiles w ogole to:
Cytat
Kolejna rzecz: zajrzyj w zrodlo strony do ktorej sam dales nam linka. Przeciez tam jest caly kod, wlacznie z php. Oznacza to, ze kod php nie zostal w ogole sparsowany. I nic dziwnego, jak ty go umieszczasz w pliku .html. Kod php ma byc w pliku .php

questionmark.gif
Matt23
Po pierwsze, co to to w pierwszej linijce?
Po drugie, linijka 19 = zmień końcówkę na
  1. action="#">

Po trzecie wyrzuć te klasy z dolarami, albo wprowadź je poprawnie.
Po czwarte, ten przycisk wysyłania też cos dizwnie wyglada
Po piąte w kodzie php, na samym początku daj
  1. if(isset($_POST['element_1']) && isset($_POST['element_2']) && isset($_POST['element_3'])) {
  2. cały pozostały kod php
  3. }

Po szóste, zdefiniuj zmienne, które wrzucasz do bazy, linie 74-76 zmień na
  1. $imie=$_POST['element_1'];
  2. $nazwisko=$_POST['element_2'];
  3. $mail=$_POST['element_3'];

Po siódme, zapytanie można skonstruować tez tak i nie wiem, czy nie lepiej:
  1. $zapytanie = "INSERT INTO `dane` (`UID`, `Imie`, `Nazwisko`,`Mail`) VALUES (now(), '$imie', '$nazwisko', '$mail')";
nospor
Cytat
Po siódme, zapytanie można skonstruować tez tak i nie wiem, czy nie lepiej:
A co w tym niby takiego lepszego w porownaniu do tego co jest teraz?
Dolary to blad kopiowania. Na stronie mial poprawnie
O innych rzeczach juz pisalem.

A i tak najwazniejsze teraz jest to, by to odpalał jako php a nie jak wczesniej jako HTML
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.