Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]prosty formularz a ja nie wiem jak to zrobic ;/
Forum PHP.pl > Forum > Przedszkole
Matius
Witam wszystkich,

jestem tutaj nowy i całkowicie zielony więc proszę o wyrozumiałość i jeśli ktoś ma chęć mi pomóc to byłbym bardzo wdzięczny.

Mój problem polega na tym że potrzebuje zrobić na jednej podstronie formularz w którym wpisywał bym w trzech polach jakiś tekst potem to akceptował no i żeby mi się to ładnie wszystko wyświetliło na stronie głównej w odpowiednim miejscu... Ważne jest żeby na stronie głównej maksymalnie takich wyświetleń było 5 i żeby najnowsze było na samej górze.

Czyli tak w skócie:
1. wpisuje w 3 polach tekst
2. na stronie głównej wyświetla mi się w rzędzie te 3 słowa (w tabeli w odpowiedniej komórce)
3. takich wierszy jest 5 ale ostatnio dodany wpis jest na samej górze
4. Jeśli dodamy 6 wpis to ten co był na samym dole kasuje się a nowy wskakuje na sama górę.


problem polega na tym że ja w ogóle nie wiem jak się za to zabrać ;/

Czytałem poradniki PHP oraz MYSQL ale nie wiele się dowiedziałem... nie umiem sobie z tym poradzić w ogóle tego nie rozumiem...

Bardzo proszę o pomoc bo naprawdę szukałem, czytałem, próbowałem sam zrobić ale nic mi nie wychodzi...


PS: dodaje szybki szkic o co mi chodzi
http://s1.zapodaj.net/images/3339624.jpg

informuje że posiadam baze danych oraz serwer php


bardzo proszę o pomoc sad.gif
Lion_87
1. Zrób formularz (to chyba mozesz zrobić po przeczytaniu kursów)
2. Zrob w php kod ktory bedzie pokazywal te 5 wierszy (wypelnij przykladowo poki co)
3. zrob sobie plik txt a w nim 5 wierszy typu
Kod
[see][]tekst1[]tekst2[]tekst3[]
[see][]tekst1[]tekst2[]tekst3[]
[see][]tekst1[]tekst2[]tekst3[]
[see][]tekst1[]tekst2[]tekst3[]
[see][]tekst1[]tekst2[]tekst3[]

4. Pobierz jakis skrypt komentarzy i zobacz jak on działa. Przerabiaj go, ćwicz, kombinuj i tyle
blooregard
Bardzo prosto:
- utwórz sobie w bazie tabelę, gdzie bbędziesz miał ID, pole1, pole2, pole3
- potem przechwytuj dane z formularza i zapisuj je do bazy za pomocą INSERT
- potem napisz kod pobierający dane z tabeli, sortując je po ID malejąco (ORDER BY)
- wyświetl sobie wyniki w tabelce (najświerzszy będziesz miał na górze)
- na samym końcu (już po zapytaniu INSERT wstawiającym do bazy oraz SELECT wyciągającym wszystko+ostatnio wstawiony rekord) wyświetl formularz

I już.
Skoro piszesz, że dużo czytałeś - dasz sobie radę.
Z PHP wystarczy Ci: kilka f-cji z rodziny mysql_ (do obsługi bazy, w każdym podręczniku PHP jest kilka podstawowych przykładów na łączenie, pobieranie i wstawianie danych); array(), foreach, echo, if/else
Z SQL podstawowa składnia INSERT oraz SELECT i f-cja ORDER BY

To wszystko, co musisz wiedzieć, by napisać taki skrypt.
Matius
Dobra poszukałem poszperałem no i tak...

1. Wchodzę sobie do phpMyAdmin i tworze tabele o nazwie "doladowania" i tam zboku daje ze chce 4 rekordy.
2. Po stu błędach i próbach udaje mi się ustawić coś takiego:

  1. CREATE TABLE `***`.`doladowania` ( `id` INT NULL AUTO_INCREMENT ,
  2. `nick` TEXT NOT NULL ,
  3. `numer` TEXT NOT NULL ,
  4. `wygrana` TEXT NOT NULL ,
  5. PRIMARY KEY ( `id` ) ) ENGINE = MYISAM


3. Następnie tworze plik index.phpw który zapisuje coś takiego:

  1. <?php
  2. <form name="ankieta" action="insert.php" method="post">
  3. NICK: <input type="text" name="nick"><br>
  4. NUMER: <input type="text" name="numer"><br>
  5. WYGRANA: <input type="text" name="wygrana"><br>
  6. <input type="submit" name="dodaj" value="OK!"> </form>
  7. ?>


4. oraz plik insert.php który był wpisany wyżej:

  1. <?php
  2.  
  3. $polaczenie=mysql_connect('***','***','***');
  4. if (!$polaczenie) echo ('Blad w polaczeniu z aparatem bazy danych!!!<BR>');
  5.  
  6. $stat=mysql_select_db('***',$polaczenie);
  7. if (!$stat) echo ('Nie mogę się połączyć z wybraną bazą danych!!!<BR>');
  8.  
  9.  
  10. $efekt=mysql_db_query("***","insert into doladowania (nick,numer,wygrana) values('$nick','$numer','$wygrana');");
  11.  
  12. if ($efekt) echo ('dopisałem rekord');
  13.  
  14. mysql_close($polaczenie);
  15.  
  16. ?>




