Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Problem z bazą
Forum PHP.pl > Forum > Przedszkole
ciekawy30
Mam taki kod: <?php
$db_host = 'r';
$db_user = 'r';
$db_pass = 'r';
$db_name = 'wydarzenia';
$link = mysql_connect($db_host, $db_user, $db_pass)
or die ("Sprawdź połączenie z serwerem.");
mysql_select_db($db_name)
or die ("Baza danych nie istnieje");
$query = "SELECT info wydarzenia ".
"FROM info wydarzenia".
"WHERE rok = 2008 ";
$results = mysql_query($query)
or die (mysql_error());
while ($row = mysql_fetch_assoc($results)) {
foreach ($row as $val) {
echo $val;}
echo "<br>";
}
?>

przy próbie wyświetlenia pojawia się komunikat: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rok = 2008' at line 1.
Co robię źle jak to naprawić?
bemol
wartość pola w '...', czyli
  1. $query = "SELECT info wydarzenia ".
  2. "FROM info wydarzenia".
  3. "WHERE rok = '2008' ";

Pamiętaj o umieszczaniu kodu w tagach
Kod
[php][/php]


poza tym nie używaj spacji w nazwie tabeli!!
ciekawy30
nadal nie działa. zamieściłem rok w ' 2008'' i nadal wyskakuje to samo. nadal nie wiem dlaczego nie działa. pomoźcie co mam zrobić?
bemol
napisz jakie masz pola w tabeli i ich typ danych i zamień:
info wydarzenia na info_wydarzenia.

poza tym niepotrzebnie podajesz nam swoje dane do MySQL :]

i nie zapomnij wstawić spacji przed 'WHERE'

  1. $query = "SELECT info_wydarzenia FROM info_wydarzenia WHERE rok='2008'";
ciekawy30
baza ma nazwe wydarzenia. tabela też wydarzenia. pola data typ date, rok typ year, wydarzenia ext, opis text rodzaj wydarzenia text zdjecie blob.
bemol
to czym jest 'info'?
wklej jakie masz teraz zapytanie
ciekawy30
$query = "SELECT wydarzenia".
"FROM wydarzenia".
"WHERE rok ='2008'";

i nadal wskakuje You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'rok ='2008'' at line 1
bemol
  1. $query = "SELECT wydarzenia ".
  2. "FROM wydarzenia ".
  3. "WHERE rok ='2008'";


a tak?
ciekawy30
juz jest jakiś efekt. problem wynikł teraz tylko taki ze nie mam polskich znaków? i chciałbym aby wyświetlała się jeszcze data i rodzaj wydarzenia i jeśli jest zdjęcie to też zdjęcie. chcciałbym zrobić większe odstepy między poszczegolnymi wydarzeniami?
kielich
polskie znaki to najlepiej pod połączeniem dopisz

  1. mysql_query ('SET NAMES utf8');
  2. mysql_query ('SET CHARACTER_SET lutf8_polish_ci');
]
i po sprawie

CO do daty to dopisz tam kolumnę data i już ... wyświetlić chyba wiesz jak ...
bemol
1. sprawdź kodowanie pliku
Jeśli używasz windowsowego notatnika to jest ono w ANSI.
Zatem zmień edytor, np na darmowy PSPad.
2. sprawdź kodowanie w nagłówku pliku.
prawdopodobnie jest to iso-8859-2 lub utf-8
3. zapytanie
  1. mysql_query ('SET NAMES utf8');

Użyj tego zapytania jeśli poprzednie kroki nie pomogły i przy każdym dodawaniu rekordów też je wstaw.
Trzeba ujednolicić oba kodowania i najlepiej użyć takiego jakie jest w bazie (latin2/unicode) - odpowiednie dla wyżej wymienionych.

Żeby wybrać wszystkie pola użyj * zamiast nazw pól (wtedy wybierze z bazy wszystkie) lub wypisz wszystkie oddzielając przecinkiem.

