Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Automatyczne przydzielanie
stefik4
post
Post #1





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


Witam!

Własnie zabrałem się za robienie przydzielania zawodnikow podczas rejestracji, ale całkowicie nie mam pomysły jak to zrobić, jedyne co mi przychodzi to przypisywanie zawodnikow za pomoca takiej komendy SQL

SELECT * FROM `players` WHERE `klub`=0 ORDER BY RAND() LIMIT 10;

I teraz pytania:
Czy bedzie to dobre ?
Czy bedzie przy zawodniku dopisywalo w zakladce klub skąd on jest tzn z jakiego klubu (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Jak ma się pokazywać skoro nie pobrałes informacji o klubie?

Ten post edytował wookieb 10.02.2009, 16:47:29
Go to the top of the page
+Quote Post
Sky_walker
post
Post #3





Grupa: Zarejestrowani
Postów: 214
Pomógł: 23
Dołączył: 26.09.2005

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


Twoj kod to "select" - wybierz. To nic nie bedzie "dopisywało".
Go to the top of the page
+Quote Post
stefik4
post
Post #4





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


Moj caly kod funkcji do rejestracji wyglada nastpujaco:

  1. <?PHP
  2.  
  3. include "header.php";
  4.  
  5. $dbhost = "localhost";
  6. $dbname = "";
  7. $dbuser = "";
  8. $dbpass = "";
  9.  
  10. //Connect to database
  11.  
  12. mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
  13.  
  14.    
  15. $name = $_POST['name'];
  16. $email = $_POST['email'];    
  17. $username = $_POST['username'];
  18. $team = $_POST['team'];
  19. $logo = $_POST['logo'];
  20. $password2 = $_POST['password'];
  21. $password = md5($_POST['password']);
  22. $data=date("Y-m-d H:i:s");
  23.  
  24. // lets check to see if the username already exists
  25.  
  26. $checkuser = mysql_query("SELECT username FROM users2 WHERE username='$username'");
  27.  
  28. $username_exist = mysql_num_rows($checkuser);
  29.  
  30. if($username_exist > 0){
  31.    echo "Podana nazwa konta istnieje już w naszej bazie danych. Prosze o wpisanie innej nazwy.";
  32.    unset($username);
  33.    include 'register.html';
  34.    
  35. }
  36.  
  37. if (!$username && !$password && !$email && !$team) {
  38. print "Musisz uzupełnić wszystkie pola.";
  39. include 'register.html';
  40.  
  41. }
  42.  
  43.  
  44. // lf no errors present with the username
  45. // use a query to insert the data into the database.
  46.  
  47. $query = "INSERT INTO users2 (name, email, username, password, team, logo, data)
  48. VALUES('$name', '$email', '$username', '$password', '$team', '$logo', '$data')";
  49. mysql_query($query) or die(mysql_error());
  50.  
  51. echo "<center><b>Zostales pomyslnie zarejestrowany w serwisie!</b></center><br><br> ";
  52.  
  53.  
  54.  
  55. $a = "UPDATE players SET klub='$team' WHERE `klub`=0 ORDER BY RAND() LIMIT 10";
  56.  
  57.  
  58.    
  59. // wiadomosc wysylana
  60.  
  61.  
  62.  
  63. $yoursite = "VMWordl";
  64. $webmaster = "Administrator";
  65.    
  66. $subject = "Rejestracja konta w portalu VMWorld";
  67. $message = "Witaj $name.
  68. Ten e-mail został wysłany do Ciebie automatycznie i zawiera dane dotyczące Twojego konta w portalu <b>VMWorld</b>.
  69. Zostałeś pomyślnie zarejestrowany i dodany do ogólnej bazy danych.  
  70. Możesz się teraz zalogować.
  71.  
  72. Dane dotyczące konta:
  73. Login: $username
  74. Hasło: $password2
  75. Nazwa drużyny: $team
  76. Link do loga: $logo
  77. Data rejestracji: $data
  78.    
  79.    
  80. Prosze zachować te informacje w razie utracenia hasła.
  81. Na razie niedostepne jest przypomnienie haseł.
  82. <b>Wiadomość costała wygenerowana automatycznie i nie odpowiadaj na nią!</b>
  83. Jeśli chchesz się skontaktować z Administratorem użyt formularza na stronie głównej <a href=http://www.vmworldt.unl.pl>www.vmworldt.unl.pl</a>.
  84.    
  85.    $webmaster";
  86.    
  87. mail($email, $subject, $message, "From: $yoursite <$youremail>\nX-Mailer:PHP/" . phpversion());
  88.    
  89. echo "<center>Informacje dotyczace konta zostały wysłane na podany adres - $email.<br> W przeciagu godziny e-mail zostanie wygenerowany i wysłany.<br>W przypadku poczty Wirtualnej Polski mail powinien dojsć w ciagu kwadransu.<br>Możesz się już teraz zalogowac <a href=http://www.vmworldt.unl.pl>TUTAJ</a></center>";
  90.  
  91.  
  92.  
  93. ?>


Czekam na pomoc
Go to the top of the page
+Quote Post
wookieb
post
Post #5





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Cytat(stefik4 @ 10.02.2009, 17:02:40 ) *
Czekam na pomoc

Najpierw przeczytaj to
http://dev.mysql.com/doc/refman/5.0/en/update.html
Go to the top of the page
+Quote Post
stefik4
post
Post #6





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


Ok dzieli jzu sobie poradzilem.

Przy rejestracji dodaje i jest wszystko dobrze. Kłopot zaczyna sie gdy ja sie zaloguje i mam normalnie 10 zawodnikow tyle ile jest przydzielone normalnie. Niestety jak ktos sie po mnie zarejestruje, to zniak dwoch lub jeden zawodnik ;/

Otom pelny kod rejestracji:

  1. <?PHP
  2.  
  3. include "header.php";
  4.  
  5. $dbhost = "localhost";
  6. $dbname = "";
  7. $dbuser = "";
  8. $dbpass = "";
  9.  
  10. mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
  11.  
  12. $name = $_POST['name'];
  13. $email = $_POST['email'];    
  14. $username = $_POST['username'];
  15. $team = $_POST['team'];
  16. $logo = $_POST['logo'];
  17. $password2 = $_POST['password'];
  18. $password = md5($_POST['password']);
  19. $data=date("Y-m-d H:i:s");
  20.  
  21. $checkuser = mysql_query("SELECT username FROM users2 WHERE username='$username'");
  22.  
  23. $username_exist = mysql_num_rows($checkuser);
  24.  
  25. if($username_exist > 0){
  26.    echo "Podana nazwa konta istnieje już w naszej bazie danych. Prosze o wpisanie innej nazwy.";
  27.    unset($username);
  28.    include 'register.html';
  29.    
  30. }
  31.  
  32. if (!$username && !$password && !$email && !$team) {
  33. print "Musisz uzupełnić wszystkie pola.";
  34. include 'register.html';
  35.  
  36. }
  37.  
  38. $query = "INSERT INTO users2 (name, email, username, password, team, logo, data)
  39. VALUES('$name', '$email', '$username', '$password', '$team', '$logo', '$data')";
  40. mysql_query($query) or die(mysql_error());
  41.  
  42. echo "<center><b>Zostales pomyslnie zarejestrowany w serwisie!</b></center><br><br> ";
  43.  
  44. // dawanie zawodnikow
  45.  
  46. $username = $_POST['username'];
  47. $a = "UPDATE players SET username='$username' WHERE `username`=0 ORDER BY RAND() LIMIT 10";
  48.  
  49.    
  50. // wiadomosc wysylana
  51.  
  52.  
  53. $yoursite = "VMWordl";
  54. $webmaster = "Administrator";
  55.    
  56. $subject = "Rejestracja konta w portalu VMWorld";
  57. $message = "Witaj $name.
  58. Ten e-mail został wysłany do Ciebie automatycznie i zawiera dane dotyczące Twojego konta w portalu <b>VMWorld</b>.
  59. Zostałeś pomyślnie zarejestrowany i dodany do ogólnej bazy danych.  
  60. Możesz się teraz zalogować.
  61.  
  62. Dane dotyczące konta:
  63. Login: $username
  64. Hasło: $password2
  65. Nazwa drużyny: $team
  66. Link do loga: $logo
  67. Data rejestracji: $data
  68.    
  69.    
  70. Prosze zachować te informacje w razie utracenia hasła.
  71. Na razie niedostepne jest przypomnienie haseł.
  72. <b>Wiadomość costała wygenerowana automatycznie i nie odpowiadaj na nią!</b>
  73. Jeśli chchesz się skontaktować z Administratorem użyt formularza na stronie głównej <a href=http://www.vmworldt.unl.pl>www.vmworldt.unl.pl</a>.
  74.    
  75.    $webmaster";
  76.    
  77. mail($email, $subject, $message, "From: $yoursite <$youremail>\nX-Mailer:PHP/" . phpversion());
  78.    
  79. echo "<center>Informacje dotyczace konta zostały wysłane na podany adres - $email.<br> W przeciagu godziny e-mail zostanie wygenerowany i wysłany.<br>W przypadku poczty Wirtualnej Polski mail powinien dojsć w ciagu kwadransu.<br>Możesz się już teraz zalogowac <a href=http://www.vmworldt.unl.pl>TUTAJ</a></center>";
  80.  
  81.  
  82.  
  83. ?>


Może ktos poradzić, co zmineić, aby nie usuwało tych dwoch zawodnikow (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Może to byc spowodowane tym, że w bazie mam tylko okolo 120 zawodnikow (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

Pozdrawiam.

Pomoże ktoś :-(

Post wyżej wszystko podałem
Go to the top of the page
+Quote Post
Sky_walker
post
Post #7





Grupa: Zarejestrowani
Postów: 214
Pomógł: 23
Dołączył: 26.09.2005

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


A jaki masz kod wyswietlania zawodnikow? Moze tam jest blad?
Dla mnie tutaj podejrzane jest zapytanie z linii 49 - choć w sumie to żadna tajemnica - przerobiłbym to na ściąganie ID do tabeli, potem wybranie losowych 10 rekordów i na koniec wykonanie UPDATE. Zamiast 1 zapytania masz 2 ale... przy dużej tablicy, jak masz dużo wartości `username`<>0 ogólna wydajność powinna być lepsza + całość będzie pewniejsza.
#
Poza tym - poczytaj sobie “Do not use ORDER BY RAND()” or “How to get random rows from table?” albo to(IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
stefik4
post
Post #8





Grupa: Zarejestrowani
Postów: 176
Pomógł: 1
Dołączył: 18.11.2007

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


Sky_walker mój kod pokazywania zawodników wygląda następująco:

  1. <?php
  2. include 'header.php';
  3. include "menu.html";
  4.  
  5. $dbhost = "localhost";
  6. $dbname = "";
  7. $dbuser = "";
  8. $dbpass = "";
  9.  
  10. mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
  11.  
  12. $username = $_SESSION['username'];
  13.  
  14. $query = "SELECT * FROM `players` WHERE username='$username' ";
  15. $result = mysql_query($query);
  16. echo ' <br><br><table border=0 bgcolor=#999999 align=center><tr bgcolor=#999999>
  17.        <td width="100%" bgcolor=#999999><center><font size="3">WSZYSCY</font></center></td>
  18.    </tr></table><br>';
  19. echo '<table class="tabela" border="0" width="100%" bordercolor="#999999">
  20.    <tr>
  21.         <td><b>l.p</b></td>
  22.        <td><b>Imie i nazwisko</b></td>
  23.        <td><b>Wiek</b></td>
  24.        <td><b>Tal</b></td>
  25.        <td><b>Sr.</b></td>
  26.        <td><b>Sila</b></td>
  27.        <td><b>Technika</b></td>
  28.        <td><b>Odbiór</b></td>
  29.        <td><b>Wystawa</b></td>
  30.        <td><b>Zagrywka</b></td>
  31.        <td><b>Zbicie</b></td>        
  32.        </tr>
  33. <tr>';
  34. $nr = 0;
  35. $i = 1;
  36.  
  37.  
  38.  
  39.  
  40. while($row = mysql_fetch_array($result))
  41.  
  42.  
  43. {
  44.    $srednia = ( $row['sila'] + $row['technika'] + $row['odbior'] + $row['wystawa'] + $row['zagrywka'] + $row['zbicie'] ) / 6;
  45.  
  46.    echo '<td width=15>' . ++$nr . '.</td>';
  47.    echo '<td width=100>'.$row['imie'].' '.$row['nazwisko'].'</td>';
  48.     echo '<td width=15 align=center>'.$row['wiek'].'</td>';
  49.      echo '<td width=15 align=center>'.$row['talent'].'</td>';
  50.    echo '<td width=15 align=center><u>'.ceil($srednia).'</u></td>';
  51.       echo '<td width=15 align=center>'.$row['sila'].'</td>';
  52.        echo '<td width=15 align=center>'.$row['technika'].'</td>';
  53.         echo '<td width=15 align=center>'.$row['odbior'].'</td>';
  54.          echo '<td width=15 align=center>'.$row['wystawa'].'</td>';
  55.                echo '<td width=15 align=center>'.$row['zagrywka'].'</td>';
  56.           echo '<td width=15 align=center>'.$row['zbicie'].'</td>';
  57.           echo '</tr>';
  58.    
  59.  
  60. }
  61. echo '</table>';
  62.  
  63. ?>



A co proponujesz, zamiast funkcji ORDER BY RAND() (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Pilsener
post
Post #9





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


1.
Cytat
A co proponujesz, zamiast funkcji ORDER BY RAND()
- przecież dał Ci nawet DWA linki?
2. Jak chcesz pisać w PHP, to najpierw wypadłoby się nauczyć podstaw HTML
3. Zainteresuj się bezpieczeństwem Twoich skryptów i sprawdzaniem otrzymywanych danych, bo ktoś na złość będzie Ci je bez problemu wywalał, a Ty wtedy przyjdziesz na forum z pytaniem "jak ktoś mógł się włamać?"
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 4.10.2025 - 16:40