Po tym wszystkim odpalam na serwerze plik index.php wypisuje jakieś dane wyświetla mi się komunikator "dopisałem rekord" wchodzę w phpMyAdmin i mam ID 1 ale tekstu z formularza nie dopisało, moja głowa myśli może serwer się zaciął i robię to jeszcze raz wchodzę i widzę ID2 ale w tabeli co jest "id nick numer wygrana" to tylko pod id jest "1, 2" pod "nick numer wygrana" nie ma nic po prostu puste pola w tabeli.

Co robię nie tak? wałek?

piotrooo89
register_globals. nie $nick a $_POST['nick'] i reszta analogicznie.
Matius
No dobra zrobiłem tak ale i tak nie działa...


  1. <?php
  2.  
  3. $polaczenie=mysql_connect('***','***','***');
  4. if (!$polaczenie) echo ('Blad w polaczeniu z aparatem bazy danych!!!<BR>');
  5.  
  6. $stat=mysql_select_db('***',$polaczenie);
  7. if (!$stat) echo ('Nie mogę się połączyć z wybraną bazą danych!!!<BR>');
  8.  
  9.  
  10. $efekt=mysql_db_query("***","insert into doladowania (nick,numer,wygrana) values($_POST['nick'],$_POST['numer'],$_POST['wygrana']);");
  11.  
  12. if ($efekt) echo ('dopisałem rekord');
  13.  
  14. mysql_close($polaczenie);
  15.  
  16. ?>


po wypełnieniu formularza pisze ze dopisano rekord wchodzę w bazę danych i ID nadal zwiększa się o 1 ale nick numer wygrana nadal puste ;/ nie wiem... naprawdę nie wiem. Proszę o pomoc. Może coś źle zrobiłem gdzieś?
piotrooo89
hmmmm...

  1. <?php
  2. $efekt=mysql_query("INSERT INTO doladowania SET
  3. nick='".$_POST['nick']."',
  4. numer='".$_POST['numer']."',
  5. wygrana='".$_POST['wygrana']."'") or die(mysql_error());
  6. ?>
Matius
Zapomniałem napisać że sobie już z tym poradziłem ale to użytkownik blooregard mi tak naprawdę wszystko podpowiedział w 2 poście więc dla niego piwo ;-)

Jak ktoś kiedyś będzie szukał no to tutaj znajdzie. Więc tak:

Tworzymy plik index.html w którym piszemy:

  1. <form name="ankieta" action="insert.php" method="post">
  2. NICK: <input type="text" name="nick"><br>
  3. NUMER: <input type="text" name="numer"><br>
  4. WYGRANA: <input type="text" name="wygrana"><br>
  5. <input type="submit" name="dodaj" value="OK!"> </form>



nastepnie tworzymy plik insert.php (bo ja akurat takiego użyłem)

  1. <?php
  2.  
  3. $polaczenie=mysql_connect('adres bazy danych','uzytkownik bazy danych','haslo bazy danych');
  4. if (!$polaczenie) echo ('Blad w polaczeniu z aparatem bazy danych!!!<BR>');
  5.  
  6. $stat=mysql_select_db('nazwa tabeli',$polaczenie);
  7. if (!$stat) echo ('Nie mogę się połączyć z wybraną bazą danych!!!<BR>');
  8.  
  9.  
  10. $efekt=mysql_db_query("nazwa tabeli","insert into doladowania (nick,numer,wygrana) VALUES('".$_POST['nick']."','".$_POST['numer']."','".$_POST['wygrana']."')");
  11.  
  12.  
  13. if ($efekt) echo ('dopisałem rekord');
  14.  
  15. mysql_close($polaczenie);
  16.  
  17. ?>



Następnie tworzymy plik wyswietlanie_zawartosci.php

  1. <?php
  2.  
  3. $polaczenie=mysql_connect('adres bazy danych','uzytkownik bazy danych','haslo bazy danych');
  4. if (!$polaczenie) echo ('Blad w polaczeniu z aparatem bazy danych!!!<BR>');
  5.  
  6. $stat=mysql_select_db('nazwa bazy',$polaczenie);
  7. if (!$stat) echo ('Nie mogę się połączyć z wybraną bazą danych!!!<BR>');
  8.  
  9.  
  10.  
  11.  
  12. $wynik = mysql_query("SELECT * FROM doladowania ORDER BY `id` DESC LIMIT 5")
  13. or die('Błąd zapytania');
  14.  
  15.  
  16.  
  17. if(mysql_num_rows($wynik) > 0) {
  18. echo "<table cellpadding=\"2\" style='width: 100%; border: 1px;'>";
  19. while($r = mysql_fetch_assoc($wynik)) {
  20. echo "<tr>";
  21. echo "<td style='width:20%'>".$r['nick']."</td>";
  22. echo "<td style='width:20%' >".$r['numer']."xxx</td>";
  23. echo "<td  style='width:10%' >".$r['wygrana']." zł</td>";
  24. echo "</tr>";
  25. }
  26. echo "</table>";
  27. }
  28.  
  29. ?>


no i na samy końcu tworzymy tabele w bazie danych w której będzie się znajdowało (w moim przypadku był to nick, numer, wygrana, id)

I wszystko ładnie śmiga jeśli chodzi o to co prosiłem w pierwszym poście :-) jeszcze tylko muszę dość jak dodać informacje ile jest rekordów w bazie ale to już tam kiedyś ;-) Dziękuje wszystkim którzy pomogli.

temat do zamknięcia

Pozdrawiam!
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.