Większe odstępy to po prostu <br /> (<br> dla HTML 4 i niższych)
ewentualnie użyj '\n' a jak nie to po prostu zmień w pliku CSS, bądź html padding.
ciekawy30
DObra żeby wszystkie informację mi wyświetlało już sobie poradziłem tylko bym chciał żeby między np. wydarzeniem a datą był odstęp np. taki jak tabulator w wordzie. jak to zrobić? i jeszcze jedno jak dodam żeby wyświetlało zdjęcie to wyskakują mi krzaczki w tym miejscu. co zrobić?
bemol
pokaż jak wyświetlasz to zdjęcie.
ciekawy30
$query = "SELECT data, wydarzenia, zdjęcie ".
"FROM wydarzenia ".
"WHERE rok ='2008'";

jest w polu typu blob ale może lepiej zmienić tak jak mi poradziłes zeby było w polu VARCHAR .... ? tylko potem jak to wyświetlić żeby było obok określonego wydarzenia?
Rysh
Zdjęcie w bazie trzymasz?
ciekawy30
no własnie trzymam ale to nie jest dobry pomysł. więc chyba to zmienie.
bemol
nie używaj polskich znaków w nazwach pól.
Pokazujesz jak pobierasz z bazy danych a nie jak wyświetlasz.
Jeśli wysyłasz plik na serwer to dodawaj w bazie jego ścieżkę lub nazywaj plik kolejnymi liczbami naturalnymi (i zintegruj z polem id)
Załóżmy tę pierwszą wersję.
  1. $query = mysq_query("SELECT * FROM wydarzenia WHERE rok ='2008'");
  2. if (mysql_num_rows($query) > 0) {
  3. foreach ($query as $row) {
  4. echo '<img src="'.$row['zdjecie'].'.jpg" alt="" />';
  5. }
  6. }


Pamiętaj, że musisz wtedy umieścić całą ścieżkę do bazy danych.
ciekawy30
nie wiem jak zrobić te odstępy między data a wydarzeniem. zdjęcia nadl nie moge wyświetlić .pomoze ktos
Rysh
  1. <?php
  2. $db_host = 'r';
  3. $db_user = 'r';
  4. $db_pass = 'r';
  5. $db_name = 'wydarzenia';
  6. mysql_connect($db_host, $db_user, $db_pass) or die ("Sprawdź połączenie z serwerem.");
  7. mysql_select_db($db_name) or die ("Baza danych nie istnieje");
  8. $query = mysq_query("SELECT * FROM wydarzenia WHERE rok ='2008'") or die (mysql_error());
  9. while ($row = mysql_fetch_assoc($results)) {
  10. echo "Cos: ". $row[1] ." - ";
  11. echo "Cos innego: ". $row[2] ."<br />";
  12. //itd
  13. }
  14. ?>
ciekawy30
a co oynacya cođ i cođ innego
mortus
Po pierwsze po co Ci w tabeli wydarzenia pole data i jednocześnie rok? Po drugie w jaki sposób chcesz zaprezentować dane, tzn. w div-ach, w tabeli, czy może jeszcze jakoś inaczej?
ciekawy30
chce wyswietlic wydarzenie data i zdjecie ktorego nie moge wyswietlic. Moye byc to w postaci tabeli. po poprostu chce pobrac te trzy dane z bayz danych i wyswietlic je na stronie internetowej aby siw milo czytalo i mozna bylo zobaczyc zdjecie do kazdego wydarzenia
Rysh
To nie lepiej Ci zrobić nową tabele 'zdjecia' w której będziesz trzymał zdjęcia i odrazu przypisywał każde zdjęcie po id do wydarzenia? Umożliwi Ci to dodawanie więcej niż jedeno zdjęcie do wydarzenia.

Natomiast zdjecia wysylasz formularzem na serwer, przenosisz do katalogu zdjecia i w bazie danych zapisujesz nazwe pliku (przykład: moje_urodziny.png). Następnie pobierasz odpowiednią kolumnę i uzywasz w php:
  1. <?php
  2. echo "<img src='zdjecia/". $row[2] ."' />";
  3. ?>

I po problemie.
ciekawy30
Rysh moze i lepiej ale to co napisales to dla mnie czarna magia. wysylasz formularzem itp totalna magia jak dla mnie. a co jesli chodzi o odstepy miedzy data a wzdarzeniem. jak wyswietlam na stronie to mam to zlane tak jakby bylo bez chociazby spacji.
Rysh
Na forum było dużo o wysyłaniu plików przez formularz, wystarczy chwilę pomyśleć i wykombinujesz.
Po $row[1] daj
  1. ." ";
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.