Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mySQL] UPDATE, zamiast nazwy kolmny jej numer
bulimaxiu
post
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

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


Witam.

Napotkałem w skrypcie potrzebę stworzenia zapytania do bazy mySQL w stylu:
UPDATE `baza` SET $numer_kolumny = '$row[$numer_kolumny]'

Normalnie jest
UPDATE `baza` SET `$nazwa_kolumny` = '$row[$numer_kolumny]'

Czy ktoś może wie czy i jak można stworzyć zapytanie, żeby zawierało numer kolumny w bazie a nie jej nazwę?

Wprawdzie widać niby proste rozwiązania jak np.
  1. nazwać kolumny ich numerami, ale to rozwiązanie ostateczne i nie praktyczne w tym przypadku (nazwy kolumn r1m01c1, r1m01c3, r1m02c1, r1m02c3 itd.)
  2. zrobić array [$numer_kolumny, $nazwa_kolumny] i potem z niej pobierać nazwy.
  3. zrobić funkcję konstrującą nazwę kolumny (tylko po co serwer dociążać).
ale przed którąś z tych opcji chciałbym najpierw dowiedzieć się czy sama baza nie ma metody wprost; oszczędziło by to trochę pamięci i procków serwera.

Analogicznie sprawa dotyczy również
SELECT * FROM bazy_konserwy_GDN WHERE $numer_kolumny = '$ID' LIMIT 1
oraz
SELECT $numer_kolumny_begin $numer_kolumny_end FROM bazy_konserwy_GDN WHERE $numer_kolumny = '$ID' LIMIT 1

Pozdrawiam.
Sebastian

Tymczasowo stworzono funkcję tworzącą nazwę kolumny w oparciu o jej numer, ale jeśli ktoś odpowie, będę wdzięczny.

pozdrawiam.
Sebastian

Ten post edytował bulimaxiu 18.06.2008, 11:08:36
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bulimaxiu
post
Post #2





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 18.06.2008
Skąd: Reda

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


Witajcie.

Dziękuję krzychu, ale to niesety chyba nie to, o co mi chodziło.

matx132: Właśnie zamiast "gracz" chciałem najprościej podać numer zamiast jej nazwy.

Zamiast:
  1. "Update mapa".$i." SET gracz='matx132132' where gracz='matx132' "

  1. "Update mapa".$i." SET row[30]='matx132132' where gracz='matx132' "

Do czego to potrzebuję? Chciałem mocno uprościć kod w skrypcie typu:
  1. <?php
  2. <table><tr>
  3. for ($a=1; $a<=24, $a++) {
  4.  <td><input type="checkbox" name="$a" value="0" onclick="window.open('do_update.php?rowx=$a&rowxval=1"></td>
  5. }
  6. </tr></table>
  7. ?>

gdzie w do_update.php jest
  1. UPDATE `baza` SET row[$a]` = '$rowxval' WHERE ID = '$ID' LIMIT 1 "

a w bazie jak już wspomniałem kolumny ponazywane wg potrzeby przejrzystości.

Obecnie zrobiłem funkcję, która wykonuje się 24 razy przy każdym rekordzie, których będzie finalnie około 200.
  1. <?php
  2. Function OkreslNazweKolumny ($numer_kolumny) {
  3.  # Tworzenie nazwy komorki w oparciu o jej numer kolejny
  4.  # $numer_kolumny - numer kolumny danych gdzie 1 to 'r1m01c1' a 24 to 'r1m12c3'.
  5.  
  6. $miesiac = round($numer_kolumny/2);
  7.  if ($miesiac < 10) {
  8.  $miesiac = "0".$miesiac;
  9.  }
  10. if ($numer_kolumny/<> round($numer_kolumny/2)) {
  11.  $rozszerzenie = "c1";
  12. } else {
  13.  $rozszerzenie = "c3";
  14. }
  15. $nazwa_kolumny_wybranej = "r1m$miesiac".$rozszerzenie;
  16. return "r1m$miesiac".$rozszerzenie;
  17. }
  18. ?>

więc trochę to liczenia sprzęcior ma.

Pozdrawiam.
Sebastian
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 01:01