Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [CSS][SQL][PHP]Znikająca stopka
Forum PHP.pl > Forum > Przedszkole
Alkan0id
Witam
Mam następujący problem, klikając poszczególny odnośnik na stronie zmienia się zawartość div'a. Jednak gdy przejdę do panelu "Logowanie" to stopka przemieszcza się do jego wnętrza. Jest ona wypozycjonowana za w następujący sposób
Kod
div#created {position: absolute; left:767px; top:550px; background: url(zielonypixel.png)}

Oto treść php.
Kod
else if ($strona=="4")
{
echo'
<table>
<form encetype="text/plain" action ="logowanie.php" method="post">
<tr><td>Login</td><td><input type=text name="login" maxlenght="10" size="10"></input></td></tr>
<tr><td>Haslo</td><td><input type=password name="haslo" maxlenght="10" size="10"></input></td></tr>
<tr><td>Uczelnia</td><td><input type=text name="uczelnia" maxlenght="10" size="10"></input></td></tr>
<tr><td>E_mail</td><td><input type=text name="e_mail" maxlenght="30" size="10"></input></td></tr>
<tr><td>Plec</td><td><select name=plec><option value="mezczyzna">mezczyzna<option value="kobieta">kobieta</select></td></tr>
<td><input class=submit type=submit value="Zakoncz rejestracje"></input></td>
</form>
<table/>
<div id="tekst2" algin="justify">Zaloguj sie, aby moc dodawac komentarze.Tylko najbardziej aktywni uzytkownicy beda mieli opcje
dodawania newsow oraz innych ukrytych opcji</div>
';
}

Usuwając wszystko wewnątrz funkcji echo i wpisując np "a" wszystko działa poprawnie ale nie mam pojęcia co może powodować przesunięcie tej stopki.

Kolejnym problemem jest łączenie z baza danych
Kod
<?php
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$uczelnia=$_POST['uczelnia'];
$e_mail=$_POST['e_mail'];

$login=trim($login);             //trim-usuniecie zbednych spacji
$haslo=trim($haslo);
$uczelnia=trim($uczelnia);
$e_mail=trim($e_mail);

if (!$login || !$haslo || !$e_mail )  // to akurat działa
{
    echo'Uwaga! Nalezy wypełnić wymagane pola!';
    exit;
}
@ $db = new mysqli ('localhost'.'root'.''.'uzytkownicy');


if (mysqli_connect errno()) // tutaj wywala błąd
{
    echo'Wystapil blad przy laczeniu z baza danych, prosze sprobowac pozniej';
    exit;
}
$query="INSERT INTO uzytkownicy values (login='$login',haslo='$haslo',uczelnia='$uczelnia',e_mail='$e_mail')";
mysql_query($query);
?>


Dodam, że jestem początkujący i szukałem w internecie oraz książkach sposobu na połączenie z bazą danych jednak były opisane tam różne sposoby z których żaden nie działał.
filon
co do pierwszego nie widze bledu. Jak masz to na sieci to podaj link zeby mozna bylo to zobaczyc

w polaczeniu do bazy nie wiem co to za funkcja mysqli ale sproboj zasosowac cos takiego:
  1. $mysql_server = "localhost";
  2. // admin
  3. $mysql_admin = "root";
  4. // hasło
  5. $mysql_pass = "";
  6. // nazwa baza
  7. $mysql_db = "mloda_db";
  8. // nawiązujemy połączenie z serwerem MySQL
  9.  
  10. @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
  11.  
  12. OR die('Brak połączenia z serwerem MySQL.');
  13. // łączymy się z bazą danych
  14. @mysql_select_db($mysql_db)
  15. OR die('Błąd wyboru bazy danych.');
  16.  


a najlepiej zrob sobie funkcje w innym pliku i wywoluj ja jak bedzie Ci potrzebne polaczenie do baazy
Alkan0id
Oto ścieżka do screnshoot'a na którym starałem się pokazać w czym tkwi problem. Jakość nie jest powalająca.
Kod
http://img693.imageshack.us/i/beztytuught.jpg/


Oto atrybuty tego div'a w css
Kod
div#bialypixel{ position: absolute; background: url(bialypixel.png); left:100px; top: 200px; right: 100px; bottom:60px;
padding-left: 10px; padding-right: 10px; overflow-x:hidden;overflow-y: auto }


Próbowałem różnych opcji, nawet pisanie od nowa nie pomogło.

Jeśli chodzi o łączenie z bazą danych

Kod
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$uczelnia=$_POST['uczelnia'];
$e_mail=$_POST['e_mail'];

$login=trim($login);             //trim-usuniecie zbednych spacji
$haslo=trim($haslo);
$uczelnia=trim($uczelnia);
$e_mail=trim($e_mail);



if (!$login || !$haslo || !$e_mail )
{
    echo'Uwaga! Nalezy wypełnić wymagane pola!';
    exit;
}

$mysql_server = "localhost";
$mysql_admin = "root";
$mysql_pass = "";  /* Parse error: syntax error, unexpected T_STRING in C:\Program Files\WebServ\httpd\logowanie.php on line 22  - tutaj wywala błąd */


