Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dodawanie newsa
Forum PHP.pl > Forum > Przedszkole
MateuszS
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?
Strarus
Nie wiem czy będzie dobrze ale może się uda 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. ?>
MateuszS
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.
help_mee
a czy łączysz się z bazą ? czy tylko dałeś część kodu?
Strarus
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 smile.gif
A dlaczego przypisujesz dacie puste session questionmark.gif I potem ją definiujesz?
MateuszS
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
piotrooo89
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. ?>
Strarus
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 smile.gif
MateuszS
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
erix
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.
MateuszS
Wiec jak powinno byc zeby bylo dobrze?
erix
Dowiesz się, jak ruszysz swoje cztery litery i przeczytasz manuala.
MateuszS
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. ?>
piotrooo89
a co trzymasz w zmiennych sesyjnych? jest tam coś? bo jak nie masz nic to nic dziwnego że nie działa.
erix
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.
MateuszS
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ź
erix
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.
MateuszS
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.           ?>
magra
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. ?>
MateuszS
Działa! Dzieki Ci bardzo! yahoo.gif thumbsupsmileyanim.gif biggrin.gif biggrin.gif
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.