Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] dodawanie do bazy
molesta
post
Post #1





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 3.03.2008

Ostrzeżenie: (0%)
-----


Witam mam problem....:/  mianowicie posiadam tabele o strukturze:
  1. CREATE TABLE `testy` (
  2. `fraza` varchar(25) NOT NULL,
  3. `ile` varchar(25) NOT NULL
  4. ) ENGINE=MyISAM DEFAULT CHARSET=latin2;


oraz skrypt php:
  1. <?php 
  2. $polaczenie = @mysql_connect('localhost', 'user', 'haslo')
  3. or die('Brak połączenia z serwerem mysql. Błąd: '.mysql_error());
  4.  
  5. $db = @mysql_select_db('szukaj', $polaczenie)
  6. or die('Nie mogę połączyć się z bazą danych. Błąd: '.mysql_error());
  7.  
  8. $fraza = $_POST['fraza'];
  9. $ins = @mysql_query("INSERT INTO testy SET fraza='$fraza'");
  10. ?>


chodzi mi o to że dodawanie rekordu do bazy działa, to znaczy dodawanie wartości z formularza do pola "fraza"
problem w tym że jest jeszcze pole o nazwie 'ile" które ma za zadanie zliczać ile razy dana fraza została wysłana z formularza.....nie bardzo wiem jak to zrobić
w tej chwili działa to tak:
W formularza dajmy na to daje fraze "testowanie" i dodaje do bazy, niestety ponowne dodane tej samej frazy powoduje utworzenie kolejnego rekordu o nazwie "testowanie'
chciałbym aby podczas wysyłania skrypt sprawdzał czy fraza już nie istnieje w bazie i jesli jest to zwiekszal o 1 wartość pola "ile"
a jesli nie istnieje to dodawał nowy rekord.

Bardzo bym prosiło pomoc , troche mnie to przerasta.....sprawa jest pewnie banalna..

Będe wdzieczny
Pozdrawiam

Ten post edytował molesta 3.03.2008, 17:21:45


--------------------
Spolszczenie Dolphin oraz Forum wsparcia
Go to the top of the page
+Quote Post
Xniver
post
Post #2





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

Ostrzeżenie: (0%)
-----


