Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Dwa błache błędy
Forum PHP.pl > Forum > Przedszkole
graby0
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>';
    }
  
        }
?>


nospor
isset zwraca TRUE albo FALSE a ty z jakis dziwny powodow porownujesz to do tekstu 'aaaa'....
graby0
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.
nospor
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
graby0
Pierwszy rozwiązany.

Drugi ustawiony na post i nadal nic.
nospor
ale co ustawione na post?? Formularz ustawiles by wysylal dane postem? Odbierasz tez wszystkie dane z POST?

Temat: Jak poprawnie zada pytanie
kosmos
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.
graby0
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'; }
nospor
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>
graby0
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>
Turson
  1. if ( $_POST['dodajrekord'] )

do tego służy funkcja isset()
kosmos
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']))
graby0
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.
nospor
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
kosmos
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?
graby0
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.
kosmos
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.
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.