Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 2 pętle i zapytanie
WoGuziczek
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 17.09.2008

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


Witam!

Moje zadanie jest zdeczka skomplikowane.

Mam bazę danych w których są dwie tabele.
W pierwszej są dwa pola (id, autor książki).
W drugiej (id, autor książki, tytuł książki).

Chciałem wykonać odpowiednią pętlę, która zamieni mi drugą tabelę w ten sposób, że
zamiast nazwy autora książki będzie id autora z pierwszej kolumny:
(id, id autora, tytuł książki).
Nie robiłem update do kolumny drugiej, tylko utworzyłem trzecią kolumnę i będę chciał do niej załadować już "po nowemu"

Robiłem to tak:
  1. function sqlclr($input)
  2. {
  3. htmlspecialchars_uni(mysql_real_escape_string($input));
  4. return $input;
  5. }
  6. $artysci_gotowe = mysql_query("
  7. SELECT id, nazwa_autora
  8. FROM `TABELA1`
  9. ORDER BY `id` ASC
  10. ");
  11. $baza_old = mysql_query("
  12. SELECT autor_ksiazki, tytul
  13. FROM `TABELA2`
  14. ORDER BY `id` ASC
  15. ");
  16. while ($pobierzartystow = mysql_fetch_array($artysci_gotowe))
  17. {
  18. $autorid = sqlclr($pobierzartystow['id']);
  19. $nazwa_autora = sqlclr($pobierzartystow['nazwaartysty']);
  20.  
  21. while($starocie = mysql_fetch_array($baza_old))
  22. {
  23. $autor_ksiazki = sqlclr($starocie['autor_ksiazki']);
  24. $tytul = sqlclr($starocie['tytul']);
  25.  
  26. if ($nazwa_autora == $autor_ksiazki)
  27. {
  28. $query = "
  29. INSERT INTO `TABELA3`
  30. (autorid, title)
  31. VALUES (
  32. '" . $autorid . "',
  33. '" . $tytul . "'
  34. )
  35. ";
  36. mysql_query($query);
  37. }
  38. }
  39. }


Generalnie spełniło to funkcję, ponieważ dopasowała id do autora, ale tylko dla pierwszego wpisu w TABELI2.
Potem już wszystkie są takie same (czyli jeżeli pierwszy autor miał id 6 - to wszystkie wpisy w tabeli mają id 6 ;/). Kombinowałem użyć jakiegoś continue;, ale nadal to samo.
Myślę obecnie nad foreach.

Co o tym myślicie?
// Nie patrzcie na jakieś błędy literówek, składni czy funkcji. I tak piszę to na innym silniku, ale napisałem tutaj w ten sposób, żeby było czytelniejsze i zrozumiałe.

Ten post edytował WoGuziczek 8.09.2009, 18:18:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
redeemer
post
Post #2





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

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


Witam.

Domyślam się, że ma to być wykonane jednorazowo, więc po co sobie utrudniać życie - wystarczy sam SQL:

  1. UPDATE Tabela2 SET autor_id = (SELECT id FROM Tabela1 WHERE Tabela2.autor=Tabela1.autor);


Oczywiście najpierw trzeba by dodać do 'Tabela2' kolumnę 'autor_id', a następnie po zabiegu usunąć kolumnę 'autor'.

Pozdrawiam,

Ten post edytował redeemer 8.09.2009, 19:03:39


--------------------
Go to the top of the page
+Quote Post
WoGuziczek
post
Post #3





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 17.09.2008

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


Padłem...
Moje 40 linijek kodu vs Twoja jedna linijka.
Twoje działa smile.gif

Dzięki bardzo winksmiley.jpg
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 01:01