1. Zamień typ pola 'ile' na INT
2. Tu masz kod:
  1. <?php
  2. // ...
  3. $fraza = mysql_real_escape_string($_POST['fraza']);
  4.  
  5. $query = mysql_query('SELECT ile FROM testy WHERE fraza = "' . $fraza . '"');
  6.  
  7. if(mysql_num_rows($query))
  8. {
  9. $query = mysql_fetch_assoc($query);
  10.  
  11. mysql_query('UPDATE testy SET ile = ' . ($query['ile'] + 1) . '
  12.  WHERE fraza = "' . $fraza . '"');
  13. }
  14. else
  15. {
  16. mysql_query('INSERT INTO testy VALUES("' . $fraza . '", 1)');
  17. }
  18. ?>


Ten post edytował Xniver 3.03.2008, 17:43:31
Go to the top of the page
+Quote Post
molesta
post
Post #3





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 3.03.2008

Ostrzeżenie: (0%)
-----


działa!
Xniver dziekuje za pomoc

Mam jeszcze jedno pytanko, jak wyświetlić określoną liczke rekordów z bazy z pola "fraza" o najwielszej wartości "ile"?
Najlepiej z komentarzami aby mógł zrozumiec ten kod


--------------------
Spolszczenie Dolphin oraz Forum wsparcia
Go to the top of the page
+Quote Post
Xniver
post
Post #4





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

Ostrzeżenie: (0%)
-----


  1. <?php
  2. // Liczba rekordów do pobrania
  3. $limit = 10;
  4.  
  5. // Zapytanie pobierające x rekordów, sortowane malejąco według pola 'ile'
  6. $query = mysql_query('SELECT * FROM testy LIMIT 0, ' . $limit . ' ORDER BY ile DESC');
  7.  
  8. // Pętla while
  9. while($row = mysql_fetch_assoc($query))
  10. {
  11. // Wyświetla dane
  12. echo $row['fraza'] . ' - ' . $row['ile'] . '<br />';
  13. }
  14. ?>


Ten post edytował Xniver 3.03.2008, 18:24:44
Go to the top of the page
+Quote Post
molesta
post
Post #5





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 3.03.2008

Ostrzeżenie: (0%)
-----


to w takim razie tak to powinno wyglądać?
  1. <?php
  2. $polaczenie = @mysql_connect('localhost', 'xxx', 'xxx')
  3. or die('Brak polaczenia z serwerem mysql. Blad: '.mysql_error());
  4.  
  5. $db = @mysql_select_db('xxx', $polaczenie)
  6. or die('Nie moge polaczyc sie z baza danych. Blad: '.mysql_error());
  7.  
  8.  
  9. $fraza = mysql_real_escape_string($_POST['fraza']);
  10.  
  11. $query = mysql_query('SELECT ile FROM testy WHERE fraza = \"' . $fraza . '\"');
  12.  
  13. if(mysql_num_rows($query))
  14. {
  15.     $query = mysql_fetch_assoc($query);
  16.         mysql_query('UPDATE testy SET ile = ' . ($query['ile'] + 1) . '
  17.                  WHERE fraza = \"' . $fraza . '\"');
  18. }
  19. else
  20. {
  21.     mysql_query('INSERT INTO testy VALUES(\"' . $fraza . '\", 1)');
  22. }
  23. $limit = 10;
  24.  
  25. // Zapytanie pobierające x rekordów, sortowane malejąco według pola 'ile'
  26. $query = mysql_query('SELECT * FROM testy LIMIT 0, ' . $limit . ' ORDER BY ile DESC');
  27.  
  28. // Pętla while
  29. while($row = mysql_fetch_assoc($query))
  30.  
  31. {
  32.     // Wyświetla dane
  33.     echo $row['fraza'] . ' - ' . $row['ile'] . '
  34. ';
  35. }
  36. ?>


Jesli tak to w tej linii
while($row = mysql_fetch_assoc($query))

jest coś nie tak...wywala
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource

Ten post edytował molesta 3.03.2008, 18:46:20


--------------------
Spolszczenie Dolphin oraz Forum wsparcia
Go to the top of the page
+Quote Post
Misiur66
post
Post #6





Grupa: Zarejestrowani
Postów: 170
Pomógł: 11
Dołączył: 2.03.2008
Skąd: Lublin

Ostrzeżenie: (10%)
X----


Hmm... Czy tu gdzieś nie powinno być extract? Ja zawsze używałem.

@down:
Jednak pomaga w sprawdzaniu poprawności czegośtam ;D Jest w manualu

Ten post edytował Misiur66 3.03.2008, 18:43:03
Go to the top of the page
+Quote Post
Xniver
post
Post #7





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

Ostrzeżenie: (0%)
-----


Dodaj pomiędzy $query = mysql_query() ,a pętlą kod:
  1. <?php
  2. ?>


@Misiur66
A po co używać extract()? Nie potrzebne

Ten post edytował Xniver 3.03.2008, 18:41:35
Go to the top of the page
+Quote Post
molesta
post
Post #8





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 3.03.2008

Ostrzeżenie: (0%)
-----


teraz wywalił coś takiego

Something is wrong in your syntax obok 'ORDER BY ile DESC' w linii 1
kod wyglada tak :
  1. <?php 
  2.  
  3. $polaczenie = @mysql_connect('localhost', 'xxx', 'xxx')
  4. or die('Brak polaczenia z serwerem mysql. Blad: '.mysql_error());
  5.  
  6. $db = @mysql_select_db('xxx', $polaczenie)
  7. or die('Nie moge polaczyc sie z baza danych. Blad: '.mysql_error());
  8.  
  9.  
  10. $fraza = mysql_real_escape_string($_POST['fraza']);
  11.  
  12. $query = mysql_query('SELECT ile FROM testy WHERE fraza = "' . $fraza . '"');
  13.  
  14. if(mysql_num_rows($query))
  15. {
  16. $query = mysql_fetch_assoc($query);
  17. mysql_query('UPDATE testy SET ile = ' . ($query['ile'] + 1) . '
  18.  WHERE fraza = "' . $fraza . '"');
  19. }
  20. else
  21. {
  22. mysql_query('INSERT INTO testy VALUES("' . $fraza . '", 1)');
  23. }
  24. $limit = 10;
  25.  
  26. // Zapytanie pobierające x rekordów, sortowane malejąco według pola 'ile'
  27. $query = mysql_query('SELECT * FROM testy LIMIT 0, ' . $limit . ' ORDER BY ile DESC');
  28. // Pętla while
  29. while($row = mysql_fetch_assoc($query))
  30. {
  31. // Wyświetla dane
  32. echo $row['fraza'] . ' - ' . $row['ile'] . '<br />';
  33. }
  34. ?>


--------------------
Spolszczenie Dolphin oraz Forum wsparcia
Go to the top of the page
+Quote Post
Xniver
post
Post #9





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

Ostrzeżenie: (0%)
-----


Spróbuj tak:

  1. <?php
  2. $query = mysql_query('SELECT * FROM `testy` ORDER BY `ile` LIMIT ' . $limit);
  3. ?>


Ten post edytował Xniver 3.03.2008, 18:49:54
Go to the top of the page
+Quote Post
molesta
post
Post #10





Grupa: Zarejestrowani
Postów: 74
Pomógł: 0
Dołączył: 3.03.2008

Ostrzeżenie: (0%)
-----


Dziekuje wam za pomoc...teraz działa poprawnie........mam jeszcze jedna prośbe......

Co było niepooprawnego że wywałał te błedy?
Chce poprostu to zrozumieć


--------------------
Spolszczenie Dolphin oraz Forum wsparcia
Go to the top of the page
+Quote Post
Xniver
post
Post #11





Grupa: Zarejestrowani
Postów: 108
Pomógł: 26
Dołączył: 29.02.2008

Ostrzeżenie: (0%)
-----


Szczerze to sam nie wiem, na SQLu się słabo znam. Pewnie chodziło o te znaki " ` " albo o kolejność
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 03:45