• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

PHP dodaje za dużo rekordów do bazy

Cloud VPS
–1 głos
772 wizyt
pytanie zadane 9 maja 2016 w PHP przez skrzatjedyny Gaduła (3,150 p.)
edycja 9 maja 2016 przez skrzatjedyny

Witam, jestem bardzo początkujący jeśli chodzi o PHP i napotkałem na taki problem, mianowicie stworzyłem sobie prosty system komentarzy/opinii. Niestety "coś" po dodaniu komentarza dodaje mi wcześniej puste rekordy. Wygląda to tak:

Co najlepsze, czasem dodają się te puste rekordy, a czasem nie.

Kod (head):

<?php

    require_once "connect.php";

    $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);

    if($polaczenie->connect_errno!=0)
    {
        echo "Error: ".$polaczenie->connect_errno;
		$polaczenie->close();
    }
    else
    {
	
		if(!isset($autor) || !isset($tresc))
		{
		$autor = $_POST['autor'];
		$tresc = $_POST['tresc'];
		
        
        $autor = htmlentities($autor, ENT_QUOTES, "UTF-8");
        $tresc = htmlentities($tresc, ENT_QUOTES, "UTF-8");
        
        $dodaj=mysqli_query($polaczenie, "INSERT INTO opinie SET id_opinii=NULL, autor='$autor', tresc='$tresc'");
        
		}
		
    }

    $wyjmij = mysqli_query($polaczenie, "SELECT * FROM opinie");
    
    $polaczenie->close();
    
?>

oraz w części BODY:

<div class="opinie">
                <?php
                
                if(mysqli_num_rows($wyjmij) > 0)
                {
                    while ($r = mysqli_fetch_assoc($wyjmij))
                    {
                        echo '<div class="opinia">';
                        echo '<p class="autor">'.$r['autor'].'</p>';
                        echo '<p>'.$r['tresc'].'</p>';
                        echo '</div>';
                    }
                }
                    
                ?>
            </div>

Jeśli widzicie też jakiś inny karygodny błąd, chętnie wysłucham (widzę, że coś jest nie tak z kodowaniem znaków w bazie, lecz na stronie wyświetlają się poprawnie :P). Ale pierw proszę, pomóżcie z tymi pustymi rekordami :(

EDIT: jak to jest, że 3 minuty po dodaniu pytania sam się orientujesz co się dzieje? :P Odkryłem, że każde odświeżenie strony dodaje jeden pusty rekord. No dobrze, w takim razie zmieniam pytanie na:
Co i jak zmienić, żeby tego uniknąć?

komentarz 9 maja 2016 przez efiku Szeryf (75,160 p.)
Przejdz na PDO bo jest nowsze i łatwiejsze. Usun malpy z kodu. Bede trul tak do znudzenia każdemu.

2 odpowiedzi

+1 głos
odpowiedź 9 maja 2016 przez efiku Szeryf (75,160 p.)
Dodaje bo.... !isset. A jakbyś tak włączył sobie wyświetlanie błędów to byś zobaczył notice ( linia 17-18)
1
komentarz 9 maja 2016 przez efiku Szeryf (75,160 p.)
Smieszy mnie to jak bierzecie kod Zelenta dodajecie coś z innych kodów do tego (obiektowe mysqli to po kij proceduralne) i dziwicie się że nie działa.
komentarz 9 maja 2016 przez skrzatjedyny Gaduła (3,150 p.)
nie rozumiem co Cie tak śmieszy? czego oczekujesz od kogoś kto uczy się od paru dni tego języka, zobaczył dwa filmiki na YT i próbuje coś sensownego napisać? każdy kiedyś zaczynał... chyba dobrze, że się próbuje czegoś nowego?
1
komentarz 9 maja 2016 przez efiku Szeryf (75,160 p.)
Oczekuje, że nie będzie brał gotowych kodów i sklejał kilka z nich w jeden :/

Bardziej się zniechęcisz, niż czegoś nauczysz,
Jeśli chcesz wiedzieć, to ja zaczynałem od czytania dokumentacji, a później zacząłem czytać blogi, gdzie ludzie pisali odnośnie nowych technik i bibliotek.

Jeżeli chcesz się czegoś nauczyć to:

- Wymyśl sobie jakąś prostą apke, np. Lista zadań.  (NIE bierz się za logowanie/rejestracje na początku - to gwóźdź do trumny)
- Przejdź od razu na OOP: https://webmastah.pl/jak-programowac-obiektowo-cz-1-wstep/
- Popatrz na to: https://php-kurs.gitbooks.io/phpkurs/content/
- Tutaj: https://symfony.com/doc/current/book/http_fundamentals.html ( PODSTAWY działania HTTP)
- Tutaj: http://www.phptherightway.com/
- Tutaj: http://phpers.github.io/faq/

Obecnie używa się najczęściej w PHP:
 -> Podejścia obiektowego
 -> PDO
 -> Composera
 -> Twiga

Jak Ci się chce uczyć to googluj te zagadnienia i rozwijaj się.
0 głosów
odpowiedź 9 maja 2016 przez Duo Użytkownik (540 p.)
Wrzuć przed ifa 
       $autor = $_POST['autor'];
        $tresc = $_POST['tresc'];

 

Dodatkowo isset zamień na funkcję empty, która sprawdzi czy zmienna jest pusta, a nie czy zmienna istnieje.

 

Podobne pytania

0 głosów
1 odpowiedź 786 wizyt
pytanie zadane 27 lipca 2020 w PHP przez Samek2222 Początkujący (440 p.)
0 głosów
2 odpowiedzi 1,078 wizyt
pytanie zadane 18 lutego 2020 w PHP przez adikpl Użytkownik (660 p.)
0 głosów
1 odpowiedź 296 wizyt
pytanie zadane 28 kwietnia 2019 w PHP przez iframeeh Użytkownik (680 p.)

93,464 zapytań

142,459 odpowiedzi

322,730 komentarzy

62,844 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...