connettersi correttamente al db mysql

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
In un tutorial online ho visto questo codice per effettuare correttamente una connessione a mysql tramite una classe (qui nn inserito ancora come file esterno e non ho usato il soppressore degli errori @ davanti a mysql_connect)

Codice:
<?php
class MysqlClass
{
  // parametri per la connessione al database
  private $nomehost = "localhost";     
  private $nomeuser = "username";          
  private $password = "password"; 
         
  // controllo sulle connessioni attive
  private $attiva = false;

  // funzione per la connessione a MySQL
  public function connetti()
  {
   if(!$this->attiva)
   {
    $connessione = mysql_connect($this->nomehost,$this->nomeuser,$this->password);
       }else{
        return true;
       }
    }
}       
?>

La funzione utilizza delle variabili private per fare in modo che queste possano essere disponibili solo all'interno della classe; la variabile $attiva è il controllore della connessione e fin qui tutto bene ma non capisco bene il metodo connetti(); in quanto mi controlla se non esiste una connessione e quindi ne crea una
(ovviamente con $var->connetti() );

ma per quale motivo

Codice:
else{return true;}

nn capisco il senso di farmi ritornare il valore true :dipser:
 

dream88

Utente Attivo
8 Apr 2009
62
0
0
A quanto ne so... e spero di non sbagliare... Non ti crea una nuova connessione ma permette di connetterti al database con quel dato nome, quella data password che hai specificato prima. E se la connessione è avvenuta giustamente ti restituisce true per avvisarti che ha funzionato...
 

dream88

Utente Attivo
8 Apr 2009
62
0
0
Scusa ho sbagliato.. ti restituisce true se la connessione è già attiva... In caso non lo fosse ti collega!
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Quella classe mi sembra familiare :)
Confermo quello che ha detto Dream dato che se non mi sbaglio dovrei averla creata io :)
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
Allora perdonate la mia insistenza e testardagine nel capire...(ma sono curioso):

Il metodo viene richiamato quando creo l'istanza ad esempio:

$x=new MysqlClass;
$x->connetti()

quando il metodo si attiva, questo provoca la connessione se la connessione non va restituisce true e quindi tenta di ripetere il metodo?

In sostanza la domanda è:(rullo di tamburi....)

: se non ci fosse else{return true;} cosa succede o meglio cosa non succede?

p.s. per eliox: sei Claudio cioè quello che ha fatto l'intera guida
"Guida PHP e MySql pratica" ? :tifoso:
 

dream88

Utente Attivo
8 Apr 2009
62
0
0
quando il metodo si attiva, questo provoca la connessione se la connessione non va restituisce true e quindi tenta di ripetere il metodo?
No ti restituisce true se la connessione è già attiva...

se non ci fosse else{return true;} cosa succede o meglio cosa non succede?
Se la connessione è già attiva e tu levi l'else non sai se era già attiva oppure no...
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
p.s. per eliox: sei Claudio cioè quello che ha fatto l'intera guida
"Guida PHP e MySql pratica" ? :tifoso:
Ecco perché quella classe mi sembrava familiare:)

Prova a vederla in questo modo:
PHP:
// funzione per la connessione a MySQL
  public function connetti()
  {
   // se la connessione non è attiva..
   if(!$this->attiva)
   {
   // stabilisci la connessione
    $connessione = mysql_connect($this->nomehost,$this->nomeuser,$this->password);
       }else{
    // diversamente restituisci la connessione come attiva 
        return true;
       }
    }
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Quindi il nostro caro Eliox sta facendo il doppio gioco con quelli di HTML.it, eh... bene, bene, me lo ricorderò quando mi servirà una raccomandazione per diventare super-moderatore qui :D

