Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Dodawanie newsa, Jak nie to, to to.
MateuszS
post
Post #1





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Witam. Mam takie cuś:

  1. <?
  2.            
  3. $_POST['tytulnewsa'] = $tytulnewsa;
  4. $_POST['trescnewsa'] = $trescnewsa;
  5.            
  6. $data = $_SESSION['data'];
  7. $trescnewsa = $_SESSION['trescnewsa'];
  8. $tytulnewsa = $_SESSION['tytulnewsa'];
  9.            
  10. $data = (date("G:i:s, dS F Y"));
  11.            
  12. if(!isSet($tytulnewsa) && !isSet($trescnewsa))
  13. {
  14.     if(!empty($tytulnewsa) and !empty($trescnewsa))
  15.     {
  16.  
  17.                $zapytanie = mysql_query("INSERT INTO `news` (Data,Nick,Tytul,Tresc)
  18.                                          VALUES ('$data','$_SESSION[login]','$tytulnewsa','$trescnewsa')");
  19.              
  20.                header('location: '.$_SERVER['PHP_SELF']);
  21.                exit;
  22.     }
  23. }                              
  24.  
  25. else
  26. {
  27.      echo '<div class="else">';
  28.      echo 'Błędnie wypełniony formularz!';
  29.      echo '</div>';
  30. }    
  31.  
  32.            
  33.            
  34. ?>



Gdybym to zrobił na szybko to było by tak:
1. Wchodzę na stronę newsa a tam jest już "Błędnie wypełniony formularz"
2. Po odświeżaniu strony dodaje się 10 kolejnych newsów.

Aby temu zapobiec, Zrobiłem tak:
1. Dodałem

  1. <?php
  2. header('location: '.$_SERVER['PHP_SELF']);
  3. ?>


2. Użyłem isSet, żeby nie było tego napisu "Błednie... " zaraz po wejściu na stronę.

Ten kod główny powyżej to ten który teraz mam.

Problem polega na tym, że nie zapisuje mi do bazy żadnych rekordów. Czy da się to naprawić żeby nie było w/w problemów?

Ten post edytował MateuszScirka 13.01.2009, 16:14:04
Go to the top of the page
+Quote Post
Strarus
post
Post #2





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


Nie wiem czy będzie dobrze ale może się uda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Ja bym zrobił inaczej zapytanie do MySQL:


  1. <?php
  2. "INSERT INTO `news` SET `data`='$data', `login`='$_SESSION[login]', `tytulnewsa`='$tytulnewsa', `trescnewsa`='$trescnewsa'"
  3. ?>
Go to the top of the page
+Quote Post
MateuszS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Ten element jest dobrze bo newsy dodawało. Twoje zapytanie jest chyba trochę nie poprawne. Tak się robi przy SELECT. Ale dzięki, Pozdrawiam i czekam na odpowiedzi.
Go to the top of the page
+Quote Post
help_mee
post
Post #4





Grupa: Zarejestrowani
Postów: 244
Pomógł: 21
Dołączył: 10.02.2008
Skąd: Załęcze Wielkie

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


a czy łączysz się z bazą ? czy tylko dałeś część kodu?
Go to the top of the page
+Quote Post
Strarus
post
Post #5





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


Zapytanie mam dobre bo u mnie jest tak:
  1. <?php
  2. $add = mysql_query("INSERT INTO `news` SET `content`='$content', `data`='$data', `nick`='$nick', `img`='$img'");
  3. ?>

I wszystko działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
A dlaczego przypisujesz dacie puste session (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) I potem ją definiujesz?
Go to the top of the page
+Quote Post
MateuszS
post
Post #6





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Tak łącze include (jest wcześniej w kodzie).

Połączenie itp jest dobrze, zapytanie też jest dobrze. Bo gdy usuwałem issety, mieszałem instrukcje warunkowe to działało tyle że nie tak jak trzeba.

Wyrażę się inaczej bo to dość zamotane:

Chcę aby po wejściu do panelu nie pokazało się od razu: "błąd przy dodawaniu newsa" tak jak po wykonaniu instrukcji = false. Poza tym chcę aby gdy odświeżam stronę nie dodawało kolejnych pustych newsów. I po ostatnie chce zeby je wogole dodawalo
Go to the top of the page
+Quote Post
piotrooo89
post
Post #7


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




popatrz jak przypisujesz zmienne...

  1. <?php
  2. $_POST['tytulnewsa'] = $tytulnewsa;
  3. $_POST['trescnewsa'] = $trescnewsa;
  4. ?>


pierwsza zawsze jest zmienna do której chcesz coś zapisać natomiast druga to zmienna (text, cokolwiek) w której trzymasz co ma się znaleźć w pierwszej.

  1. <?php
  2. $tytulnewsa=$_POST['tytulnewsa'];
  3. $trescnewsa=$_POST['trescnewsa'];
  4. ?>
Go to the top of the page
+Quote Post
Strarus
post
Post #8





Grupa: Zarejestrowani
Postów: 339
Pomógł: 12
Dołączył: 22.11.2008

Ostrzeżenie: (20%)
X----


Muszę już iść ale masz mój kod, którego używam:
  1. <?php
  2. if(isset($_SESSION['zalogowany'])) {
  3. include('db_connect.inc.php');
  4. if(isset($_POST['content']) && !empty($_POST['content']) && isset($_POST['nick']) && !empty($_POST['nick']) && isset($_POST['img']) && !empty($_POST['img'])) {
  5.  $content = ($_POST['content']);
  6.  $data = date('d.m.Y H:i:s');
  7.  $nick = strip_tags($_POST['nick']);
  8.  $img = ($_POST['img']);
  9.  $add = mysql_query("INSERT INTO `news` SET `content`='$content', `data`='$data', `nick`='$nick', `img`='$img'");
  10.  if(!$add) {
  11.    echo 'Błąd podczas dodawania danych do bazy';
  12.  }
  13. } else {
  14.   echo '<form method="post" action="dodaj.php"><table>
  15. <tr>
  16. <td>Nick:</td>
  17. <td><input type="text" name="nick" /></td>
  18. </tr>
  19. <tr>
  20. <td>Treść:</td>
  21. <td><textarea name="content" cools="40" rows="4"></textarea></td>
  22. </tr>
  23. <tr>
  24. <td>Obrazek numer:</td>
  25. <td><select name="img">
  26.        <option>1</option>
  27.        <option>2</option>
  28.        <option>3</option>
  29.    </select></td>
  30. </tr>
  31. </table><br/><input type="submit" value="Dodaj!" /></form>
  32. <br /><img src="news/news1.png" width="50px" height="50px" /> - 1
  33. <br /><img src="news/news2.png" width="50px" height="50px" /> - 2
  34. <br /><img src="news/news3.png" width="50px" height="50px" /> - 3
  35. <br/>
  36. <br/><a href="logout.php">Wyloguj!</a>';
  37. }
  38. } else {
  39.  echo '<a href="login.php">Zaloguj!</a>';
  40. }
  41. ?>
Może się przyda (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
MateuszS
post
Post #9





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Piotrooo, no dobra ale to nie ma nic wspolnego z tym ze nie dodaje mi nic do bazy...

Gdy zmienie instrukcje, wywale isSety itp to dziala dobrze tylko ze po odswiezaniu dodaje mi rekordy a po wejsciu na strone formularza od razu pisze "Blednie wyp. formularz" jeszcze przed wypelnieniem
Go to the top of the page
+Quote Post
erix
post
Post #10





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A wiesz, jaka jest różnica między isset" title="Zobacz w manualu PHP" target="_manual a emtpy" title="Zobacz w manualu PHP" target="_manual? Będziesz miał pustą zmienną i isset" title="Zobacz w manualu PHP" target="_manual zwróci true.
Go to the top of the page
+Quote Post
MateuszS
post
Post #11





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Wiec jak powinno byc zeby bylo dobrze?
Go to the top of the page
+Quote Post
erix
post
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Dowiesz się, jak ruszysz swoje cztery litery i przeczytasz manuala.
Go to the top of the page
+Quote Post
MateuszS
post
Post #13





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Moje 4 litery ruszały się całą noc i całą Biologię, bo siedziałem nad tym prostym skryptem. Serio próbowałem już wszystkiego co mi tylko do głowy przyszło. Skoro wiecie to czemu nie napiszecie. Na każdy post w tym dziale można odp. "Rusz 4 litery i czytaj manuala". Jednak nie zawsze wystarczy przeczytać manuala po angielsku żeby się dow. co jest źle. Wg mnie wszystko jest dobrze. A nawet taki prosty kod nie działa....

  1. <?php
  2. $trescnewsa=$_POST['trescnewsa'];
  3.            $tytulnewsa=$_POST['tytulnewsa'];
  4.            
  5.            $data = $_SESSION['data'];
  6.            $trescnewsa=$_SESSION['trescnewsa'];
  7.            $tytulnewsa=$_SESSION['tytulnewsa'];
  8.            
  9.            $data = (date("G:i:s, dS F Y"));
  10.            
  11.            
  12.            if(!empty($tytulnewsa) and !empty($trescnewsa))
  13.            {
  14.  
  15.                $zapytanie = mysql_query("INSERT INTO `news` (Data,Nick,Tytul,Tresc)
  16.                            VALUES ('$data','$_SESSION[login]','$tytulnewsa','$trescnewsa')");
  17.  
  18.            }
  19. ?>
Go to the top of the page
+Quote Post
piotrooo89
post
Post #14


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




a co trzymasz w zmiennych sesyjnych? jest tam coś? bo jak nie masz nic to nic dziwnego że nie działa.
Go to the top of the page
+Quote Post
erix
post
Post #15





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Na każdy post w tym dziale można odp. "Rusz 4 litery i czytaj manuala".

Posiedziałbyś dłużej w tym dziale, to byś się zdziwił, jacy ludzie potrafią być leniwi... I gdyby wszyscy ruszali swoje cztery litery jak należy, to byłby tu jeden wątek na godzinę, a nie na minutę. A nie narzekaj na angielski, bo jest i będzie językiem programistów.

Twierdzisz, że jest dobrze, ok:
  1. <?php
  2. $trescnewsa=$_POST['trescnewsa'];
  3.           $tytulnewsa=$_POST['tytulnewsa'];
  4.          
  5.           $data = $_SESSION['data'];
  6.           $trescnewsa=$_SESSION['trescnewsa'];
  7.           $tytulnewsa=$_SESSION['tytulnewsa'];
  8. ?>

Wyciągasz treść z formularza, ale zaraz ją zapisujesz pustymi danymi, więc jak ma być dobrze? Nie trzeba mieć 40 fakultetów, żeby zrozumieć, że jak do pudełka z muchą wstawisz rosiczkę, to już tej muchy nie będzie.

Poza tym, jest taka funkcja mysql_error" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
MateuszS
post
Post #16





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Więc z moich zamyślnych konkluzji, zawżdy powiedziałbym iż nawet ciężki pracy, wypracowałem takie cu:

  1. <?
  2.            
  3.            
  4.            $trescnewsa=$_POST['trescnewsa'];
  5.            $tytulnewsa=$_POST['tytulnewsa'];
  6.            
  7.                        
  8.            $data = (date("G:i:s, dS F Y"));
  9.            
  10.  
  11.            if( !empty($tytulnewsa) and !empty($trescnewsa))
  12.            {
  13.                    $zapytanie = mysql_query("INSERT INTO `news` (Data,Nick,Tytul,Tresc)
  14.                                                VALUES ('$data','$_SESSION[login]','$tytulnewsa','$trescnewsa')");
  15.            
  16.                    header('location: '.$_SERVER['PHP_SELF']);
  17.                    exit;
  18.                                                
  19.            }
  20.            
  21.            else
  22.            {
  23.                
  24.                if (isSet($tytulnewsa) and isSet($tytulnewsa))
  25.                {
  26.                    echo '<div class="else">';
  27.                    echo 'Błąd przy wypełnianiu formularza!';
  28.                    echo '</div>';
  29.                }  
  30.            }
  31.            
  32.    
  33.            ?>


Wszystko do bazy zapisuje, po odswiezaniu nie dodaje nowych rekordow all ok tylko tego. W tym kodzie po blednym wypelnieniu formularza (zostawienie pustych miejsc) nie wyswietla sie error. ale po usunieciu issetow i troche pozmienianiu wyswietla sie nawet przed wypelnieniem pol. Pomysl na issety wzialem ze starego skryptu komentarza, zalaczam:
  1. <?php
  2. if(isSet($_POST["haslo"]) && isSet($_POST["login"]))
  3. {
  4. if( $_POST['login'] != $login && $_POST['haslo'] != $haslo)
  5.    {
  6.        echo '<br /><br />';
  7.        echo '<center>';
  8.        echo 'Podane dane są nieprawidłowe';
  9.    }
  10. }
  11. ?>


Prosze o odpowiedź
Go to the top of the page
+Quote Post
erix
post
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
ale po usunieciu issetow i troche pozmienianiu wyswietla sie nawet przed wypelnieniem pol.

Zamień isset" title="Zobacz w manualu PHP" target="_manual na !empty" title="Zobacz w manualu PHP" target="_manual.
Go to the top of the page
+Quote Post
MateuszS
post
Post #18





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


yyy jezeli to zamienie na !empty to wywali blad gdy bede wysylal wiad.

  1. <?php
  2. else
  3.           {
  4.              
  5.               if (!empty($tytulnewsa) and !empty($tytulnewsa)) // ?!
  6.               {
  7.                   echo '<div class="else">';
  8.                   echo 'Błąd przy wypełnianiu formularza!';
  9.                   echo '</div>';
  10.               }  
  11.           }
  12.          
  13.  
  14.           ?>


Ten post edytował MateuszScirka 14.01.2009, 16:20:14
Go to the top of the page
+Quote Post
magra
post
Post #19





Grupa: Zarejestrowani
Postów: 34
Pomógł: 8
Dołączył: 5.10.2004

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


spróbuj tak:
  1. <?php
  2. if( $_POST && !empty($tytulnewsa) and !empty($trescnewsa))
  3.           {
  4.                   $zapytanie = mysql_query("INSERT INTO `news` (Data,Nick,Tytul,Tresc)
  5.                                               VALUES ('$data','$_SESSION[login]','$tytulnewsa','$trescnewsa')");
  6.            
  7.                   header('location: '.$_SERVER['PHP_SELF']);
  8.                   exit;
  9.                                              
  10.           }
  11.          
  12.           elseif ($_POST)
  13.           {
  14.                   echo '<div class="else">';
  15.                   echo 'Błąd przy wypełnianiu formularza!';
  16.                   echo '</div>';
  17.           }
  18. ?>
Go to the top of the page
+Quote Post
MateuszS
post
Post #20





Grupa: Zarejestrowani
Postów: 1 429
Pomógł: 195
Dołączył: 6.10.2008
Skąd: Kraków/Tomaszów Lubelski

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


Działa! Dzieki Ci bardzo! (IMG:http://forum.php.pl/style_emoticons/default/yahoo.gif) (IMG:http://forum.php.pl/style_emoticons/default/thumbsupsmileyanim.gif) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.12.2025 - 02:02