Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dodawanie i odczyt danych z bazy
Forum PHP.pl > Forum > Przedszkole
Ideal
Udało mi się stworzyć coś takiego:

Formularz: Nick, Data, Komentarz - DANE z formularza sa wysylane do bazy danych - I TO DZIALA smile.gif

Nastepnie chce umiescic dane z bazy danych na stronie i to tez działa ale:

Za kazdym razem jak otwieram strone lub ODSWIEZAM to puste dane wchodza automatycznie do bazy a co za tym idzie - puste dane pojawiaja sie na stronie. Jak to naprawic ?

dodajkomentarz.php

  1. <?php
  2. if(empty($_POST['nick']) && empty($_POST['avatar']) && empty($_POST['komentarz'])){
  3.  
  4. echo '<form action="komentarze.php" method="post">
  5.  
  6. Nick: <input type="text" name="nick" />
  7.  
  8. Twoj Komentarz: <textarea name="komentarz" cols="45" rows="5"></textarea>
  9.  
  10. <input type="submit" value="Dodaj komentarz" />
  11.  
  12. </form>';
  13. }
  14. ?>


komentarze.php
  1. <?php
  2.  
  3. $time = date("Y-m-d H:i:s");
  4.  
  5.  
  6. $con = mysql_connect("localhost","xxx","xxx");
  7. if (!$con)
  8. {
  9. die('Could not connect: ' . mysql_error());
  10. }
  11.  
  12. mysql_select_db("xxx", $con);
  13.  
  14. $sql="INSERT INTO Komentarze (Nick, Data, Komentarz)
  15. VALUES
  16. ('$_POST[nick]','$time','$_POST[komentarz]')";
  17.  
  18. if (!mysql_query($sql,$con))
  19. {
  20. die('Error: ' . mysql_error());
  21. }
  22. echo "Komentarz dodany.";
  23. echo "<br>";
  24. echo "<hr />";
  25.  
  26.  
  27. ?>
  28.  
  29. <?php
  30.  
  31. mysql_connect("localhost","xxx","xxx") or die(mysql_error());
  32.  
  33. echo $result;
  34.  
  35. $result = mysql_query("SELECT * FROM Komentarze");
  36.  
  37. while($row = mysql_fetch_assoc($result)){
  38.  
  39.  
  40.  
  41. echo $row['Nick'];
  42. echo $row['Data'];
  43. echo $row['Komentarz'];
  44.  
  45. }
  46.  
  47. ?>
nospor
Zanim wstawisz coś do bazy (wykonasz INSERT) to sprawdź z łaski swojej czy POST zawiera dane... - przecież to logiczne.
modern-web
Po prostu zastosuj:

  1. if($zmienna1 AND $zmienna2 AND $zmienna3)
  2. {
  3. INSERT...
  4. }else{
  5. $error = 'Proszę uzupełnić wymagane pola';
  6. }


To takie trudne ;D?
Ideal
No pewnie ze tak smile.gif Dziala

Jak zrobic zeby dane byly sortowane wedlug daty od najmlodszego do najstarszego ?

i drugie (chyba trudniejsze pytanie) - jak zrobic taka rzecz ze jesli na bedzie wiecej komentarzy to przechodza do nowej strony (czyli dochodzi kolejna strona o innym adresie, pojawiaja sie numer strony i odnosnik do pozostalych ?

nospor
1) ORDER BY.... DESC - manual mysql
2) STRONICOWANIE - uzyj wyszukiwarki, pelno tego.... nawet w moim podpisie masz
Ideal
Wtedy mi pokazuje od najstarszego do najmlodszego a jak zrobic odwrotnie ?

LUB

chcialbym dodac nowa kolumne do mojej tabeli np o nazwie ID zeby automatycznie sie numerowaly rekordy czyli: nowy rekord = kolejny numer ...

wtedy moge zrobic ORDER BY ID (no chyba ze znow mi pokaze od pierwszego smile.gif)

No ale tak czy inaczej potrzebuje wiedziec jak to zrobic (i to i to)
luck
Cytat(Ideal @ 15.11.2010, 19:02:44 ) *
Wtedy mi pokazuje od najstarszego do najmlodszego a jak zrobic odwrotnie ?

LUB

chcialbym dodac nowa kolumne do mojej tabeli np o nazwie ID zeby automatycznie sie numerowaly rekordy czyli: nowy rekord = kolejny numer ...

wtedy moge zrobic ORDER BY ID (no chyba ze znow mi pokaze od pierwszego smile.gif)

No ale tak czy inaczej potrzebuje wiedziec jak to zrobic (i to i to)