$mysql_db = "uzytkownicy";
@mysql_connect($mysql_server, $mysql_admin, $mysql_pass)
OR die('Brak połączenia z serwerem MySQL.');
@mysql_select_db($mysql_db)
OR die('Błąd wyboru bazy danych.');
$query="INSERT INTO uzytkownicy values (login='$login',haslo='$haslo',uczelnia='$uczelnia',e_mail='$e_mail')";
mysql_query($query);

Ogólnie chodzi o to aby wartości z pól służących do rejestracji zostały zapisane w bazie danych.
marian84
Dopatrzyłem się kilku błędów:

1. Jest tak:
  1. <td><input class=submit type=submit value="Zakoncz rejestracje"></input></td>

a powinno być
  1. <tr><td colspan="2"><input class=submit type=submit value="Zakoncz rejestracje"></input></td></tr>


2. Jest tak

a powinno byc ... chyba wiesz jak

3. Czeski błąd
  1. algin="justify"


Myślę, że problemem złego wyswietlania będą błędy tabeli - pkt. 1 i 2

co do połączenia z bazą...

w pierwszym kodzie

  1. @ $db = new mysqli ('localhost'.'root'.''.'uzytkownicy');


zamiast . daj ,
Alkan0id
Stopka już jest na swoim miejscu.

Natomiast jeśli chodzi o panel rejestracji i łączenie z bazą danych to ciągle mam problem.
Kod
<?php
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$haslo1=$_POST['haslo1'];
$uczelnia=$_POST['uczelnia'];
$e_mail=$_POST['e_mail'];

$login=trim($login);             //trim-usuniecie zbednych spacji
$haslo=trim($haslo);
$haslo1=trim($haslo1);
$uczelnia=trim($uczelnia);
$e_mail=trim($e_mail);



if (!$login || !$haslo || !$e_mail )
{
    echo'Uwaga! Nalezy wypełnić wymagane pola!';
    exit;
}
if ($haslo!=$haslo1)  // dodałem tutaj przymus ponownego wpisania hasła, aby nie było żadnych pomyłek przy wpisywaniu
{
    echo 'Wprowadzone hasla musza byc identyczne';
    exit;
}

if (strlen($haslo)<8) // dodałem warunek aby hasło miało minimum 8 znaków
{
    echo'Haslo musi zawierac conajmniej 8 znakow';
    exit;
}
$query="INSERT INTO uzytkownicy values (login='$login',haslo='$haslo',uczelnia='$uczelnia',e_mail='$e_mail')";
mysql_query($query);
?>

Korzystam z programu phpMyadmin i tam utworzyłem bazę danych o nazwie uzytkownicy z tabelą uzytkownicy, w której są pola : login,haslo,uczelnia,e_mail.
Może po prostu on nie potrafi odnaleźć tej bazy.
Po kliknięciu zakoncz rejestracje przechodzi do czystej strony(nic dziwnego skoro skrypt puki co dodaje do tabeli kolejne rekordy)o nazwie logowanie php. Jednak w tabeli uzytkownicy nic się nie zmienia.
Program phpMyAdmin posiada funkcje "utwórz kod php" i po jej kliknięciu wyskakuje.

Kod
$sql = 'SELECT * FROM `uzytkownicy` LIMIT 0, 30 ';

przy dodaniu
Kod
echo $sql;

wyskakuje SELECT * FROM `uzytkownicy` LIMIT 0, 30 '; (czyli traktuje to jako zwykly tekst)
Probowałem coś pokombinować ale w mojej książce jest to opisane w dziwny sposób, który na dodatek nie działa.
Blame
mysql_query
vonski
  1. <?php
  2. $login=$_POST['login'];
  3. $haslo=$_POST['haslo'];
  4. $haslo1=$_POST['haslo1'];
  5. $uczelnia=$_POST['uczelnia'];
  6. $e_mail=$_POST['e_mail'];
  7.  
  8. $login=trim($login); //trim-usuniecie zbednych spacji
  9. $haslo=trim($haslo);
  10. $haslo1=trim($haslo1);
  11. $uczelnia=trim($uczelnia);
  12. $e_mail=trim($e_mail);
  13.  
  14.  
  15.  
  16. if (!$login || !$haslo || !$e_mail )
  17. {
  18. echo'Uwaga! Nalezy wypełnić wymagane pola!';
  19. }
  20. if ($haslo!=$haslo1) // dodałem tutaj przymus ponownego wpisania hasła, aby nie było żadnych pomyłek przy wpisywaniu
  21. {
  22. echo 'Wprowadzone hasla musza byc identyczne';
  23. }
  24.  
  25. if (strlen($haslo)<8) // dodałem warunek aby hasło miało minimum 8 znaków
  26. {
  27. echo'Haslo musi zawierac conajmniej 8 znakow';
  28. }
  29. $query="INSERT INTO uzytkownicy values (login='$login',haslo='$haslo',uczelnia='$uczelnia',e_mail='$e_mail')";
  30. mysql_query($query);
  31. ?>


