Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z rankingiem graczy
Adzik1992
post 23.07.2008, 09:58:43
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.05.2008

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


Witam, wstawie kod a potem powiem co jest nie tak.

Kod
case 'dodaj':
   autoryzacja();
       if(isset($_POST['nick']) and isset($_POST['punkty']) and isset($_POST['punkty2']) and isset($_POST['punkty3']) and isset($_POST['nick2']) and isset($_POST['nick3'])){
           if(!mysql_query('INSERT INTO ranking (nick,punkty,nick2,punkty2,nick3,punkty3) VALUES (\''.$_POST['nick'].'\',\''.$_POST['punkty'].'\',\''.$_POST['nick2'].'\',\''.$_POST['nick3'].'\',\''.$_POST['punkty2'].'\',\''.$_POST['punkty3'].'\',)',$db)){
  
               echo '
   <b>ERROR: Blad podczas dodawania rekordu.</b>
   ';
           }else{
               echo '
   <b>Wpis zostal dodany</b>
   ';
           }
  
       }
       echo '
   <a href="'.$_SERVER['PHP_SELF'].'">Powrot</a>
   ';
       echo '
   Wypelnij pola
   <form action="'.$_SERVER['PHP_SELF'].'?edytuj=dodaj" method="POST">
               <table><tr><td>Miejsce</td><td>Nick</td><td>Punkty</td></tr>
               <tr><td>1</td><td><input type="text" name="nick" value=""></td><td><input type="text" name="punkty" value=""></td></tr>
               <tr><td>2</td><td><input type="text" name="nick2" value=""></td><td><input type="text" name="punkty2" value=""></td></tr>
               <tr><td>3</td><td><input type="text" name="nick3" value=""></td><td><input type="text" name="punkty3" value=""></td></tr>
               </table>
               <input type="submit" value="Dodaj">
           </form>';


Jest to czesc skryptu rankingu graczy. Kiedy w formularzu na stronie wpisuje nicki u punkty to sie nie wysyla do bazy mysqli wyswietla ERROR: Blad podczas dodawania rekordu. Prosze o pomoc.

I jeszcze jedno, jak wysylam nick z punktami na serwer, to chcialbym aby to nadpisalo jesli takowy gracz juz jest, bo z tego co slyszalem tworzy oddzielny nick i punkty.

Ten post edytował Adzik1992 23.07.2008, 10:21:58
Go to the top of the page
+Quote Post
piraciq
post 23.07.2008, 11:34:48
Post #2





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

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


wszędzie masz "AND" czyli i w warunku zmień na "OR"
Go to the top of the page
+Quote Post
Adzik1992
post 23.07.2008, 12:40:57
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.05.2008

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


