Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja dodająca dane do bazy po pobraniu nazw tabel
Forum PHP.pl > Forum > PHP
MalyKazio
Witam,

Na swojej stronie w paru miejscach wykonuję kod dodający dane osób do bazy danych. Struktura tabeli wygląda mniej więcej tak: nr,nazwisko,imie,wzrost,waga (struktura przykładowa, dla ułatwienia, w rzeczywistości jest bardziej skomplikowana). Z uwagi na to, że kod taki występuje w paru miejscach chciałem to jakoś zręcznie ubrać w funkcję. Jak już się za to zabrałem, chciałem zrobić to tak, by móc w przyszłości łatwo dodawać dodatkowe kolumny bez zbytniego babrania się w kodzie. Mam do was prośbę o ewentualną ocenę sensowności mojego rozwiązania i o ewentualne uwagi.
Myślę, że mogłoby to iść tak:
1. function dodaj($argumenty) { - tutaj właśnie nie wiem czy podać jako tablica, czy wszystkie wyliczać (pierwsza wątpliwość)
2. pobieram nazwy kolumn i rodzaj danych czyli:
  1. SELECT COLUMN_NAME AS jakakolumna, DATA_TYPE AS rodzaj FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'ludzie'

3. Dla każdej kolumny (kolumna), za wyjątkiem nr, która jest tupu auto_increment sprawdzam czy istnieje $argumenty['kolumna'], jeśli tak to dodaję do zmiennej $dododania jeśli nie to dodaję do zmiennej $dododania 0 (plus oczywiście wcześniej sprawdzenie inną funkcją poprawności danych sprawdztext() lub sprawdzliczbe() ).
4. INSERT INTO ludzie (pobrane kolumny) VALUES ($dododania).
Czy to ma jakiś sens?
siemakuba
Cytat(MalyKazio @ 18.03.2008, 21:25:18 ) *
1. function dodaj($argumenty) { - tutaj właśnie nie wiem czy podać jako tablica, czy wszystkie wyliczać (pierwsza wątpliwość)
Jako tablica, będzie ci najłatwiej sprawdzać.
Cytat(MalyKazio @ 18.03.2008, 21:25:18 ) *
2. pobieram nazwy kolumn i rodzaj danych czyli:
  1. SELECT COLUMN_NAME AS jakakolumna, DATA_TYPE AS rodzaj FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'ludzie'
Tu chyba prostsze będzie zapytanie
  1. DESCRIBE TABLE ludzie
. Zakładam, że nie będziesz zmieniał tej struktury zbyt często, więc dobrze by było jakoś te dane zachować. W przeciwnym razie za każdym razem będziesz wykonywał jedne dodatkowe zapytanie.

pozdr.
MalyKazio
Dzięki za rady. Chyba pozostanę przy SELECT, bo daje mi bardziej odpowiednie dla mnie dane (nazwa pola i typ), np. int, text. W przypadku describe dostaję int(4) czy int(255) a to mi niepotrzebne.
Myślę, że jedno zapytanie mnie nie zbawi, nie mam ich zbyt wiele na jednej stronie, najwyżej kilkanaście. Rozważę jednak jakiś sposób na zapamiętanie struktury. Nie wiem tylko jaki. Do pliku gdzieś zapisywać?
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.