Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/09/2011, 12h04   #1
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Par défaut Mysql Objet inexistant ?

Bonjour,
j'essaie d'avoir un bandeau et un style différent selon la connexion de l'utilisateur, seulement j'ai un message d'erreur :
Citation:
Fatal error: Call to a member function isMobile() on a non-object in configuration.php on line 7...
Merci d'avance.

index.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php session_start();
$nompage = "index.php";
require("configuration.php");
$sql = detection_mobile();
$sql = bandeau_detection();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<title><?php echo $nom_site ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $nom_style ?>" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="mainContent">
<?php require("recherche_pour_news.php"); ?> <!-- insère la recherche des news de la semaine -->
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
configuration.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php
....
 
// pour detecter les smartphones et utiliser le bon style CSS...
include("Mobile_Detect.php");
$detect = new Mobile_Detect();
function detection_mobile()
{
	if ($detect->isMobile())
	{
		echo '<br/>';
		echo 'vous etes sur le site mobile : ';
		echo '<br/>';
		echo $_SERVER['HTTP_USER_AGENT']; 
		echo '<br/>';
		$nom_style = "style_mobile.css";
		echo 'nom style :'.$nom_style;
		echo '<br/>';
		$bandeau_non_connecte = "bandeau_mobile.php";
		$bandeau_connecte = "bandeau_membres_mobile.php";
	}
	else
	{
		echo '<br/>';
		echo 'vous etes sur le site classique : ';
		echo '<br/>';
		echo $_SERVER['HTTP_USER_AGENT'];
		echo '<br/>';
		$nom_style = "style.css"; 
		echo 'nom style :'.$nom_style; 
		echo '<br/>';
		$bandeau_non_connecte = "bandeau.php";
		$bandeau_connecte = "bandeau_membres.php";
	}
}
 
function bandeau_detection() 	// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
	{
		if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')	// bandeau classique si pas connecté
		{ $bandeau = $bandeau_non_connecte;	}
		else 	// bandeau membre si connecté
		{ $bandeau = $bandeau_connecte;	} 
	}
 
 