nie pomoglo, moze dam caly skrypt?
Go to the top of the page
+Quote Post
ddiceman
post 23.07.2008, 12:59:32
Post #4





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


  1. <?php
  2. if(!mysql_query('INSERT INTO ranking (nick,punkty,nick2,punkty2,nick3,punkty3) VALUES (''.$_POST['nick'].'',''.$_POST['punkty'].'',''.$_POST['nick2'].'',''.$_POST['nick3'].'',''.$_POST['punkty2'].'',''.$_POST['punkty3'].'',)',$db)){
  3. ?>


W tej linii zamieniona masz kolejnosc nick3 i punkty2 - prawdopodobnie punkty sa typu INT a zapisujesz do nich STRING
Zobacz

  1. <?php
  2. if(!mysql_query('INSERT INTO ranking (nick,punkty,nick2,punkty2,nick3,punkty3) VALUES ("'.$_POST['nick'].'","'.$_POST['punkty'].'","'.$_POST['nick2'].'","'.$_POST['punkty2'].'","'.$_POST['nick3'].'","'.$_POST['punkty3'].'",)',$db)){
  3. ?>


Pomocne tez bedzie, jezli zobaczysz, jaki blad zwraca baza danych:

  1. <?php
  2. echo '
  3.  <b>ERROR: Blad podczas dodawania rekordu.</b>
  4.  ';
  5. ?>


Zamien na

  1. <?php
  2. echo '<b>ERROR: Blad podczas dodawania rekordu.</b>'.mysql_error();
  3. ?>


Ten post edytował ddiceman 23.07.2008, 13:01:53
Go to the top of the page
+Quote Post
piraciq
post 23.07.2008, 13:33:32
Post #5





Grupa: Zarejestrowani
Postów: 174
Pomógł: 4
Dołączył: 27.07.2007
Skąd: Kraków

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


ja bym zmienił jeszcze jedno :

Kod
case 'dodaj':
   autoryzacja();
       if(isset($_POST['nick']) and isset($_POST['punkty'])
       or isset($_POST['nick2']) and isset($_POST['punkty2'])
       or isset($_POST['nick3']) and isset($_POST['punkty3'])){
       if(!mysql_query( "INSERT INTO ranking (`nick`,`punkty`,`nick2`,`punkty2`,`nick3`,`punkty3`) VALUES (".$_POST['nick'].",".$_POST['punkty'].",".$_POST['nick2'].",".$_POST['punkty2'].",".$_POST['nick3'].",".$_POST['punkty3'].",)",$db)){


nikt tego nie widzi questionmark.gif?

Kod
if(!mysql_query( "INSERT INTO ranking (`nick`,`punkty`,`nick2`,`punkty2`,`nick3`,`punkty3`) VALUES (".$_POST['nick'].",".$_POST['punkty'].",".$_POST['nick2'].",".$_POST['punkty2'].",".$_POST['nick3'].",".$_POST['punkty3'].",)",$db))


powinno być tak

Kod
if(!mysql_query( "INSERT INTO ranking (`nick`,`punkty`) VALUES (".$_POST['nick'].",".$_POST['punkty']."),$db))


tabela w bazie ma tylko dwa pola a chce dodac sześć tongue.gif
Go to the top of the page
+Quote Post
Adzik1992
post 23.07.2008, 13:34:44
Post #6





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.05.2008

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


Pokazało mi
Kod
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
Go to the top of the page
+Quote Post
ddiceman
post 23.07.2008, 13:48:03
Post #7





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


Cytat
tabela w bazie ma tylko dwa pola a chce dodac sześć

Skad to wiadomo?
Poza tym pomysl z OR przy sprawdzaniu warunku chyba tutaj nie ma sensu - rekord powinien zostac dodany do bazy danych, jezeli zdefiniowane sa wszystkie pola, co oznacza, ze AND bylo jak najbardziej poprawne.

Czy moglbys jeszcze raz linie, ktora Ci podalem

  1. <?php
  2. echo '<b>ERROR: Blad podczas dodawania rekordu.</b>'.mysql_error();
  3. ?>


zamienic na

  1. <?php
  2. echo '<b>ERROR: Blad podczas dodawania rekordu.</b>'.mysql_error() . 'INSERT INTO ranking (nick,punkty,nick2,punkty2,nick3,punkty3) VALUES ("'.$_POST['nick'].'","'.$_POST['punkty'].'","'.$_POST['nick2'].'","'.$_POST['punkty2'].'","'.$_POST['nick3'].'","'.$_POST['punkty3'].'",)';
  3. ?>


pozwoli to zobaczyc pelne zapytanie kierowane do bazy danych

Ten post edytował ddiceman 23.07.2008, 13:52:50
Go to the top of the page
+Quote Post
Adzik1992
post 23.07.2008, 15:49:41
Post #8





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.05.2008

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


juz tam ok, tylko cos nie tak z aktualizacja wynikow

Kod
case 'dodaj':
   autoryzacja();

      if(isset($_POST['nick']) and $_POST['punkty'] )
          {
              $query="SELECT * FROM ranking where nick = '".$_POST['nick']."'";
            $result = mysql_query($query,$db);
            $ile=mysql_num_rows($result);
            if ($ile>0)
            
            {

                    while($row=mysql_fetch_array($result))
                    {
                    echo $id_user=$row['id'];
                    }
                     mysql_query('UPDATE ranking set (punkty) = (\''.$_POST['punkty'].'\' where id=$id_user)',$db);

                }
                else
                {
                     mysql_query('INSERT INTO ranking (nick,punkty) VALUES (\''.$_POST['nick'].'\',\''.$_POST['punkty'].'\')',$db);

                }

       }
Go to the top of the page
+Quote Post
nowotny
post 23.07.2008, 16:00:15
Post #9





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Pokazuję gdzie:
  1. <?php
  2. mysql_query('UPDATE ranking set (punkty) = (''.$_POST['punkty'].'' where id=$id_user)',$db);
  3. ?>

...i mówię że jest problem z apostrofami/cudzysłowami... jaki konkretnie i jak go naprawić to już pozostawiam tobie...
Go to the top of the page
+Quote Post
Adzik1992
post 23.07.2008, 17:53:22
Post #10





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 19.05.2008

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


  1. <?php
  2. mysql_query('UPDATE ranking set punkty = ''.$_POST['punkty'].'' where id=$id_user)',$db);
  3. ?>

tak?

Teraz tak:

  1. <?php
  2. case 'dodaj':
  3.  autoryzacja();
  4.  
  5. if(isset($_POST['nick']) and $_POST['punkty'] )
  6. {
  7. $query="SELECT * FROM ranking where nick = '".$_POST['nick']."'";
  8. $result = mysql_query($query,$db);
  9. $ile = mysql_num_rows($result);
  10. echo $ile;
  11.  
  12. if ($ile>0)
  13.  
  14. {
  15.  
  16. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
  17. $id_user=$row["id"];
  18. }
  19.  mysql_query('UPDATE `ranking` SET `punkty` = `''.$_POST['punkty'].''` where `id`=`$id_user`',$db);
  20.  
  21. }
  22. else
  23. {
  24.  mysql_query('INSERT INTO ranking (nick,punkty) VALUES (''.$_POST['nick'].'',''.$_POST['punkty'].'')',$db);
  25.  
  26. }
  27.  
  28.  }
  29. ?>


Ten post edytował Adzik1992 23.07.2008, 17:54:12
Go to the top of the page
+Quote Post
nowotny
post 23.07.2008, 17:59:38
Post #11





Grupa: Zarejestrowani
Postów: 875
Pomógł: 122
Dołączył: 2.02.2008

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


Cytat(Adzik1992 @ 23.07.2008, 17:53:22 ) *
tak?

Nawiasy to swoją drogą (z resztą o nich zapomniałem)... Ale widzę że problem leży głębiej...
O takie znaczki mi chodziło:
Apostrof -> '
Cudzysłów -> "

I teraz dokształcić się które jak działa....

Cytat(Adzik1992 @ 23.07.2008, 17:53:22 ) *
Teraz tak:

Teraz to już całkiem źle... :/

Ten post edytował nowotny 23.07.2008, 18:01:02
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 Wersja Lo-Fi Aktualny czas: 15.06.2025 - 00:07