Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Pola formularza zależne od ilości kolumn w mysql
Forum PHP.pl > Forum > Przedszkole
pawelwel
Witam.
W jaki sposób stworzyć formularz ze zmienną ilością pół do zmiany zależne od ilości kolumn w tabel bazie mysql ?
SmokAnalog
  1. SHOW COLUMNS FROM `tabela`;


To zapytanie zwróci Ci wszystkie pola, wiersz po wierszu w takiej postaci:
Kod
Field | Type | Null | Key | Default | Extra
pawelwel
Proszę mi jeszcze podpowiedzieć, jak zmienną ilość kolumn zgrać z formularzem ?
SmokAnalog
Dla każdego rekordu tego zapytania wypisujesz pole tekstowe, a potem robisz zapytanie UPDATE, które nadpisze wszystkie pola według tych pól w formularzu.
pawelwel
Nie do końca rozumiem co masz na myśli.

Kod
$zapytanie = "SHOW COLUMNS FROM `baza`";
$idzapytania = mysql_query($zapytanie);

echo '<table>';
while ($wiersz = mysql_fetch_row($idzapytania)) {
echo '<tr><td>'. $wiersz[0] .'</td><td>'. $wiersz[1] .'</td><td>'. $wiersz[2] .'</td><td>'. $wiersz[3] .'</td><td>'. $wiersz[4] .'</td></tr>';
}
echo '</table>';


Ten skrypt wyświetla nazwę kolumn w bazie ale razem z jej wszystkimi atrybutami, chciałbym aby wyświetliło tylko kolumnę z nazwami.
Po drugie skąd wiadomo ile dokładnie jest tych kolumn? Czy jest funkcja która wyznaczy ilość (liczbę) kolumn?
SmokAnalog
Masz tyle kolumn, ile to zapytanie zwraca wyników, czyli sprawdzić to możesz z mysql_num_rows. Możesz po prostu zignorować pozostałe informacje o kolumnie. Z SHOW COLUMNS nie można zwrócić jedynie nazw. Można to zrobić działając bezpośrednio na tabeli information_schema.columns, ale nie podoba mi się ta metoda.

A po co Ci ta liczba w ogóle? Iterował będziesz bezpośrednio po polach, a nie po ich liczbie.
com
@up przeczytaj 1 post biggrin.gif autorowi chodzi o to że chce generować dynamiczne form z taka ilością input jak kolumn w bazie smile.gif
SmokAnalog
No a co ja zasugerowałem zrobić? Co mu da sama liczba kolumn? Potrzebuje ich nazw przecież, żeby potem dać do UPDATE.

Pseudokod:
Kod
Dla każdego rekordu z SHOW COLUMNS:
    Wypisz pole tekstowe o nazwie rekord[nazwa]
com
ok masz rację, nie doczytałem że chce robić potem na nich UPDATE, myślałem że zwykły INSERT smile.gif
pawelwel
Dzięki za pomoc.
Z częscią skryptu już sobie poradziłem,

Skrypt sprawdza ile jest kolumn w bazie, w ten sposób tworzy taką samą ilość pól w formularzu, następnie te dane wysyła do osobnego pliku, a plik odczytuje każdą dane z osobna.

Brakuje mi jeszcze jednej rzeczy.


Komenda

  1. SHOW COLUMNS FROM `slupy_typ`


pokazuje



  1. Field Type Null Key Default Extra
  2. id int(11) NO PRI NULL auto_increment
  3. dane1 char(10) YES NULL
  4. dane3 char(4) YES NULL
  5. dane3 char(4) YES NULL
  6. dane4 char(1) YES NULL
  7. dane5 char(1) YES NULL
  8. dane6 char(30) YES NULL




Co zrobić żeby pokazało tylko pierwszą kolumnę i każdą z nich przypisało do zmiennej np kolumna$x ?
SmokAnalog
Pokaż swój kod.

P.S. Liczba kolumn nie jest Ci do NICZEGO potrzebna.
pawelwel
Liczba kolumn jest mi potrzebna do określenia liczby pól w formularzu.
Potrzebuję jeszcze nazwę kolumn aby wyświetlić je obok pól formularza

Podaję kod.


  1. <?php
  2. echo '<table>';
  3.  
  4. $sql_conn = mysql_connect('localhost', 'test', 'test')
  5.  
  6. or die('Nie mogłem połaczyć się z bazą danych');
  7.  
  8.  
  9.  
  10. $zapytanie = "SHOW COLUMNS FROM `slupy_typ`";
  11. $idzapytania = mysql_query($zapytanie);
  12. echo '<table>';
  13. $numer=0;
  14. while ($wiersz = mysql_fetch_row($idzapytania))
  15. {
  16. echo '<tr><td>'. $wiersz[0] .'</td><td>';
  17. echo '<tr>';
  18. echo '<tr>';
  19. $numer=$numer+1;
  20. }
  21.  
  22. if(!$numer) { $numer=0; }
  23. echo "Ilosc pozycji = $numer <br/>";
  24. for ($x=0 ; $x<$numer; $x++){
  25. $nazwa = "towar$x";
  26. echo '<table>';
  27. echo "nazwa kolumny";
  28. echo '<tr><td>'. $wiersz[0] .'</td><td>';
  29. $wartosc="";
  30. echo "<tr> \n <td><form action='dodaj.php' method='post'> </td> \n";
  31.  
  32. echo '<input name="'.$nazwa.'[dane1]">';
  33. }
  34. $numer = $numer+1;
  35. echo "<input name=dodaj type=submit value='Dodaj pozycje' />";
  36. ?>
  37.  
  38.  
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.