Nie masz wrażenia, że troszeczkę przeginasz? To jest dział "Przedszkole", ale nie "Żłobek". To o co pytasz było wałkowane w necie na sto tysięcy milionów różnych sposobów.
Edit: No dobra, żeby nie było że jestem taki zły: poszukaj w google "mysql autoincrement".
c4ash
Cytat(Ideal @ 15.11.2010, 20:02:44 ) *
Wtedy mi pokazuje od najstarszego do najmlodszego a jak zrobic odwrotnie ?

A zastosowales to co pisal nospor? -> ORDER BY data DESC
To samo bedzie w przypadku id, ORDER BY id DESC. A jak wstawic kolumne, to u wujka mozesz sprawdzic.
nospor
Cytat
A zastosowales to co pisal nospor? -> ORDER BY data DESC
To samo bedzie w przypadku id, ORDER BY id DESC. A jak wstawic kolumne, to u wujka mozesz sprawdzic.
Akurat teraz to musi zrobic nie DESC a ASC.
Ale po to dostał ode mnie linka by sobie taką drobnostkę doczytać a nie leciec od razu na forum
Ideal
Chcialem zrobic CZAT smile.gif

Wpadlem na pomysl zeby zrobic to w ten sposob - mam trzy strony chat.php chatmain.php chatmessages.php

Wchodzisz na strone wpisujesz swój nick i przechodzisz do strony na chatmain.php na ktorej znajduje sie textarea (wiadomosc z textarea jest wysylany do bazy) i guzik i iframe ze strona chatmessages.php na ktorej znajduja sie wiadomosci czytane z bazy danych i ta strona sie odswieza co sekudne smile.gif no super super - czat smile.gif jesli chcesz zamienic jedno zdanie :/ strona sie ciagle odswieza co jest troche denerwujace i chcac zjechac suwakiem jest to niemozliwe z tego wlasnie wzgledu ze strona sie ciagle odswieza.

Jest mozliwosc zeby strona np odswiezyla sie tylko wtedy jesli jakis rekord zostanie dodany do bazy ? Albo macie jakis inny sposob na to ? Czy moze PHP sie do tego nie nadaje ?

Tak to wyglada:

chatmain.php

<iframe name="okno" style="border:#F60 1px solid;" src="chatmessages.php" width="700" height="500" frameborder="1"></iframe>
<form action="chatmain.php" method="post">
<textarea name="message" cols="" rows="1"></textarea>
<input name="" type="submit" value="SEND" /></form>

  1. <?php
  2.  
  3. $nick = $_POST['nick'];
  4. $time = date("Y-m-d H:i:s");
  5.  
  6.  
  7. $con = mysql_connect("localhost","xxx","xxx");
  8.  
  9. if (!$con)
  10. {
  11. die('Could not connect: ' . mysql_error());
  12. }
  13.  
  14. mysql_select_db("xxx", $con);
  15.  
  16. if($_POST['message'])
  17. {
  18.  
  19. $sql="INSERT INTO CHAT (Nick, Data, Wiadomosc)
  20. VALUES
  21.  
  22. ('$nick','$time','$_POST[message]')";
  23.  
  24. }
  25.  
  26. if (!mysql_query($sql,$con))
  27.  
  28. {
  29.  
  30. die();
  31.  
  32. }
  33.  
  34.  
  35.  
  36. ?>
  37.  



chatmessages.php

<META HTTP-EQUIV="REFRESH" CONTENT="1">

  1. <?php
  2.  
  3. mysql_connect("localhost","xxx","xxx") or die(mysql_error());
  4.  
  5. echo $result;
  6.  
  7. $result = mysql_query("SELECT * FROM CHAT ORDER BY ID");
  8.  
  9. while($row = mysql_fetch_assoc($result)){
  10.  
  11.  
  12.  
  13.  
  14. echo $row['Nick'];
  15. echo "<br>";
  16. echo $row['Data'];
  17. echo "<br>";
  18. echo $row['Wiadomosc'];
  19. echo "<br>";
  20. echo "<hr />";
  21.  
  22.  
  23. }
  24.  
  25. ?>



PS: Jak zrobic zeby po wspisaniu na stronie chat.php mojego nicku on byl pod zmienna $nick ciagle (po przejsciu na strone chatmain.php) ?




crafter
logowanie -> sesje
jesli czat to -> ajax
jesli twoje umiejetnosci ==0 {
destroy ajax;
wziac_ksiazke();
uczyc_sie();
} else {
jesli ajax to ->jquery -> $.ajax()
return czat;
}



pozdro:)
Ideal
Nareszcie wszystko zaczelo wychodzic smile.gif

Pozostala jedna rzecz - logowanie.

Jest 3:20 i mi sie mozg wylaczyl.



Wchodze na strone glowna (index.php) i mam formularzyk do logowania czyli NICK i HASLO.

