Na forum.stronghold.net.pl wykorzystujemy ciasteczka. Jeśli jeszcze nie masz dość tego typu komunikatów, więcej informacji znajdziesz w Polityce Cookies. zamknij
Następnie jest plik news.php do którego przesyłane są dane z formularza (te div'y tak na razie tylko wstawiłem, kombinuję tam z nimi, ale nie o to chodzi):
$zapytanie = "INSERT INTO newsy VALUES ('$id')";
mysql_query($zapytanie);
$zapytanie = "INSERT INTO newsy VALUES ('$tytul')";
mysql_query($zapytanie);
Problem polega na tym, iż gdy dodaję sobie newsa w formularzu, następnie wchodzę w phpmyadmin żadnych rekordów w bazie nie ma. Zmieniałem już te wpisy na różne sposoby. Jestem baardzo zielony w php, więc proszę o pomoc. Tak samo zastanawia mnie jak "wyciągnąć" potem te newsy z bazy, aby były one widoczne na np. stronie głównej. Z góry dzięki za pomoc, mam nadzieję, że rozumiecie o co mi chodzi
Podstawy SQL'a się kłaniają . Po pierwsze - pokaż strukturę tabeli (eksport z PHPMyAdmina). W każdym razie do dodawania rekordów używa się jednego zapytania, a nie jak Ty robisz 2, czy więcej .
$id zbędny - od tego sa pola id w tabeli z nadanym auto_increment (autouzupełnianiem kolejną liczbą). $data to powinien być IMO albo czas od 1 stycznia 170 (time()), albo data w formie SQLowej, czyli odpowiednio sformatowena funkcja date do postaci YYYY-MM-DDD (oczywiście dla pola w tabeli musisz nadać odpowiedni rodzaj - DATE). Inna sprawa, że w formularzu nie są tworzone zmienne $_POST['id'], $_POST['data'] .
Jeśli zaś chodzi o finalne dodanie - najlepiej sprawdzać, czy funkcja mysql_query() zwróciła true (co oznacza, że wszystko poszło ok) i też else, aby wyświetlić jaki jest problem (funkcja mysql_error()). Samo zapytanie, zależnie od tego, jak wygląda struktura tabeli, powinno mieć mniej więcej taki kształt:
Kod:
$zapytanie = "INSERT INTO newsy VALUES(NULL [pole auto_increment samo doda id], '$tytul', '$tresc', $$data'";
Gra w: życie
Wiek: 28 Posty: 652 Skąd: Nowy Sącz Medale: 1 (Więcej...)
Wysłany: 12 Wrzesień 11, 18:13
Zrobiłem, to co poradziliście i podmieniłem kod, jednakże po otwarciu pliku news.php jest taki oto napis:
Wystšpił błšdYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Require to funkcja. Choć błąd nie tego dotyczy. Nie zamknąłeś nawiasu za values - IMO tego dotyczy błąd. Jednak dalej nie przedstawiłeś nam struktury tabeli, a co za tym idzie wydaje mi się, że następny błąd (po poprawieniu tego) będzie w insercie - pola mogą być w innej kolejności/jest ich więcej etc.
[ Dodano: 12 Wrzesień 11, 19:19 ]
Cwaniaczek, ja mam 3 ;P. Btw. Masz tam wszystko co trzeba opisane, jeśli chodzi o to, o co teraz pytasz . Przewertuj ją dokładnie. Co nie oznacza, że nie chcę Ci pomóc .
Gra w: życie
Wiek: 28 Posty: 652 Skąd: Nowy Sącz Medale: 1 (Więcej...)
Wysłany: 12 Wrzesień 11, 18:36
Siwy napisał/a:
Require to funkcja.
Czyli mam zastąpic cudzysłów nawiasem okrągłym?
Siwy napisał/a:
Nie zamknąłeś nawiasu za values - IMO tego dotyczy błąd.
Poprawione, dzięki.
Siwy napisał/a:
ednak dalej nie przedstawiłeś nam struktury tabeli, a co za tym idzie wydaje mi się, że następny błąd (po poprawieniu tego) będzie w insercie - pola mogą być w innej kolejności/jest ich więcej etc.
Co do tabeli - skopiowałem polecenie sql z Twojego artykułu "System komentarzy", jednak wyedytowałem je. Czyli nazwa tabeli to newsy, a reszta wygląda tak:
# Kolumna Typ Metoda porównywania napisów Null Domyślnie Dodatkowo
1 id int(11) Nie None AUTO_INCREMENT
2 tytul char(40) latin2_swedish_ci Nie None
3 tresc text latin2_swedish_ci Nie None
4 data int(11)
Mam nadzieję, że jest to w miarę czytelne dla Ciebie Czyli faktycznie, pól mam więcej... a więc co winienem zrobić?
Dodam jeszcze, że teraz po otwarciu pliku mam napis:
Wystšpił błšdColumn count doesn't match value count at row 1
Gra w: życie
Wiek: 28 Posty: 652 Skąd: Nowy Sącz Medale: 1 (Więcej...)
Wysłany: 12 Wrzesień 11, 19:09
Dzięki, jesteś wielki, poprawiłem wszystko i działa Jednakże... tak, ja to zawsze mam jakiś problem ;D Newsy pokazują się, ale w każdym z nich nie ma wartości z tabeli newsy, tylko wszędzie jest tak:
tytul
tresc
$zapytanie = "SELECT 'tytul', 'tresc' FROM newsy ORDER BY id DESC"; // * oznacza wszystko, w innym wypadku wymieniaj pola jakie chcesz wyciagnac po przecinku
Hmm po pierwsze oddziel dodawanie newsa od ich wyświetlania . Bo co każde wyświetlenie dodają się chyba puste rekordy mi się wydaje. Albo poprzez sprawdzenie czy coś przyszło z formularza, albo przez osobny plik .
Aby sprawdzić czy przyszły jakieś dane z formularza użyj
Kod:
// moze byc tez np. GET
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
kod dodawania newsa
}
else
{
wyswietlanie nmewsow
}
Co do Twojego problemu wydaje mi się, że rozwiązaniem będzie usunięcie cudzysłowów z nazw pól . Czyli
Kod:
SELECT tytul, tresc FROM newsy ORDER BY id DESC;
Zawsze nazwy pól podaje się albo bez niczego, albo w tych tajemniczych znakach koło jedynki - ` .
Jeszcze raz dzięki, choć znając mnie jeszcze nieraz będę musiał szukać u Ciebie pomocy
Nie ma sprawy, to przyjemność . Dodaje kopa, aby dalej się uczyć etc., bo widać tego efekty nie tylko w postaci własnych skryptów, ale także pomocy innym .
Problem z tym, że mam błąd. Nie wiem jak osadzić html w php. Próbowałem naprawdę wielu sposobów - dodawałem cudzysłowy, echa itd. Jednak jestem na to za głupi i muszę kolejna raz prosić Cię o przysługę ;D Pomożesz?
PS: Chciałbym też aby w jednym takim divie z treścią wyświetlała się treść jednego newsa, bo teraz to chyba będą się wyświetlać wszystkie wrzucone do tabeli treści. Podobnie z tytułami. No i aby najnowsze newsy były u góry
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum