[phpmysqli] problema classe database
Inviato: domenica 27 aprile 2014, 21:45
salve, sto facendo o meglio sto provando ad a fare un classe che mi crociasse tutto il lavoro dell'inserimento e gestione dei dati in sql.
ora vi posto la classe:
ho un problema qui:
e nel codice login dall'altra parte del codice ..
non riesco ad fare contare se esiste o no il dato.
ecco il pezzo di codice "essendo che non lo scritto io".
in poche parole sono bloccato qui:
al recordCount, che non riesco a capire come è la richiamata al metodo della classe.
vi ringrazio molto..
buona serata.
ora vi posto la classe:
Codice: Seleziona tutto
<?php
class Database {
private $db;
private $result;
//connessione al DBMS
function __construct($db_host, $db_utente, $db_password, $db_nomedb){
/* activate reporting */
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT;
$this->db = new mysqli($db_host, $db_utente, $db_password, $db_nomedb);
}
function __destruct()
{
$this->close();
}
//query sulla tabella
public function Query($sql){
try {
$this->result = $this->db->query($sql);
}
catch (mysqli_sql_exception $e) {
echo $e->__toString();
}
}
//conteggio dei records
public function RecordCount($sql)
{
$sql = $this->result->num_rows;
return $sql;
}
// estrazione dati.
public function Fetch($mode)
{
if($mode=='assoc')
{
$row = $this->result->fetch_assoc();
}
else if($mode=='array')
{
$row = $this->result->fetch_array();
}
return $row;
}
//chiusura della connessione
function close()
{
unset($this->db);
}
public function escape($data){
return $this->db->real_escape_string($data);
}
}
?>Codice: Seleziona tutto
//conteggio dei records
public function RecordCount($sql)
{
$sql = $this->result->num_rows;
return $sql;
}non riesco ad fare contare se esiste o no il dato.
ecco il pezzo di codice "essendo che non lo scritto io".
Codice: Seleziona tutto
<?php
session_start();
include 'inc/config.php';
include 'inc/funzioni.php';
?>
<head>
<link rel="stylesheet" href="style.css" type="text/css"/>
</head>
<?php
if(!($_POST['username'] and $_POST['password'])){//se non sono stati postati username (nome del PG) e password
?>
<html>
<head>
<title><?php echo $sitename; ?>::login</title>
</head>
<body>
<form action="login.php" method="post">
Nome PG <input type="text" name="username" class="nero"/><br/>
Password <input type="password" name="password" class="nero"/><br/>
<input type="submit" value="login" class="nero"><br/>
</form>
</body>
</html>
<?php
}
else{
$datiuser=$db->query("SELECT * FROM users WHERE nome='".$_POST['username']."' AND password='".md5($_POST['password'])."';");//select dell'user con la pass settata a md5($_POST['password'], se c'è solo una riga, cioè se l'utente esiste, fa il login e header location a main.php, alla stanza 1, cioè quella principale
if($datiusser = $db->RecordCount() == 1)
{
$dati = $db->Fetch('array');
$_SESSION['username']=$dati['nome'];//registra in sessione l'username separato dagli altri dati
$_SESSION['datiuser']=$dati;//registra in sessione i dati presi dal db, per agiornarli basta fare upd_session()
$_SESSION['stanza']=1;//setta subito la stanza a 1, quella principale
$_SESSION['password']=$_POST['password'];
$invisibile=0;//setta invisibile subito a 0, presumendo che l'utente sia normale, potrà poi essere cambiato all'interno del gioco
if($dati['admin']==1) $_SESSION['admin']=1;//se è admin setta $_SESSION['admin']
if($dati['master']==1) $_SESSION['master']=1;//stesso per il master
$ins=$db->query("INSERT INTO sessioni SET session_id='".session_id()."',username='".$dati['nome']."',stanza=1,last_time='".(time()+60*10)."',invisibile='".$invisibile."';");//inserisce i dati nella tabella sessioni
if(!$ins){//se non fa la query da un errore LOGIN_QUERY e toglie i dati della sessione
errore('LOGIN_QUERY','Impossibile aggiungersi alla lista utenti connessi, riprovare dopo o mandare un e-mail al <a href="'.$admemail.'">webmaster</a>');
$_SESSION=array();
}else{//altrimenti manda a main, nella stanza 1
?>
<script type="text/javascript" language="JavaScript">
function autoreload()
{
var timeID = setTimeout("location.href= 'main.php?stanza=1'", 4000)
}
</script>
</head>
<body onLoad="autoreload()">
login effettuato, aspetta un attimo...
</body>
<?php
}
}else{//se non ci sono righe trovate stampa un errore
echo 'Username non trovato o password sbagliata, <a href="login.php">rifai</a>';
}
}
?>
Codice: Seleziona tutto
$datiuser=$db->query("SELECT * FROM users WHERE nome='".$_POST['username']."' AND password='".md5($_POST['password'])."';");//select dell'user con la pass settata a md5($_POST['password'], se c'è solo una riga, cioè se l'utente esiste, fa il login e header location a main.php, alla stanza 1, cioè quella principale
if($datiusser = $db->RecordCount() == 1)
{vi ringrazio molto..
buona serata.