Skocz do zawartości
Zaloguj się, aby obserwować  
jensej

Debugowanie zapytania mysql

Polecane posty

require 'core/database/connect.php';
class login {

public $login;
public $pass;
   public function loguj($login, $pass){
	$stmt = $db_conn->prepare('SELECT user_id FROM users WHERE login = :login AND password = :pass');
	$stmt->bindValue(':login', $login);
	$stmt->bindValue(':pass', md5($pass));
	$stmt->execute();
	$user = $stmt->fetch();
	if($user){
		return $user;
	}
	return false;
	}
	$login = new login();
		$login->loguj($login, $pass); 
        $login->output_success('Zostałeś zalogowany'

connect.php

<?php
try {
	$db_conn = new PDO('mysql:dbname=minecra1_forum;host=localhost;', 'minecra1_admin', '33YvysAD');
} catch(PDOException $e){
	echo "Nie można nawiązać połączenia z bazą danych";
}

?>

 

 

Fatal error: Call to a member function prepare() on a non-object in /home/minecra1/domains/prostacy.pl/public_html/class/user.class.php on line 14

 

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

$db_conn jest nieznana w metodzie. Przekaż ją do klasy jako np. parametr konstruktora.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

$db_conn jest nieznana w metodzie. Przekaż ją do klasy jako np. parametr konstruktora.

 

w sumie coś kombinuję, ale mógłbym poprosić o jakiś przykład?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
class login {

  private $db_conn
 
  function __construct($db_conn) {
    $this->db_conn = $db_conn;
  }
   
  public function loguj($login, $pass){
    $stmt = $this->db_conn->prepare('SELECT user_id FROM users WHERE login = :login AND password = :pass');
    
    }
}
$login = new login($db_conn);

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

kurde, znalazłem inne rozwiązanie ale coś nadal nie działa:

plik: user.class.php

include 'core/database/connect.php';
  /// Przykładowa klasa.
  class User
  {
    public function login($username, $password) 
    {
      // pomijam tutaj sprawdzanie nazwy użytkownika oraz hasła, czy są
      // one prawidłowe.

		$db = DatabaseManager::getInstance();

		$userId = $db->handle->prepare("SELECT user_id FROM users WHERE login=:login AND password = :pass"); 
		$userId->execute(array(':login' => $login, ':pass' => $password));  
		$user = $userId->fetchAll(PDO::FETCH_ASSOC);
    if($user){
		return $user;
	}
	return false;
	}
	
	
  }

login.php

else {
        // Użytkownik istnieje
    $db = DatabaseManager::getInstance();
  $db->connect('mysql:dbname=minecra1_forum;host=localhost;', 'minecra1_admin', 'haslo123');

  if (!$db->isConnected()) {
    exit;
  }
		$user = new User;
		$user->login($login, $pass);
    }

connect.php

<?php
 
  class DatabaseManager 
  {
    
    public static function getInstance()
    {
      static $instance = null;
      if (is_null($instance)) {
        $instance = new DatabaseManager;
      }

      return $instance;
    }

  
    private function __constructor()
    {
    }

  
    public function connect($host, $username, $password) 
    {
      
      try {
        $this->handle = new PDO($host, $username, $password);
        $this->isConnected = true;
      } catch (PDOException $exception) {
        $this->isConnected = false;
      }
    }


    private $isConnected = false;

  

    public function isConnected()
    {
      return $this->isConnected;
    }

   
    public $handle = null;

  }


  /// Przykładowa klasa.




?>

Fatal error: Cannot redeclare class DatabaseManager in /home/minecra1/domains/prostacy.pl/public_html/core/database/connect.php on line 8

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A nie robisz include dwa razy pliku connect.php? Zmień sobie include na include_once.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
preg_match( '#<p class=text property="v:summary"></span>#',$wynik,$opis);
if($opis = ''){
preg_match( '#<p class="text longText" property="v:summary"></span>#',$wynik, $opis);
}

nie wiem czy dobrze rozumuje. Otóż potrzebuję wyciągnąć opis znajdujący się międzędzy <p class=text property="v:summary">

a </span>. Tyle, że gdy wywołuję $opis[0], nie ma żadnego efektu. ewentulanie jeśli nie ma wyniku to przechodzi to drugiego wyrażenia.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
preg_match( '#<p class=text property="v:summary">(.+)</span>#iU',$wynik,$opis);
print_r($opis);

Zobacz co Ci wyświetli.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
preg_match( '#<p class=text property="v:summary">(.+)</span>#iU',$wynik,$opis);
print_r($opis);

Zobacz co Ci wyświetli.

 

o kurde. działa :) jeśli mogę jeszcze, to mam problem z ogarnięciem: gdy pojawiają się dwa słowa. np

Jem obiad. To zamienić to np na Jem+Obiad, badż jem.obiad

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

niestety dość długo nie mogę sobie poradzić z mod_rewrite.

 

reguły wyglądają tak:

RewriteEngine on


RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L] //ten jest od ladowania podstron
RewriteRule ^([^/.]+)/([^/.]+)?$ index.php?page=$1&strona=$2 [L] ten on stronnicowania
 

teraz próbuję dodać <a href="/ogladaj/<?php echo $row['0']; ?>" >wiecej</a> </h7>

ma ładować podstronę oglądaj.php z odpowiednią wartością przypisaną do geta. I w sumie nie wiem za bardzo jak połączyć to z mod_rewrite

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
RewriteEngine on

RewriteRule ^([^/.]+)/([^/.]+)?$ index.php?page=$1&strona=$2 [L]
RewriteRule ^([^/.]+)/?$ index.php?page=$1 [L]

Musisz dostosować ten skrypt, by korzystał z regułki: RewriteRule ^([^/.]+)/([^/.]+)?$ index.php?page=$1&strona=$2 [L] a jak nie, to dodać coś w stylu: RewriteRule ^ogladaj/([^/.]+)?$ index.php???? [L]

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

RewriteRule ^ogladaj/([^/.]+)?$ index.php?film=$1 [L]

 

adres: http://domena.pl/ogladaj/10

 

i get nadal nic nie zwraca.

 

 

a i nie wiem dlaczego np. jak chce przechodzić między zakładkami np:

http://aa.pl/ogladaj na http://aa.pl/login to jest http://aa.pl/ogladaj/login. i wtedy błąd.

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

print_r($_GET); i zobacz jakie w ogóle wyświetla

w sumie działą gdy biorę get['strona'] to ładnie działa. Dzięki za pomoc z tym.

A jeszcze nie wiem dlaczego gdy jestem na

http://aa.pl/ogladaj/9 i chce przejść na gówna to jest http://aa.pl/ogladaj/glowna zamiast http://aaa.pl/glowna

nie powinno zamieniać z /ogladaj/glowna na /glowna?

Edytowano przez jensej (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Boisz się adresów bezwzględnych? To nic strasznego. Dajesz zmienną z adresem swojej strony i do niej dopisujesz URL.

 

Mozesz pobawić się routingiem, ale to wyższa szkoła

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się

Zaloguj się, aby obserwować  

×