Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Automatyczne przydzielanie
Forum PHP.pl > Forum > Przedszkole
stefik4
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 questionmark.gif

Pozdrawiam
wookieb
Jak ma się pokazywać skoro nie pobrałes informacji o klubie?
Sky_walker
Twoj kod to "select" - wybierz. To nic nie bedzie "dopisywało".
stefik4
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
wookieb
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
stefik4
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 questionmark.gif
Może to byc spowodowane tym, że w bazie mam tylko okolo 120 zawodnikow questionmark.gif

Pozdrawiam.

Pomoże ktoś :-(

Post wyżej wszystko podałem
Sky_walker
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 towinksmiley.jpg
stefik4
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() questionmark.gif
Pilsener
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ć?"
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.