Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Zamienianie kolum
Forum PHP.pl > Forum > Przedszkole
BuncolPL
Nie bijcie bo dopiero się uczę php i mysql. Kombinuje sam ale nic mi nie wychodzi :/

Mam 3 tabele w bazie danych

--strona--//tabela
-adresid
-adres
----------

--fraza--//tabela
-frazaid
-slowo
----------

--pozycja--//tabela
-adresid
-frazaid
-pozycja
-data
----------

Kod wygląda tak:
Kod
   try
   {
      $pdo = new PDO('mysql:host=localhost;dbname=baza', 'user', 'pass);
      $pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      
      $stmt = $pdo -> query('SELECT * FROM pozycja');
      echo '<ul>';
      foreach($stmt as $row)
      {
          echo '<li>Adres strony - '.$row['adresid'].' - '.$row['frazaid'].' - '.$row['miejsce'].'  - '.$row['data'].'</li>';
      }
      $stmt -> closeCursor();
      echo '</ul>';
   }
   catch(PDOException $e)
   {
      echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
   }


No i przy wyświetlaniu pojawia się problem, ponieważ tak gdzie jest adresid i frazaid pokazują mi się liczby ID z tabeli pozycja, a chciałbym żeby to było zamieniane na wartości, które są przypisane do ID w tableach stronach i fraza.

Kombinowałem różnie z JOIN, WHERE ale nic mi nie wychodzi :/
magra
  1. SELECT * FROM pozycja LEFT JOIN strona USING (adresid) LEFT JOIN fraza USING (frazaid)


  1. <?php
  2. foreach($stmt as $row)
  3.      {
  4.          echo '<li>Adres strony - '.$row['adres'].' - '.$row['slowo'].' - '.$row['miejsce'].'  - '.$row['data'].'</li>';
  5.      }
  6. ?>
BuncolPL
magra wielkie dzięki. A ja męczyłem się już z tym 5 godzin :/

Jeszcze mam z tym problem, że mimo polskich znaków w bazie, takiego samego kodowania bazy i strony nie pojawiają się polskie znaki na stronie :/
erix
Wyszukiwarka: mysql kodowanie, było już setki razy...
BuncolPL
A mam jeszcze jedno pytanie odnośnie tego (chodzi o tablę pozycja).

Nie wiem jak zbudować INSERT, żeby w wypadku gdy wcześniej został dodany rekord o takiej samej adresid, frazaid, data to nowy rekord nie będzie dopisany (lub ewentualnie zaktualizuje tylko kolumnę miejsce)
nospor
Cytat
o takiej samej adresid, frazaid, data to nowy rekord nie będzie dopisany
Musisz zalozyc na te pola unikalny klucz (manual)

Cytat
(lub ewentualnie zaktualizuje tylko kolumnę miejsce

jak juz bedziesz mial ten klucz to
http://dev.mysql.com/doc/refman/5.1/en/ins...-duplicate.html
BuncolPL
nospor wielkie dzięki za informacje.

Cytat
Musisz zalozyc na te pola unikalny klucz (manual)


Rozumię, że wszystkie kolumny adresid, frazaid, data z tabeli pozycja muszę mieć unikalny klucz. Chodzi o coś takiego ?

Kod
ALTER TABLE pozycje
ADD UNIQUE (adresid, frazaid, data);
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.