Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Nie dodaje jednego rekordu [problem rozwiązany]
Forum PHP.pl > Forum > Przedszkole
fcs
  1. <?php
  2.  
  3. $_GET['idnewsa'] = $idnewsa;
  4. print "$idnewsa";
  5. if ($autor && $tresc) 
  6. {
  7.  
  8. $data = date("d.m.y");
  9. mysql_connect ("*****", "*****", "*****") 
  10. or die ("Nie mozna sie polczyc z MySQL");
  11. mysql_select_db ("*****") 
  12. or die ("Nie można się połczyć z bazą danych");
  13.  
  14. mysql_query ("INSERT INTO komentarze (idnewsa, autor, tresc, data) 
  15. VALUES ('$idnewsa', '$autor', '$tresc', '$data')")
  16. or die ("Blad w zapytaniu"); 
  17. print 'Komentarz zostal dodany'; }
  18.  
  19. ?>



Wg mnie powinno byc wszystko ok a w kolumnie idnewsa zawsze wstawia mi zero mimo, że
  1. <?php
  2. print "$idnewsa";
  3. ?>
Wyswietla mi prawidłową cyfrę.

Kolumna idnewsa jest typu INT(11) , domyslnie NULL
Mike122
~fcs możesz pokazać rzut tabeli komentarze z MySQL.
I nie powinno być
A tu trochę poprawiony skrypt:
  1. <?php
  2. $idnewsa = ($_GET['idnewsa']);
  3. ?>
atomek4
A formularz do wpisywania tych newsów jest w tym samym pliku?
fcs


Atomek4 tak

  1. <FORM action="komentuj.php" method="POST">
  2. <center><table id="dodajkoment"><tr>
  3. <td>Autor<br><INPUT name="autor" maxlength=50 size=35>
  4. <tr><td>Treść<br><textarea name="tresc" rows="18" cols="35" maxlength=3000></textarea>
  5. <tr><td><INPUT type="submit" value="Wyslij">
  6. </form>
fcs
I w jednym i w drugim przypadku
  1. <?php
  2. print "$idnewsa";
  3. ?>
wyświetla to samo. Z ciekawości jednak zrobiłem tak jak mówisz i w tabeli nadal zapisuje się jako "0" .
fcs
idnewsa pobierane jest metodą get. Głupio by było w formularzu zaznaczać numer newsa, który się komentuje smile.gif
atomek4
Poza tym formularz przesyłasz POSTem. Poza tym nie wystarczy ci jedno pole ID powiększane automatycznie?
fcs
Cytat(atomek4 @ 30.06.2007, 23:07:46 ) *
Poza tym formularz przesyłasz POSTem. Poza tym nie wystarczy ci jedno pole ID powiększane automatycznie?

Mam jedno pole Auto_increment :]
Wiem ze formularz wysylam postem ale co to ma do rzeczy ?smile.gif Wszystkie pola z formualrza przesyłane są do tabeli poprawnie oprócz idnewsa.
zmienna $idnewsa wyswietlana jest przez echo poprawnie ale gdy wstawiam ją w INSERT INTO to w tabeli zawsze dodawane jest 0 a nie poprawna liczba.
deirathe
no to rzutuj typ na int
atomek4
Po prostu zastanawiam się czy tak się da, że część danych podeślesz POSTem a część GETem i to wszystko ci się doda do bazy danych w jednym zapytaniu smile.gif

No i może wrzuć po tym zapytaniu:
  1. <?php
  2. echo mysql_errno() . ': ' . mysql_error() . "n";
  3. ?>
fcs
Cytat(deirathe @ 30.06.2007, 23:18:56 ) *
no to rzutuj typ na int

idnewsa od początku jest INT . Dałem screena wyżej.
atomek4
  1. <?php
  2. $idnewsa= (int) $_GET['idnewsa'];
  3. ?>
deirathe
typ zmiennej a nie typ w mysql, tak jak kolega wyżej pokazał
fcs
Tak również nie działa.
BTW hmm po co rzutować typ zmiennej skoro jeśli znajduje się w niej liczba naturalna, to typ zmiennej automatycznie ustawia się na int ?
deirathe
Cytat(fcs @ 30.06.2007, 23:25:26 ) *
a.)Tak również nie działa.
b.)BTW hmm po co rzutować typ zmiennej skoro jeśli znajduje się w niej liczba naturalna, to typ zmiennej automatycznie ustawia się na int ?