Teraz tak po zalogowaniu chce zeby nadal byl na stronie glownej ale zeby formularz zniknac i zeby pojawilo sie kilka rzeczy.

Moglbym to zrobic zeby np. po zalogowaniu przechodzil do np. main.php gdzie beda rzeczy tylko dla zalogowanych ale to nie bardzo bo jesli wklepie jakas inna zupelnie inna nie zwiazana strone a pozniej wklepie znow strone glowna to bedzie znow sie musial logowac ?

Jak to robicie ? Tylko tak jasniej prosze
daros17
Poczytaj o sesjach, w pliku main.php daj

  1. if(isset($_SESSION['login'])){
  2. echo 'zalogowales';
  3. else
  4. {
  5. echo 'Nie masz uprawnien do ogladania tej strony';
  6. }


Podobnie zrób w pliku z formularzem, tylko ze zamiast echo'zalogowale sie' daj np echo 'Jestes juz zalogowany jako<b> '.$_SESSION['login'].'</b>!'; a w zamian echo'nie masz uprawnien..'; daj kod formularza
Ideal
daros17 za chwileczke to przeanalizuje, znalazlem cos takiego na internecie, takie cos by mnie interesowala oczywiscie po drobnych zmianach ale to nie dziala :/ a przynajmniej u mnie - mozecie rzucic okiem na to ?

index.php

  1. <?php
  2. session_start(); //Rozpoczęcie sesji
  3. if(isSet($_POST['zalogowany'])){ //Kod sprawdza czy jest ustawiona zmienna zalogowany. Jeśli nie jest ustawiona, oznacza to, że niezalogowany użytkownik próbuje dostać się do serwisu. Jest wtedy przekierowywany do strony logowania. Jeśli jest zalogowany zostaje przeniesiony do głównej treści serwisu.
  4. header("Location: glowna.php"); //Określa, gdzie kod ma przekierować jeśli użytkownik jest zalogowany. W tym przypadku to glowna.php
  5. exit(); //Zamyka działanie skryptu
  6. }
  7.  
  8. else if(isSet($_POST['nazwa']) && isSet($_POST['haslo'])){
  9. if($_POST['nazwa'] == 'user1' && $_POST['haslo'] == 'pass1'){ //Sprawdza czy są przekazane nazwa i haslo, jeśli nie zostały im przypisane przyjmują wartości: dla hasła: pass1 dla loginu: user1. Dla uproszczenia przyjeliśmy tylko jeden login i hasło.
  10. $_SESSION['zalogowany'] = 'user1';
  11. header("Location: glowna.php");
  12. exit();
  13. }
  14. }
  15. ?>
  16. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  17. <html>
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  20. <title>Logowanie</title>
  21. </head>
  22.  
  23. <body>
  24. <div align="center">
  25. <form method="POST" action="index.php">
  26. Podaj nazwę i hasło<br />
  27. Użytkownik:
  28. <input type="text" name="nazwa"><br />
  29. Hasło:
  30. <input type="password" name="haslo"><br />
  31. <input type="submit" value="Wejdź">
  32. </form>
  33. </div>
  34.  
  35. </body>
  36. </html>


glowna.php

  1. <?php
  2. if(!isSet($SESSION['zalogowany'])){ //Kod sprawdza czy użytkownik rzeczywiście jest zalogowany
  3. header("Location: index.php"); //Jeśli nie zostaje przeniesiony na stronę logowania
  4. exit(); //Zamykanie skryptu
  5. }
  6. ?>
  7.  
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  9. <html>
  10. <head>
  11. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  12. <title>Moja strona WWW</title>
  13. </head>
  14.  
  15. <body>
  16. Treść strony...<br />
  17. <a href="logout.php">Wyloguj</a>
  18. </body>
  19. </html>


logout.php

  1. <?php
  2. session_start(); // Rozpoczęcie sesji
  3. if(isSet($SESSION['zalogowany'])){ //Sprawdzanie, czy była ustawiona zmienna zalogowany
  4. unset($SESSION['zalogowany']); //Jeśli tak zostaje kasowana.
  5. }
  6. else{
  7. header("Location: index.php"); //Jeśli nie, skrypt przenosi na strnę logowania
  8. exit(); //I zamyka swoje działanie
  9. }
  10.  
  11. if(isset($COOKIE[session_name()])){ //Są wykrywane ciasteczka
  12. setcookie(session_name(), ' ', time() - 360); //Które są usuwane
  13. }
  14. session_destroy(); //Niszczenie sesji
  15. ?>
  16. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  17. <html>
  18. <head>
  19. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
  20. <title>Wylogowywanie</title>
  21. </head>
  22.  
  23. <body>
  24. Wylogowywanie prawidłowe!<br />
  25. <a href="index.php">Powrót do strony logowania</a>
  26. </body>
  27. </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.