Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Dwa błache błędy
graby0
post 28.10.2013, 10:46:52
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.06.2013

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


Witam, pierwszy błąd mam w sesji. Chce aby wejść na stronę mieli dostęp tylko użytkownicy o loginie 'aaa' i 'ddd'. Problem w tym że zawsze kieruje mnie na tą stronę a nie do logowania (na inne konto)

Kod
<?php
session_start();
if(isset($_SESSION['login'])=='aaa' || isset($_SESSION['login'])=='ddd') {
    echo '<p>Witaj, <b>'.$_SESSION['login'].'</b> <a href="wyloguj.php">Wyloguj</a></p>';
}
else {
    header('Location: login.php');
}
?>


Drugi mój błąd polega na tym że po naciśnięciu przycisku kod nie działa to znaczy nic się nie dzieje. Pod przyciskiem chce zrobić inserta do bazy. metodą $_Get pobieram wartość z formularza ( o ile dobrze tak kombinuje).

Kod
                    <table id="tabelawyszukaj_menu_lewe">
<tr align="center">
<td>Dodaj rekord do tabeli</td>
</tr><tr>
<td>Producent: <input type="text" name="producent" size="35" maxlength="35" /><br>  
Nazwa: <input type="text" name="nazwa" size="35" maxlength="35" /><br>
Kolor: <input type="text" name="kolor" size="35" maxlength="35" /><br>  
Typ napedy: <input type="text" name="typ" size="35" maxlength="35" /><br>  
Cena: <input type="text" name="cena" size="35" maxlength="35" /><br>  
    <input align="center" type="hidden" name="hidden" value="234"/>
    <input type="submit" name="dodajrekord" value="Wyślij" class="przycisk"/>
</td>
</tr>            
</table>  

        <?php
        mysql_query("SET CHARSET utf8"); // polskie znaki
mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`"); // polskie znaki
if (isset ($_POST['dodajrekord'])) {  
    $producent = ($_GET['producent']);
    $kolor =  ($_GET['kolor']);
    $typ = ($_GET['typ']);
    $nazwa = ($_GET['nazwa']);
    $cena = ($_GET['cena']);
    echo $producent;
    $zapytanie = "INSERT INTO dvd (producent,nazwa,kolor,typ,cana) VALUES ('$producent' ,'$nazwa' ,'$kolor', '$typ', '$cena')";
    mysql_query("set names utf8;");
    if ($rezultat = mysql_query ($zapytanie)) {    
      mysql_close();
      header ('Location:  dvd.php');
      exit();
    } else {
      $komunikat = '<p>Przepraszamy za chwilowe usterki. Wysłanie zmian nie powiodło się. Spróbuj później.</p>';
    }
  
        }
?>


Go to the top of the page
+Quote Post
nospor
post 28.10.2013, 10:48:49
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




isset zwraca TRUE albo FALSE a ty z jakis dziwny powodow porownujesz to do tekstu 'aaaa'....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
graby0
post 28.10.2013, 10:53:18
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.06.2013

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


Cytat(nospor @ 28.10.2013, 11:48:49 ) *
isset zwraca TRUE albo FALSE a ty z jakis dziwny powodow porownujesz to do tekstu 'aaaa'....

Zrozumiałem i już poprawiłem.
Go to the top of the page
+Quote Post
nospor
post 28.10.2013, 10:59:33
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Czyli problem pierwszy rozwiazany, tak?

Co do drugiego:
raz dane z forma pobierasz z $_POST a raz z $_GET..... No wez sie zdecyduj chlopie, albo forma wysylasz postem i pobierasz z POST albo wysylasz getem i wowczas masz pobierac z GET


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
graby0
post 28.10.2013, 11:19:56
Post #5





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.06.2013

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


Pierwszy rozwiązany.

Drugi ustawiony na post i nadal nic.
Go to the top of the page
+Quote Post
nospor
post 28.10.2013, 11:23:50
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ale co ustawione na post?? Formularz ustawiles by wysylal dane postem? Odbierasz tez wszystkie dane z POST?

Temat: Jak poprawnie zada pytanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kosmos
post 28.10.2013, 11:36:13
Post #7





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Masz tu literówkę cana raczej nie masz tak nazwanego pola w BD ...
  1. $zapytanie = "INSERT INTO dvd (producent,nazwa,kolor,typ,cana) VALUES ('$producent' ,'$nazwa' ,'$kolor', '$typ', '$cena')";


Warto używac takiego rozwiązania jak:

  1. $zapytanie = "INSERT INTO dvd (producent,nazwa,kolor,typ,cana) VALUES ('$producent' ,'$nazwa' ,'$kolor', '$typ', '$cena')" or die ('Błąd zapytania do bazy danych');


Wtedy widzisz czy samo zapytanie do bazy się powiodło.
Poczytaj o obsłudze błędów.

Ten post edytował kosmos 28.10.2013, 11:39:48
Go to the top of the page
+Quote Post
graby0
post 28.10.2013, 12:11:35
Post #8





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.06.2013

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


Dzięki za poprawę błędu ale nie tutaj leży problem. Zawsze po naciśnięciu przycisku nic się nie dzieje to znaczy nie wchodzi w tą część ifa gdzie trzeba. Po dodaniu w ifie else z echem pokazuje błąd tutaj if ( $_POST['dodajrekord'] ) oraz wyświetla echo ( else { echo 'nic'; }).

Kod
if ( $_POST['dodajrekord'] )
    {
    $producent = ($_POST[producent]);
    $kolor =  ($_POST[kolor]);
    $typ = ($_POST[typ]);
    $nazwa = ($_POST[nazwa]);
    $cena = ($_POST[cena]);
    $zapytanie = "INSERT INTO dvd (producent,nazwa,kolor,typ_napedu,cena) VALUES ('$producent' ,'$nazwa' ,'$kolor', '$typ', '$cena')" or die ('Błąd zapytania do bazy danych');
    mysql_query("set names utf8;");
    if ($rezultat = mysql_query ($zapytanie)) {    
      mysql_close();
      header ('Location:  dvd.php');
      exit();
    }
}
else { echo 'nic'; }
Go to the top of the page
+Quote Post
nospor
post 28.10.2013, 12:13:49
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Zacznij wkoncu uzywac poprawnego BBCODE. DLa kodu php jest to bbcode PHP!

Widac ewidentnie ze cos masz z formem.... ALbo nie wysylasz go postem, albo masz forma w formie, albo masz totalnie zwalonego forma. Nie wiem tego, bo nie pokazales calego kodu forma. Nigdzie nie widze <FORM... > ani </FORM>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
graby0
post 28.10.2013, 12:25:55
Post #10





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.06.2013

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


Kod
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3c.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3c.org/1999/xhtml" xml:lang="pl" lang="pl">
    <head>
        <meta charset="utf-8"/>
        <title>Generuj zestaw</title>
        <link rel="stylesheet" href="css/style.css"/>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
    </head>
        <body>

<div id="menu_lewe">
<p class="bold">
Menu:</p>
<ul>
<li><a href="dvd.php">Edytuj tabele dvd </a></li>
</ul>
</div>
            
        <?php
        mysql_query("SET CHARSET utf8"); // polskie znaki
mysql_query("SET NAMES `utf8` COLLATE `utf8_polish_ci`"); // polskie znaki
if ( $_POST['dodajrekord'] )
    {
    $producent = ($_POST['producent']);
    $kolor =  ($_POST['kolor']);
    $typ = ($_POST['typ']);
    $nazwa = ($_POST['nazwa']);
    $cena = ($_POST['cena']);
    $zapytanie = "INSERT INTO dvd (producent,nazwa,kolor,typ_napedu,cena) VALUES ('$producent' ,'$nazwa' ,'$kolor', '$typ', '$cena')";
    mysql_query("set names utf8;");
    if ($rezultat = mysql_query ($zapytanie)) {    
      mysql_close();
      header ('Location:  dvd.php');
      exit();
    }
}
else { echo 'nic'; }      
?>            
            
<div class="formularz">
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table id="tabelawyszukaj_menu_lewe">
<tr align="center">
<td>Dodaj rekord do tabeli</td>
</tr><tr>
<td>Producent: <input type="text" name="producent" size="35" maxlength="40" /><br>  
Nazwa: <input type="text" name="nazwa" size="35" maxlength="40" /><br>
Kolor: <input type="text" name="kolor" size="35" maxlength="40" /><br>  
Typ napedy: <input type="text" name="typ" size="35" maxlength="40" /><br>  
Cena: <input type="text" name="cena" size="35" maxlength="9" /><br>  
    <input type="submit" name="dodajrekord" value="Wyślij" class="przycisk"/>
</td>
</tr>            
</table>  
</form>
</div>
</body>
</html>


Ten post edytował graby0 28.10.2013, 12:27:02
Go to the top of the page
+Quote Post
Turson
post 28.10.2013, 12:50:13
Post #11





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  1. if ( $_POST['dodajrekord'] )

do tego służy funkcja isset()
Go to the top of the page
+Quote Post
kosmos
post 28.10.2013, 13:21:21
Post #12





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Cytat(Turson @ 28.10.2013, 12:50:13 ) *
  1. if ( $_POST['dodajrekord'] )

do tego służy funkcja isset()


Kolega ma rację
sprobuj:

  1. if (isset($_POST['dodajrekord']))
Go to the top of the page
+Quote Post
graby0
post 28.10.2013, 13:37:35
Post #13





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.06.2013

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


isset już dodany. Po uruchomieniu strony nadal wyświetla echo 'nic'; lecz po naciśnięciu przycisku Wyślij rekord nie zapisuje się do bazy. Wynik echo z wypełnionymi danymi jest INSERT INTO dvd (producent,nazwa,kolor,typ_napedu,cena) VALUES ('Producent' ,'Nazwa' ,'Kolor', 'Typ', '1234'); . Rekord nie zostaje wpisany jednak do bazy mimo tego że gdybyś przekopiował ten kod do bazy na localhoscie to rekord zostaje zapisany bez problemu.

Ten post edytował graby0 28.10.2013, 13:38:45
Go to the top of the page
+Quote Post
nospor
post 28.10.2013, 13:43:11
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Poraz kolejny prosze o poprawne BBCODE PHP

Cytat
. Po uruchomieniu strony nadal wyświetla echo 'nic';
No i prawidlowo.....


Zas nie zapisuje sie bo masz jakis blad bazy. Podalem ci temat, ktory mowi jak to sprawdzac i wyswietlac bledy bazy....
Temat: Jak poprawnie zada pytanie


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
kosmos
post 28.10.2013, 13:44:47
Post #15





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Pierwszy problem
Po wyświetleniu strony, na ekranie drukuje Ci się echo 'nic', ponieważ ten warunek:

  1. if (isset($_POST['dodajrekord']))


nie jest spełniony i od razu lecisz do ELSE, a tam masz drukowanie.

Drugi problem

Zrób tak jak Ci podpowiedziałem wcześniej.
Zamień to:
  1. $zapytanie = "INSERT INTO dvd (producent,nazwa,kolor,typ,cena) VALUES ('$producent' ,'$nazwa' ,'$kolor', '$typ', '$cena')";


Tym:
  1. $zapytanie = "INSERT INTO dvd (producent,nazwa,kolor,typ,cena) VALUES ('$producent' ,'$nazwa' ,'$kolor', '$typ', '$cena')" or die ('Błąd zapytania do bazy danych');


Wtedy będziesz wiedział czy Twoje zapytanie jest błędne. Jeśli nie, trzeba szukać dalej.
Pod jakim typem trzymasz cenę w bazie?

Ten post edytował kosmos 28.10.2013, 13:49:26
Go to the top of the page
+Quote Post
graby0
post 28.10.2013, 13:59:55
Post #16





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 16.06.2013

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


ZAPYTANIE:INSERT INTO dvd (producent,nazwa,kolor,typ_napedu,cena) VALUES ('Producent' ,'Nazwa' ,'Kolor', 'Typ', '123'); BŁĄD:No database selected

Kurde sprawdzałem dosłownie wszystko po kilka razy prócz tej wybranej bazy. Brak słów.
Go to the top of the page
+Quote Post
kosmos
post 28.10.2013, 14:08:38
Post #17





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Nie przejmuj się ... czasem najbardziej doświadczony ... może się wyłożyć na oczywistej głupocie np. w wyniku przemęczenia wink.gif
Tak jak mówiłem, poczytaj o obsłudze błędów.

Pozdr.
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 13.07.2025 - 14:44