AD a.) to pokaż reszte kodu bo nikt tu CI wróżyć z kart nie będzie, możesz ewentualnie jeszcze tak spróbować:
  1. <?php
  2. mysql_query ("INSERT INTO komentarze (idnewsa, autor, tresc, data) 
  3. VALUES (".$idnewsa.", '$autor', '$tresc', '$data')") ...
  4. ?>

AD b.) bo jak odbierasz coś getem to zawsze dobrym zwyczajem jest to sprawdzić
fcs
MySQL wywala błąd.
-------
Reszta plików mało ma wspólnego z tym kodem co dałem wyżej. Jedyna wspólna rzecz to zmienna $idnewsa przesyłana metodą GET.
deirathe
A jaki błąd wywala?
atomek4
Może spróbujemy zgadnąć, wspólnymi siłami smile.gif
deirathe
Taaaa... dzwonie do wróżki smile.gif i połączę się z jego bazą za pomocą kanału duchowego i czakr- moc nas poprowadzi ;]

@fcs żeby nie było że sobie nabijam posty, człowieku zwróć mysql_error() i napisz co Ci wyświetla czy to taki trudne? I wybacz ale godzina późna to igłupoty się trzymają a jak jeszcze piszesz że wywala błąd i nie napiszesz co dokładnie to naprawdę można Ci pomóc... I jeszcze nie dość że chcę Ci pomóc to tak ładnie mi dziękujesz...
fcs
Wywala mi taki błąd jaki napisałem w intrukcji "die"

Sorry chlopaki ale nabijcie sobie posty gdzie indziej.
Deirathe, z całym szacunkiem ale mam wrażenie, że nabijasz sobie je od samego początku tematu.
flv
die() bo i ktos o ciapkach zapomniał, a nie działa bo zmienne z łańcucha adresu automatycznie konwertowane są na stringi, rzutuj to na typ int tak jak ktos wczesniej powiedział i powinno być ok, więcej błędów nie widać.
deirathe
Poczytaj sobie wyżej, a raczej na poprzedniej stronie i co do zapytania:
  1. <?php
  2. mysql_query ("INSERT INTO komentarze (id,idnewsa, autor, tresc, data) 
  3. VALUES (NULL,".$idnewsa.", '$autor', '$tresc', '$data')") ...
  4. ?>

P.S.Większość postów wywaliłem.



Ok zaraz sprawdze u mnie na serwerze i odpisze
fcs
  1. <?php
  2. $idnewsa = ((int)$_GET['idnewsa']); 
  3. $autor = ($_POST['autor']); 
  4. $tresc = ($_POST['tresc']); 
  5. print 'idnewsa to '.$idnewsa.'<br />';
  6.  
  7. if ($autor && $tresc) 
  8. {
  9.  
  10. $data = date("d.m.y");
  11. mysql_connect ("*****", "*****", "*****") or die ("Nie mozna sie polczyc z MySQL");
  12. mysql_select_db ("*****") or die ("Nie można się połczyć z bazą danych");
  13.  
  14. mysql_query ("INSERT INTO komentarze (id, idnewsa, autor, tresc, data) VALUES (NULL,".$idnewsa.", '$autor', '$tresc', '$data')") or die ("Blad w zapytaniu"); 
  15. print 'Komentarz zostal dodany'; }
  16. ?>

Zrobiłem tak jak piszesz i niestety nadal wyświetla zero
deirathe
u mnie działa, sam sprawdź:
http://dreamcast.nazwa.pl/test/?idnewsa=12 możęsz dodatkowo sobie dopisać autor= i tresc= żeby zobaczyć że dodaje i że to nie ściema, tylko proszę mi nie spamować servera:P




@fcs a u mnie sprawdzałeś??
fcs
Hmm z ciekawosci skasowalem tabele i stworzyłem ją od nowa, ale nadal nic smile.gif
Moze cos nie tak jest z moim serwerem. Spróbuję na jakimś innym.

Dziękuję wszystkim za zainteresowanie się tematem smile.gif
Problem rozwiązany
Główkowałem nad tym jeszcze chybaz 1.5 godziny smile.gif
Oto rozwiązanie

<?php $idnewsa = ($_GET['idnewsa']); ?>
<FORM action="komentuj.php?idnewsa=<?php print "$idnewsa" ?>" method="POST">
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.