W tym kodzie robisz zapytanie do bazy (ostatnie dwie linijki), a gdzie jest połączenie z bazą?
Alkan0id
Cytat
W tym kodzie robisz zapytanie do bazy (ostatnie dwie linijki), a gdzie jest połączenie z bazą?

Błąd przy kopiowaniu. W kodzie jest pełno "wykomentowanych" linijek, ponieważ sprawdzałem już wiele opcji.

Jeśli chodzi o link to tej stronki to dzięki bo widzę, że jest tam wiele rzeczy objaśnionych jednak ciągle coś jest nie tak.
Oto obecny kod
Kod
<?php
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$haslo1=$_POST['haslo1'];
$uczelnia=$_POST['uczelnia'];
$e_mail=$_POST['e_mail'];

$login=trim($login);             //trim-usuniecie zbednych spacji
$haslo=trim($haslo);
$haslo1=trim($haslo1);
$uczelnia=trim($uczelnia);
$e_mail=trim($e_mail);

if (!$login || !$haslo || !$e_mail )
  {
     echo'Uwaga! Nalezy wypełnić wymagane pola!';
     exit;
  }
/*if ($haslo!=$haslo1)
  {
     echo 'Wprowadzone hasla musza byc identyczne';
     exit;
  }

if (strlen($haslo)<8)
  {
     echo'Haslo musi zawierac conajmniej 8 znakow';
     exit;
  }
*/

$link = mysql_connect('localhost', 'root','','uzytkownicy');
if (!$link)
  {
     die('Nie można się połaczyć: ' . mysql_error());
  }
echo 'Połączenie nawiązane</br>';


$a = mysql_query('select imie from uzytkownicy',$link)
    or die("Zapytanie niepoprawne");


?>

Daje nam w efekcie

Połączenie nawiązane
Zapytanie niepoprawne

Wykomentowywując //or die("Zapytanie niepoprawne");
i wpisując echo $a; uzyskuje efekt


Parse error: syntax error, unexpected T_ECHO in C:\Program Files\WebServ\httpd\logowanie.php on line 42
czyli błąd przy echo $a;

Próbowałem różne opcje z różnymi zapytaniami np select * from uzytkownicy.
Próbowałem również w różny sposób tworzyć zapytania ale nie przynosi to efektów.

Może efektem jest brak uprawnień jak podpowiada wskazówka na jednej z stron.
mysql_query() zwróci FALSE również wtedy, gdy nie będzie praw dostępu do tabel wyszczególnionych w zapytaniu.
vonski
Zamiast:

  1. $link = mysql_connect('localhost', 'root','','uzytkownicy');


Spróbuj:

  1. $link = mysql_connect('localhost', 'root', '');
  2. mysql_select_db('uzytkownicy');
Alkan0id
  1. $link = mysql_connect('localhost', 'root', '');
  2. mysql_select_db('uzytkownicy');

Nic nie dało

Próbowałem z przykładem żywcem wziętym z książki.
Kod
$zapytanie="insert into uzytkownicy values('".$login."'.'".$haslo."'.'".$uczelnia."'.'".$e_mail."')";
$wynik=$db->query($zapytanie);
if ($wynik)
    echo $db->affected_rows.' uzytkownik zapisany do bazy.';

Co daje w efekcie
Fatal error: Call to a member function query() on a non-object in C:\Program Files\WebServ\httpd\logowanie.php on line 50

Próbowałem z wszystkim i nic.




Problem rozwiązany wszystko działa poprawnie.
Gdyby ktoś miał podobny problem to wklejam kod.
Kod
<?php
$login=$_POST['login'];
$haslo=$_POST['haslo'];
$haslo1=$_POST['haslo1'];
$uczelnia=$_POST['uczelnia'];
$e_mail=$_POST['e_mail'];

$login=trim($login);             //trim-usuniecie zbednych spacji
$haslo=trim($haslo);
$haslo1=trim($haslo1);
$uczelnia=trim($uczelnia);
$e_mail=trim($e_mail);

if (!$login || !$haslo || !$e_mail )
  {
     echo'Uwaga! Nalezy wypełnić wymagane pola!';
     exit;
  }
if ($haslo!=$haslo1)
  {
     echo 'Wprowadzone hasla musza byc identyczne';
     exit;
  }

if (strlen($haslo)<8)
  {
     echo'Haslo musi zawierac conajmniej 8 znakow';
     exit;
  }

if (!get_magic_quotes_gpc())
{
$login=addslashes($login);
$haslo=addslashes($haslo);
$uczelni=addslashes($uczelni);
$e_mail=addslashes($e_mail);
}
  
      $link = mysql_connect('localhost', 'root', '');
  
      mysql_select_db('uzytkownicy');

if (!$link)
  {
     die('Nie można się połaczyć: ' . mysql_error());
  }
echo 'Połączenie nawiązane</br>';

$result = mysql_query("insert into uzytkownicy values ('$login','$haslo','$uczelnia','$e_mail')")
   or die("Zapytanie niepoprawne");


?>
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.