Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie rekordów do tabel + problemy z modyfikowaniem rekordów
Forum PHP.pl > Forum > Bazy danych > MySQL
stachi
Witam. Chciałbym zrobić taką rzecz na stronie:

Wyświetlałby się formularz, w którym wypisane byłyby wszystkie nazwy tabel(nazwy nie są ani stałe, ani mi znane; są to skróty nazw wpisanych przez użytkowników we wcześniejszym skrypcie podczas tworzenia nowych tabel; do tego będzie ich coraz więcej). Kolejne byłoby okienko(formularz) do wpisywania nazwy gracza(czyli dodawanie nowego rekordu do tabeli, którą wybraliśmy z listy).

Utknąłem przy problemie z listą. Wiem, że muszę zrobić jakąś pętlę, lecz problem tkwi w tym, ze nie wiem ile jest tabel i jak się nazywają. macie jakieś pomysły? Jeśli coś jest niejasne to piszcie.
Pozdrawiam.
Mchl
Dane o tabelach w bazie wyciągniesz z information_schema
http://dev.mysql.com/doc/refman/5.0/en/inf...ion-schema.html
stachi
Zrobiłem już taki myk:

  1. $result = mysql_list_tables($database);
  2.  
  3. while ($row = mysql_fetch_row($result))
  4. printf ("%s<br>", $row[0]);
  5.  


Za pomocą tego kodu wyświetlają mi się już nazwy tabel( to jest to %s). czy dałoby się je teraz kolejne nazwy przypisać do zmiennych, żebym mógł je użyć przy tworzeniu formularza ?
Mchl
Kod
$result = mysql_list_tables($database);

$tabele = array();
while ($row = mysql_fetch_row($result)) {
  $tabele[] = $row[0];
}

print_r($tabele);

mysql_free_result($result);
stachi
Ok dzięki. Już sobie poradziłem z tą częścią. Mam za to inny problem. smile.gif Poniższy skrypt służy do pobierania danych z formularza i wkładania ich w odpowiednie miejsca w rekordzie. Lecz po wpisaniu danych i wysłaniu nic się nie modyfikuje. Zapewne zrobiłem błąd w zapytaniu. Wiecie może gdzie? Oto część kodu:

  1. echo "</table><br><br>
  2. <form action='gangcolors.php' method='post'>
  3. Choose gang: <input type=text name=shortname1>
  4. <br>
  5. <br>
  6. Enter New Colors:
  7. <br>
  8. Color:
  9. <br>
  10. Red: <input type=text name=colorred1><br>
  11. Green: <input type=text name=colorgreen1><br>
  12. Blue: <input type=text name=colorblue1><br>
  13. <br>
  14. Contour:
  15. <br>
  16. Red: <input type=text name=contourred1><br>
  17. Green: <input type=text name=contourgreen1><br>
  18. Blue: <input type=text name=contourblue1><br>
  19.  
  20. <br>
  21. <input type=submit value='Send'>
  22. <input type=reset value='Reset'>
  23. </form>
  24. <br>
  25. <br>
  26. <a href='index.php'> <--- Go back</a>
  27. </center>\n";
  28.  
  29. $shortname1=$_POST['shortname1'];
  30. $colorred1=$_POST['colorred1'];
  31. $colorgreen1=$_POST['colorgreen1'];
  32. $colorblue1=$_POST['colorblue1'];
  33. $contourred1=$_POST['contourred1'];
  34. $contourgreen1=$_POST['contourgreen1'];
  35. $contourblue1=$_POST['contourblue1'];
  36.  
  37.  
  38.  
  39.  
  40. $query = "UPDATE Colors SET ColorRed = '$colorred1', ColorGreen = '$colorgreen1', ColorBlue = '$colorblue1', ContourRed = '$contourred1', ContourGreen = '$contourgreen1', ContourBlue = '$contourblue1', WHERE ShortName = '$shortname1'";
  41. mysql_query($query);
  42.  
  43.  
Mchl


Masz o jeden przecinek za dużo przed WHERE

stachi
Znowu mi pomogłeś. smile.gif Ty chyba jesteś jakąś dobrą duszą serwisu. biggrin.gif Wielkie dzięki. Jak będę miał jeszcze jakiś problem to dodam tutaj i zmienię nazwę tematu. Pozdrawiam.

Mam kolejny problem. Wyskakuje mi błąd przy funkcji mysql_num_rows(). Chce wyświetlić rekordy za pomocą zapytania ograniczonego WHERE i jakoś obliczyć sumę tychże rekordów($num), bo ja widać zapytanie wybiera mi część rekordów, a $num jest równy wszystkim. Do tego nie wiem co to za error. tongue.gif Kod:

  1. $query = "SELECT * FROM Colors ORDER BY ShortName ASC";
  2. $result=mysql_query($query);
  3. $num=mysql_numrows($result);
  4.  
  5.  
  6. $i=0;
  7. while ($i < $num) {
  8.  
  9. $longname=mysql_result($result,$i,"LongName");
  10. $shortname=mysql_result($result,$i,"ShortName");
  11.  
  12.  
  13. ################################################################################<br>
  14. #&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;".$longname." ($shortname)<br>
  15. ################################################################################<br>
  16. <br>
  17. <br>
  18. \n";
  19.  
  20. //nazwy graczy - w tej okolicy wyskakują errory
  21. $query = "SELECT PlayerName FROM Names ORDER BY ShortName ASC, PlayerName ASC WHERE ShortName = '$shortname'";
  22. $result=mysql_query($query);
  23. $num=mysql_num_rows($result);
  24.  
  25.  
  26. $j=0;
  27. while ($j < $num) {
  28.  
  29. $playername=mysql_result($result,$j,"PlayerName");
  30.  
  31. ".$playername."<br>
  32. \n";
  33.  
  34. $j++;
  35. }
  36.  
  37.  
  38. <br>
  39. <br>
  40. <br>
  41. \n";
  42.  
  43.  
  44. $i++;
  45. }
jaslanin
  1. $query = "SELECT PlayerName FROM Names ORDER BY ShortName ASC, PlayerName ASC WHERE ShortName = '$shortname'";


where w zapytaniu ma być zawsze przed order by

Tu masz pokazane jak ma kolejność iść w zapytaniu:

http://dev.mysql.com/doc/refman/5.0/en/select.html
stachi
Dzięki, zrobione. smile.gif Robię podstawowe błędy, ale co zrobić, pracuje z php i mysql od 3 dni. biggrin.gif Dziękuję za pomoc.
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.