A parte gli scherzi, complimenti per la guida, è molto ben strutturata.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
un piccolo dubbio
1. se la connessione è attiva la riga
$connessione = mysql_connect($this->nomehost,$.....
non viene eseguite e ritorna true
e sin qui ok
2. se la connessione non è attiva la riga
$connessione = mysql_connect($this->nomehost,$.....
viene eseguita
ma se per qualche accidente la connessione non avviene?
se per es. sbagliando scrivo
private $password = "pssword";
al posto di
private $password = "password"; ?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Io solitamente uso qualcosa del genere, anche se un po' più raffinato:
PHP:
<?php
class database
{
	private $conn;
	
	public function connect($dbhost, $dbuser, $dbpass, $dbname, $dbport = 3306)
	{
		$this->conn = @mysql_connect("{$dbhost}:{$dbport}", $dbuser, $dbpass);
		
		if(!$this->conn)
			die('Errore durante la connessione: <b>'. mysql_error() .'</b>');
		
		return true;
	}
	
	public function query($sql)
	{
		$query = @mysql_query($sql, $this->conn);
		
		if(!$query)
			die('Errore nella query SQL <b>'. $sql .'</b>: <b>'. mysql_error() .'</b>');
		
		return $query;
	}
	
	public function rows($query = false)
	{
		if(!$query)
			$rows = @mysql_affected_rows($this->conn);
		else
			$rows = @mysql_num_rows($query);
		
		return $rows;
	}
	
	function assoc($query)
	{
		$assoc = @mysql_fetch_array($query);
		return $assoc;
	}
	
	function close()
	{
		$close = @mysql_close($this->conn);
		
		if(!$close)
			die('Errore durante la disconnessione: <b>'. mysql_error() .'</b>');
		
		return true;
	}
}
?>
 

emanuelevt

Utente Attivo
24 Giu 2009
298
0
0
anzi... ma se la connessione non avviene per qualche motivo perchè dovrebbe risultare attiva?
 
Ultima modifica:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
ciao
ma se la connessione non avviene per qualche motivo perchè dovrebbe risultare attiva?
infatti era questo il mio dubbio
se non è attiva viene eseguita la riga tra
if(!$this->attiva)
{

ed }else{
ed il programma prosegue sia che la connessione sia avvenuta sia che non sia avvenuta
se non avvenuta e trovo un, es.,
$query=mysql_query("SELECT..........
la riga mi da errore
per questo l'errore di connessione sarebbe da intercettare prima
 

MarcoGrazia

Utente Attivo
15 Dic 2009
793
16
18
59
Udine
www.stilisticamente.com
ciao


1. eliox è cresciuto di 5 cm
2. secondo me questa si chiama "leccata":D
C'hai preso :D non ha più risposto dalla slecchinata :D

Emanuele ti do un consiglio, smolla mysql_ e prova con le improved (mysqli_) o meglio ancora iniziati a studiare l'astrazione dei PDO.
Motivi essenziali: le improved sono sostanzialmente più veloci delle vecchie funzioni di mysql_ e soprattutto possono essere usate efficacemente come metodi di classi.
Inoltre il loro supporto è in continua espansione presso PHP, mentre per le vecchie... ciccia soprattutto da parte di MySQL che già dalla versione 5 (parlo del server di database non del PHP) non le supporta a pieno.
Dato che sui server oramai la versione 4 del database non si trova più e se la trovi scappa a gambe levate non ti consiglio di continuare ad usare questa estensione.
Prova a passare alle improved, qui trovi un semplice tutorial Tutorial scritto da una scuola di Rieti.
Se poi il PHP è o sarà, come spero, il tuo lavoro passa decisamente a PDO che implementa un metodo di astrazione in grado di passare immediatamente da MySQL a qualsiasi altro sistema di database con pochissimi passaggi e senza dover modificare il vecchio codice, se non nelle query.
Infine è molto più sicuro nelle transazioni di mysql_

Esempio su PDO
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Ma perché dovete sempre pensare male appena faccio un complimento? Era solamente un'osservazione. Che poi Eliox mi possa raccomandare sono solamente dettagli! Ehm... :D
Comunque è davvero ben strutturata, però quella classe non mi piace per niente, lo dico così siete contenti :D
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Adesso vi banno tutti così la smettete di parlare alle mie spalle :D
Per chi fosse interessato ad un approfondimento relativamente ad una valida alternativa alle funzioni mysql based è stata pubblicata di recente su questo sito una mini guida su mysqli
 
Discussioni simili
Autore Titolo Forum Risposte Data
spider81man Connettersi ad un DB ed inserire dati con Javascript Javascript 3
E IP Camera p2p connettersi da IPad fuori casa IP Cam e Videosorveglianza 10
DaniVersa Connettersi Telecamere da Smartphone IP Cam e Videosorveglianza 7
MarcoGrazia [PHP][PDO] Come connettersi al database Snippet PHP 0
asevenx Impossibile connettersi al database - mysql system error: 111 MySQL 3
A Come utilizzare cURL per connettersi a uno streaming? PHP 0
matrobriva Impossibile connettersi al server localhost. PHP 9
max1850 Connettersi a 2 db contemporaneamente Classic ASP 12
max1850 Connettersi ad un db SQL Server esterno Classic ASP 5
B Realizzare un Feed RSS (2a parte): connettersi ad un file RSS remoto Classic ASP 4
max1850 Connettersi ad un db esterno con user e passw Classic ASP 4
O [vb6 e/o c++] connettersi a db access onlined a locale C/C++ 0
M Questa pagina non carica correttamente Google Maps: aiuto!! HTML e CSS 1
felino [Windows 8.1] Windows Update non funziona correttamente Windows e Software 3
P [PHP] Input Type="date" non va correttamente con Apple PHP 2
M La bozza di un sito con alcune funzioni javascript non si apre correttamente su smartphone Javascript 1
S [PHP] Simbolo di euro e sterlina non correttamente visualizzato PHP 3
C Sottomenù Bootstrap che non funziona correttamente HTML e CSS 8
A Javascript non funziona correttamente su smartphone Javascript 2
Shyson Database non estrae correttamente caratteri accettati PHP 17
S Condividere correttamente link su Facebook (immagine anteprima errata) HTML e CSS 1
J Icone non allineate correttamente nella barra di navigazione HTML e CSS 2
E [risolto] win 8.1 + IE11 le sessioni PHP non fuonzionano correttamente PHP 7
M Importare correttamente in tabella file CSv con doppi apici MySQL 4
M Il menu HTML funziona correttamente se richiamato da un file php non funziona più PHP 3
I Perchè devo cliccare 2 volte su un link per caricare correttamente il css di una galleria? WordPress 1
F Problemi con il mio primo sito, galleria fai da te non visualizzata correttamente HTML e CSS 1
O Sito creato su notepad++ non viene letto correttamente da dreamweaver Webdesign e Grafica 0
O Sito creato con notepad++ non viene letto correttamente da dreamweaver HTML e CSS 11
O Sito creato con notepad++ non viene letto correttamente da dreamweaver Discussioni Varie 0
N AutoCompleteExtender non funziona correttamente Ajax 1
F Come mai alcuni browser non visualizzano correttamente il mio file swf? Flash 0
emanuelevt visualizzare correttamente la pagina web Javascript 0
F Aiuto! Codice Javascript non funzionante correttamente Javascript 0
C una pagina del mio sito non si carica correttamente HTML e CSS 2
U Scrivere correttamente su file Txt PHP 8
P non mi escono correttamente i dati da un campo di una tabella PHP 0
V Come trasformare correttamente una tabella HTML HTML e CSS 6
F Audio non funzionante perifarica funziona correttamente. Audigy 2 Hardware 0
K Pop-up che nn si aprono correttamente Javascript 6
D Caricare correttamente le winsock Programmazione 0
E posizionare correttamente una stringa HTML e CSS 0
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
L Mysql: Nascondere le pagine dopo una ricerca PHP 1
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
S problema con recupero dati tabella mysql PHP 2
E Progressbar estrazione dati da tabella mySQL Ajax 9
Z MySql injection PHP PHP 1
D controllare valore in tabella mysql PHP 0

Discussioni simili