Page 1 sur 1

Ma table ne veut pas se créer...

Posté : 30 déc. 2014, 18:06
par Incognito
Bonjour,

Voici mon code :
public function connectDataBase(){
	$mysqli=new mysqli('localhost','root','','weather');
	$mysqli->set_charset("utf8");
	
	if($mysqli->connect_errno){
	printf("Echec de la connexion:%s/n",$mysqli->connect_error);
	exit();
	}
	}
	
	public function createTable($city){
	
	$this->connectDataBase();
	
		$sqli=CREATE TABLE IF NOT EXISTS $city
		(
		id INT(12) PRIMARY KEY NOT NULL AUTO_INCREMENT,
		period VARCHAR(15),
		temp_mini INT (11),
		temp_maxi INT(11),
		comment TEXT(140)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
		
	}
Tout fonctionne jusqu'a $this->connectDataBase();... mais en suite ma table ne veut pas se créer...

Si quelqu'un pourrait m'aider...

D'avance merci...

Re: Ma table ne veut pas se créer...

Posté : 30 déc. 2014, 18:45
par tof73
aucune fonction n'est appelée pour exécuter la requête sql.
la connexion est ouverte dans la fonction connectDataBase, pas sur qu'elle soit disponible dans createTable

Re: Ma table ne veut pas se créer...

Posté : 30 déc. 2014, 18:49
par Incognito
La fonction est appelé via un process...

Re: Ma table ne veut pas se créer...

Posté : 30 déc. 2014, 19:27
par sirakawa
je fais une fonction cconnectDataBase() qui retourne $mysqli au prog principal
Quant à ca, ca ne fait pas d'erreur de syntaxe?
$
sqli=CREATE TABLE IF NOT EXISTS $city
                (
                id INT(12) PRIMARY KEY NOT NULL AUTO_INCREMENT,
                period VARCHAR(15),
                temp_mini INT (11),
                temp_maxi INT(11),
                comment TEXT(140)
                ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
etc'est vrai que si on n'execute pas les requetes, on ne risque pas de créer la table...

Re: Ma table ne veut pas se créer...

Posté : 30 déc. 2014, 19:28
par @rthur
Bonjour,

il manque clairement des guillemets pour ta variable $sqli
Et dans le code que tu nous as fourni, tof73 a raison de dire qu'à aucun moment tu n'a l'air d'utiliser cette variable pour demander l'exécution de cette requête SQL

##edit : grillé par sirakawa ;-)

Re: Ma table ne veut pas se créer...

Posté : 30 déc. 2014, 19:57
par Incognito
Oui, bien vu pour les guillemets...mais je ne vois pas comment exécuter la requête... (Sûrement un truc tout bête à faire...)...

Merci pour vos réponses.

Re: Ma table ne veut pas se créer...

Posté : 30 déc. 2014, 22:15
par sirakawa

Re: Ma table ne veut pas se créer...

Posté : 31 déc. 2014, 15:28
par Incognito
Bonjour,

Merci pour votre aide... cela marche correctement(c'était vraiment une erreur de ma part a la noix...)...mais j'aimerais optimiser le code :
public function connectDataBase(){
	$mysqli=new mysqli('localhost','root','','weather');
	$mysqli->set_charset("utf8");
	
	if($mysqli->connect_errno){
	printf("Echec de la connexion:%s/n",$mysqli->connect_error);
	exit();
	}
	}
	
	public function createTable($city){
	
	$mysqli=new mysqli('localhost','root','','weather');
	$mysqli->set_charset("utf8");
	
	if($mysqli->connect_errno){
	printf("Echec de la connexion:%s/n",$mysqli->connect_error);
	exit();
	}
	
		$mysqli->query("CREATE TABLE IF NOT EXISTS $city
		(
		id INT(12) PRIMARY KEY NOT NULL AUTO_INCREMENT,
		period VARCHAR(15),
		temp_mini INT (11),
		temp_maxi INT(11),
		comment TEXT(140)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1");
		
	}
Voila, je voudrais utiliser ma méthode connectDataBase() pour se connecter a ma base...elle se connecte mais ensuite ne reconnaÎt pas la variable $mysqli de la méthode createTable()....( j'ai essayé de placé un attribut $mysqli a ma classe...mais rien n'y fait...)

Merci pour vos réponses...cordialement.

Re: Ma table ne veut pas se créer...

Posté : 31 déc. 2014, 15:48
par tof73
var $mysqli = null;
public function connectDataBase(){
        $this->mysqli=new mysqli('localhost','root','','weather');
        $this->mysqli->set_charset("utf8");
       ...
}
       
public function createTable($city){
$this->mysqli->query("$city");
}
pour répondre à la question, mais cela n'est pas une bonne solution.