function connect_sql() 		//Connection à MySQL
{
	global $sql_serveur, $sql_login, $sql_pass, $sql_bdd;
	//connexion au serveur
	$linkid = @mysql_connect($sql_serveur,$sql_login,$sql_pass) or die ("Erreur lors de la connection au serveur MySQL !");
	//selection de la BDD
	@mysql_select_db($sql_bdd,$linkid) or die("Impossible de selectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error());
	return $linkid;
}
?>
Mobile_Detect.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?php
/**
 * Mobile Detect
 *
 * @license    http://www.opensource.org/licenses/mit-license.php The MIT License
 * @version    SVN: $Id: Mobile_Detect.php 4 2011-05-26 08:04:20Z vic.stanciu@gmail.com $
 */
class Mobile_Detect 
{	protected $accept;
    protected $userAgent;
    protected $isMobile     = false;
    protected $isAndroid    = null;
    protected $isBlackberry = null;
    protected $isOpera      = null;
    protected $isPalm       = null;
    protected $isWindows    = null;
    protected $isGeneric    = null;
    protected $devices = array
	(
        "android"       => "android",
			/* "firefox"       => "firefox",  */  ///* pour TEST SUR PC */// 
        "blackberry"    => "blackberry",
        "iphone"        => "(iphone|ipod)",
        "opera"         => "opera mini",
        "palm"          => "(avantgo|blazer|elaine|hiptop|palm|plucker|xiino)",
        "windows"       => "windows ce; (iemobile|ppc|smartphone)",
        "generic"       => "(kindle|mobile|mmp|midp|o2|pda|pocket|psp|symbian|smartphone|treo|up.browser|up.link|vodafone|wap)"
    );
 
	public function __construct() 
	{
		$this->userAgent = $_SERVER['HTTP_USER_AGENT'];
        $this->accept    = $_SERVER['HTTP_ACCEPT'];
        if (isset($_SERVER['HTTP_X_WAP_PROFILE'])|| isset($_SERVER['HTTP_PROFILE'])) 
			{
				$this->isMobile = true;
			} 
		elseif (strpos($this->accept,'text/vnd.wap.wml') > 0 || strpos($this->accept,'application/vnd.wap.xhtml+xml') > 0) 
			{
				$this->isMobile = true;
			}
			else 
			{
				foreach ($this->devices as $device => $regexp) 
				{
					if ($this->isDevice($device)) 
					{
						$this->isMobile = true;
					}
				}
			}
	}
 
	/**
	* Overloads isAndroid() | isBlackberry() | isOpera() | isPalm() | isWindows() | isGeneric() through isDevice()
     *
     * @param string $name
     * @param array $arguments
     * @return bool
     */
    public function __call($name, $arguments) 
	{
        $device = substr($name, 2);
        if ($name == "is" . ucfirst($device)) 
		{
            return $this->isDevice($device);
        }
		else
		{
            trigger_error("Method $name not defined", E_USER_ERROR);
        }
    }
 
	/**
	* Returns true if any type of mobile device detected, including special ones
     * @return bool
     */
    public function isMobile() 
	{
        return $this->isMobile;
    }
 
    protected function isDevice($device) 
	{
        $var    = "is" . ucfirst($device);
        $return = $this->$var === null ? (bool) preg_match("/" . $this->devices[$device] . "/i", $this->userAgent) : $this->$var;
		if ($device != 'generic' && $return == true) 
			{
				$this->isGeneric = false;
			}
        return $return;
    }
}
?>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 12h08   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 126
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 126
Points : 8 484
Points : 8 484
t'es dans une fonction le scope est différent, rajoute un global
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 13h40   #3
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Désolé mais je ne comprends pas :
scope ? rajoute un global ?

Comment, où ?
merci.
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 13h42   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 126
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 126
Points : 8 484
Points : 8 484
http://php.net/manual/fr/language.variables.scope.php

c'est l'une des bases de PHP, que je te conseil d'apprendre avant de te lancer dans un projet ...
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2011, 14h39   #5
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Merci stealth35 !

Effectivement, je n'avais pas déclaré les variables...

Code corrigé qui fonctionne bien :

index.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php session_start();
$nompage = "index.php";
require("configuration.php");
$sql = detection_mobile();
$sql = bandeau_detection();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />	
<title><?php echo $nom_site ?></title>
<link rel="stylesheet" type="text/css" href="<?php echo $nom_style ?>" />
</head>
<body>
<?php include($bandeau); ?> <!-- insère le bandeau principal en haut en fonction de la connexion -->
<div id="mainContent">
<?php require("recherche_pour_news.php"); ?> <!-- insère la recherche des news de la semaine -->
</div>
<?php include('bas_de_page.php'); ?> <!-- insère le bas de page  -->
</body>
</html>
configuration.php :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
....
// pour detecter les smartphones et utiliser le bon style CSS...
include("Mobile_Detect.php");
function detection_mobile()
{
	global $bandeau_non_connecte, $bandeau_connecte, $nom_style;
	$detect = new Mobile_Detect();
	if ($detect->isMobile())
	{
		echo '<br/>';
		echo 'vous etes sur le site mobile : ';
		echo '<br/>';
		echo $_SERVER['HTTP_USER_AGENT']; 
		echo '<br/>';
		$nom_style = "style_mobile.css";
		echo 'nom style :'.$nom_style;
		echo '<br/>';
		return
		$bandeau_non_connecte = "bandeau_mobile.php";
		$bandeau_connecte = "bandeau_membres_mobile.php";
		return $bandeau_non_connecte;
		return $bandeau_connecte;
		echo '<br/>';
		echo '$bandeau_non_connecte : '.$bandeau_non_connecte;
		echo '<br/>';
		echo '$bandeau_connecte : '.$bandeau_connecte;
	}
	else
	{
		echo '<br/>';
		echo 'vous etes sur le site classique : ';
		echo '<br/>';
		echo $_SERVER['HTTP_USER_AGENT'];
		echo '<br/>';
		$nom_style = "style.css"; 
		echo 'nom style :'.$nom_style; 
		echo '<br/>';
		$bandeau_non_connecte = "bandeau.php";
		$bandeau_connecte = "bandeau_membres.php";
		return $bandeau_non_connecte;
		return $bandeau_connecte;
		echo '<br/>';
		echo '$bandeau_non_connecte : '.$bandeau_non_connecte;
		echo '<br/>';
		echo '$bandeau_connecte : '.$bandeau_connecte;
	}
}	
 
function bandeau_detection() 	// si l'utilisateur est connecté, c'est le bandeau membre sinon c'est le bandeau classique...
	{
		global $bandeau, $bandeau_non_connecte, $bandeau_connecte;
		if (!isset($_SESSION['pseudo']) || $_SESSION['pseudo']=='')	// bandeau classique si pas connecté
		{ $bandeau = $bandeau_non_connecte;
			return $bandeau; }
		else 	// bandeau membre si connecté
		{ $bandeau = $bandeau_connecte;	
			return $bandeau; } 
	}
 
 
function connect_sql() 		//Connection à MySQL
{
	global $sql_serveur, $sql_login, $sql_pass, $sql_bdd;
	//connexion au serveur
	$linkid = @mysql_connect($sql_serveur,$sql_login,$sql_pass) or die ("Erreur lors de la connection au serveur MySQL !");
	//selection de la BDD
	@mysql_select_db($sql_bdd,$linkid) or die("Impossible de selectionner la base de données\n<br>\nVoici l'erreur renvoyée par le serveur MySQL :\n<br>\n".mysql_error());
	return $linkid;
}
?>
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h10.


 
 
 
 
Partenaires

Hébergement Web