Précédent   Forum des professionnels en informatique > Applications > Projets > Projets hébergés > Archives > PhpMyObject
PhpMyObject Mapper de bases de données écrit en PHP qui transforme les résultats de requêtes SQL en objets (ORM). Le site : http://pmo.developpez.com
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 19/01/2008, 02h02   #1
Invité régulier
 
Étudiant
Inscription : décembre 2007
Messages : 17
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 17
Points : 6
Points : 6
Par défaut problême migration 0.10 -> 0.13

ligne 18 de PMO_MySgdb.php , le fichier de config n'était pas trouvé.

tout en plaçant config.php dans le repertoire de PMO_mySgdb:

Code :
1
2
//~ define('DBCONFIG', 'config.php');
define('DBCONFIG', dirname(__FILE__).'/config.php');
ensuite, dans config.php :

Code :
1
2
//~ $driver = "pdo";
$driverz = "mysql";
Maintenant j'ai une erreur que je ne comprends pas (après 2h dessus XD )

Code :
1
2
3
4
5
6
Fatal error: Uncaught exception 'Exception' with message 'Error: PMO_Map is empty' in 
D:\www\pmo\PMO_core\PMO_MyController.php:137 Stack trace: #0 
D:\www\pmo\PMO_core\PMO_MyController.php(171): PMO_MyController->populateMapObjects('SELECT * FROM u...') #1 
D:\www\pmo\PMO_core\PMO_MyController.php(159): PMO_MyController->query('SELECT * FROM u...') #2 
D:\www\inscription.php(76): PMO_MyController->queryController('SELECT * FROM u...') #3 {main} thrown in 
D:\www\pmo\PMO_core\PMO_MyController.php on line 137
à la ligne 76 de inscription j'ai :
Code :
1
2
3
		//on regarde si l'utilisateur existe
		$controler = new PMO_MyController();
		$map = $controler->queryController("SELECT * FROM utilisateur WHERE pseudo = '".$pseudo."' ;");
ce qui marchait avant la mise en place de PMO 0.13

de même :

Code :
1
2
3
4
5
6
7
Fatal error: Uncaught exception 'Exception' with message 'Error: PMO_Map is empty' in 
D:\www\pmo\PMO_core\PMO_MyController.php:137 Stack trace: #0 
D:\www\pmo\PMO_core\PMO_MyController.php(171): PMO_MyController->populateMapObjects('SELECT * FROM d...') #1 
D:\www\pmo\PMO_core\PMO_MyController.php(159): PMO_MyController->query('SELECT * FROM d...') #2 
D:\www\code\testlog.php(37): PMO_MyController->queryController('SELECT * FROM d...') #3 
D:\www\accueil.php(19): testlog::setDroit(Object(Smarty)) #4 
{main} thrown in D:\www\pmo\PMO_core\PMO_MyController.php on line 137
j'ai la même erreur et je ne comprends pas pourquoi ... Il y a une autre manipulation à faire ?
aedius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 12h58   #2
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
Salut aedius,

Pour le fichier config.php normalement il doit être dans le répertoire ou tu lances tes scripts. Je pense qu'il va effectivement être déplacé dans le répertoire de PMO

Pour la deuxième erreur, ça veut tout simplement dire que ton select renvoie aucun résultat donc que ton utilisateur n'existe pas

Citation:
$controler = new PMO_MyController();

try{
$map = $controler->queryController("SELECT * FROM utilisateur WHERE pseudo = '".$pseudo."' ;");
}catch (Exception $e){
echo("utilisateur n'existe pas");
}
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2008, 13h25   #3
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
dis moi si ça fonctionne pas normalement
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 16h30   #4
Invité régulier
 
Étudiant
Inscription : décembre 2007
Messages : 17
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 17
Points : 6
Points : 6
mon utilisateur existe, je me log parfaitement en remettant mon vieux dossier PMO ...
aedius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/01/2008, 17h50   #5
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
Citation:
Envoyé par aedius Voir le message
mon utilisateur existe, je me log parfaitement en remettant mon vieux dossier PMO ...
copie colle ton code ça sera plus simple

nb: est-ce que tu as modifié le code de PMO , les lignes en erreur n'existe pas ???
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 02h51   #6
Invité régulier
 
Étudiant
Inscription : décembre 2007
Messages : 17
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 17
Points : 6
Points : 6
non, je n'ai pas modifier pmo à part ce que j'ai mis dans le topic.

oups, c'est peut etre que j'ai pris la version 0.12 au lieu de la 0.13 en faite ...
aedius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 08h26   #7
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
Citation:
Envoyé par aedius Voir le message
non, je n'ai pas modifier pmo à part ce que j'ai mis dans le topic.

oups, c'est peut etre que j'ai pris la version 0.12 au lieu de la 0.13 en faite ...
mouai (..) normalement la 0.12 est stable et la 0.13 c'est du dev. Il doit y avoir quelquechose de vraiment spécifique dans ton code pour que cela fasse ça.

J'ai testé avec une table utilisateur de faire un "select * from utilisateur where pseudo= ", et ça ne renvoit que ce type d'exception map vide, que quand ta map est vide, et donc ton pseudo n'existe pas dans la base.

conf: la fin de la methode populatemapobjets dans PMO_MyController
http://subversion.developpez.com/pro...Controller.php

Citation:
if ($this->map_objects->numRows() > 0)
return $this->map_objects;
else
throw new Exception("Error: PMO_Map is empty");
Il y a forcement un truc mais quoi ? (..) peut etre qu'en voyant le code j'en serais plus

Est-ce que les class dans le répertoire cache/ ont été crée par PMO?
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 16h40   #8
Invité régulier
 
Étudiant
Inscription : décembre 2007
Messages : 17
Détails du profil
Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2007
Messages : 17
Points : 6
Points : 6
peut etre l'insertion qui ne marche pas dans ce cas :

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
	//on vérifie que les données sont valide en priorité.
	if((isset($_POST['pseudo']))
	&&(isset($_POST['mail']))
	&&(isset($_POST['password2']))
	&&(isset($_POST['serveur']))
	&&(isset($_POST['race']))
	&&(isset($_POST['lignee']))
	&&(eregi("^[a-z0-9 ]*$", $_POST['pseudo']))
	&& (eregi("^[a-z0-9@. ]*$", $_POST['mail']))
	&& (eregi("^[a-z0-9 ]*$", $_POST['password1']))
	&& (eregi("^[a-z0-9 ]*$", $_POST['password2']))
	&& (eregi("^[a-z ]*$", $_POST['serveur']))
	&& (eregi("^[a-z0-9 ]*$", $_POST['race']))
	&& (eregi("^[a-z ]*$", $_POST['lignee'])))
	{
		
		$pseudo 	=$_POST['pseudo'];
		$mail		=$_POST['mail'];
		$password1=$_POST['password1'];
		$password2=$_POST['password2'];
		$serveur 	=$_POST['serveur'];
		$race	=$_POST['race'];
		$lignee	=$_POST['lignee'];
	
		
		//on regarde si l'utilisateur existe
		$controler = new PMO_MyController();
		$map = $controler->queryController("SELECT * FROM utilisateur WHERE pseudo = '".$pseudo."' ;");
		while ($result = $map->fetchMap())
		{
			$exist = true;
			
			//si l'utilisateur existe, on regarde si il possede le même mot de passe auquel cas ce sera le même utilisateur.
			if($result['utilisateur']->password == md5($password2));
			{
				$same = true;
			}
		}
		
		if ((!$exist) || $same)
		{
			//on vérifie la validié des mots de passe
			if (((strlen($password1) > 6) && ($password1==$password2)) || $same)
			{
				//on vérifie si un nom pour la lignée a été défini.
				if ($lignee != "a inventer")
				{
					
					$exist=false;
					//on vérifie que ce nom est disponible pour ce serveur
					$controler = new PMO_MyController();
					$map = $controler->queryController("SELECT * FROM compte WHERE lignee = '".$lignee."' ;");

					while ($result = $map->fetchMap())
					{
						
						if ($result['compte']->serveur = $serveur)
						{
							$exist = true;
						}
					}
					
					if (!$exist)
					{
						//on charge les objets nécessaires:
						require_once($_SERVER["DOCUMENT_ROOT"].'/code/pop.php');
						require_once($_SERVER["DOCUMENT_ROOT"].'/code/bat.php');
						require_once($_SERVER["DOCUMENT_ROOT"].'/code/ress.php');
						
						//on entre les données dans la BDD
						
						if(!$same)
						{
							//d'abord utilisateur
							$utilisateur = PMO_MyObject::factory("utilisateur");
							$utilisateur->pseudo = $pseudo;
							$utilisateur->mail = $mail;
							$utilisateur->password = md5($password1);
							try
							{
								$utilisateur->commit();
							}
							catch(Exception $e)
							{
								die($e->getMessage());
							}
						}
						
						//on récupère l'objet ainsi créé (pour l'id)
						$controler = new PMO_MyController();
						$map = $controler->queryController("SELECT * FROM utilisateur WHERE pseudo = '".$pseudo."' ;");			
						$uti = $map->getObjectByValue("utilisateur", "pseudo", $pseudo);
						
						//creation du compte
						$compte = PMO_MyObject::factory("compte");
						$compte->idUti = $uti->idUti;
						$compte->serveur= $serveur;
						$compte->lignee= $lignee;
						$compte->lastConnect = time();
						try
						{
							$compte->commit();
						}
						catch(Exception $e)
						{
							die($e->getMessage());
						}
						
						//recupération de l'id
						$controler = new PMO_MyController();
						$map = $controler->queryController("SELECT * FROM compte WHERE idUti = '".$uti->idUti."' ;");			
						$com = $map->getObjectByValue("compte", "serveur", $serveur);
						
			//on selctionne le village d'arriver en fonction de la race
			//~ $idCar = village::new($race)
			$idCar = time();
						
						// creation du village
						$village = PMO_MyObject::factory($serveur."_village");
						$village->idCom = $com->idCom;
						$village->idCar= $idCar;
						$village->nom= $lignee."Ville";
						$village->surfRest = 1000;
						try
						{
							$village->commit();
						}
						catch(Exception $e)
						{
							die($e->getMessage());
						}
						
						//recuperation de l'id
						$controler = new PMO_MyController();
						$map = $controler->queryController("SELECT * FROM ".$serveur."_village WHERE idCom = '".$com->idCom."' ;");			
						$vil = $map->getObjectByValue($serveur."_village", "idCom", $com->idCom);
						
						$pop = pop::nouvelle($vil->idVil,$race,$serveur);
						$popLibre= bat::nouveaux($vil->idVil,$race,$serveur,$pop);
						
						$vil->population = $popLibre ;
						$vil->commit();
						
						
						ress::nouveaux($vil->idVil,$race,$serveur);
						
						
						
						//on log l'utilisateur
						$controler = new PMO_MyController();
						$map = $controler->queryController("SELECT * FROM utilisateur WHERE pseudo = '".$pseudo."' ;");
						$util = $map->getObjectByValue("utilisateur", "pseudo", $pseudo);
						
						$_SESSION['idUti']=$util->idUti ;
						$_SESSION['ip']=$_SERVER["REMOTE_ADDR"] ;
						
						
						$controler = new PMO_MyController();
						$map = $controler->queryController("SELECT * FROM compte WHERE idUti = '".$util->idUti."' ;");					
						while ($result = $map->fetchMap())
						{	
							$_SESSION[$result['compte']->serveur] = $result['compte']->idCom;
						}
						
						
						$smarty->assign('serveur',$serveur);
						$smarty->display('inscription_ok.tpl');
					}
					else 
					{
						// la suite est le signalement des erreurs sur la page d'inscription.
					

						$smarty->assign('erreur','nom de lignee existant sur le serveur selectionné');
						$smarty->assign('pseudo',$pseudo);
						$smarty->assign('mail',$mail);
						$smarty->assign('listRace',$listRace);
						$smarty->assign('lignee',$lignee);
						$smarty->display('inscription.tpl');
					
					}
				}
				else
				{

					$smarty->assign('erreur','nom de lignee non saisi');
					$smarty->assign('pseudo',$pseudo);
					$smarty->assign('mail',$mail);
					$smarty->assign('lignee',$lignee);
					$smarty->assign('listRace',$listRace);
					$smarty->display('inscription.tpl');
				}
			}
			else
			{

				$smarty->assign('erreur','mot de passe trop court, ou erreur de saisi pour la confirmation');
				$smarty->assign('pseudo',$pseudo);
				$smarty->assign('mail',$mail);
				$smarty->assign('lignee',$lignee);
				$smarty->assign('listRace',$listRace);
				$smarty->display('inscription.tpl');
			}
		}
		else
		{

			$smarty->assign('erreur','pseudo existant ou mot de passe incorrect');
			$smarty->assign('pseudo',$pseudo);
			$smarty->assign('mail',$mail);
			$smarty->assign('lignee',$lignee);
			$smarty->assign('listRace',$listRace);
			$smarty->display('inscription.tpl');
		}
	}
	else
	{

		$smarty->assign('erreur','problême de caractères');
		$smarty->assign('pseudo',$_POST['pseudo']);
		$smarty->assign('mail',$_POST['mail']);
		$smarty->assign('lignee',$_POST['lignee']);
		$smarty->assign('listRace',$listRace);
		$smarty->display('inscription.tpl');
	}
quand a testlog :

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
public function setDroit($smarty)
	{
		if(isset($_SESSION['ip']))
		{
			if($_SESSION['ip'] == $_SERVER["REMOTE_ADDR"] )
			{
				//on assign serveur
				$smarty->assign('serveur',$_SESSION['lastServ']);
				
				//on cherche l'utilisateur
				$controler = new PMO_MyController();
				$map = $controler->queryController("SELECT * FROM utilisateur WHERE idUti = '".$_SESSION['idUti']."' ;");
				$uti = $map->getObjectByValue("utilisateur", "idUti", $_SESSION['idUti']);

				//on assign son pseudo
				$smarty->assign('pseudo',$uti->pseudo);
				$smarty->assign('mail',$uti->mail);
				$smarty->assign('mdp','Merci de reconfirmer votre mot de passe :</p>
				<p>mot de passe :');
				
				//l'utilisateur est logue a defaut de mieux
				$droit = 'logue';
				
				//on cherche si l'on a mieux (admin uniquement)
				$controler = new PMO_MyController();
				$map = $controler->queryController("SELECT * FROM droit WHERE idUti = '".$_SESSION['idUti']."' ;");
				while($result = $map->fetchMap())
				{
					//un administrateur ne peut etre banni
					if ($result['droit']->adminJeu == 1)
					{
						$droit='Admin';
						$moderateur='oui';
						$smarty->assign('moderateur','oui');
						$createur='oui';
						$smarty->assign('createur','oui');
					}//un banni ne peut avoir de droit
					elseif ($result['droit']->banni == 1)
					{
						$droit='banni';
					}
					//on peut avoir les autres droits indépendamment
					// droit globaux :
					else
					{
						if ($result['droit']->moderateur == 1)
						{
							$moderateur='oui';
							$smarty->assign('moderateur','oui');
						}
						if ($result['droit']->createur == 1)
						{
							$createur='oui';
							$smarty->assign('createur','oui');
						}
					}
					
					//droit par serveur (créé bdd etc)
					
					
				}
				//on assign le droit.
				$smarty->assign('droit',$droit);
			}
			else
			{
				// Détruit toutes les variables de session
				$_SESSION = array();

				// Si vous voulez détruire complètement la session, effacez également
				// le cookie de session.
				// Note : cela détruira la session et pas seulement les données de session !
				if (isset($_COOKIE[session_name()])) 
				{
				    setcookie(session_name(), '', time()-42000, '/');
				}

				// Finalement, on détruit la session.
				session_destroy();
			}
		}
		return $smarty;
	}
aedius est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 21h13   #9
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
mmm,

Je ne peux pas reproduire le code chez moi

les bouts de code incriminés

Citation:
$controler = new PMO_MyController();
$map = $controler->queryController("SELECT * FROM utilisateur WHERE pseudo = '".$pseudo."' ;");
$uti = $map->getObjectByValue("utilisateur", "pseudo", $pseudo);
juste après le commit

essaie de faire un
Citation:
die($pseudo);
pour vérifier la valeur de $pseudo ou tout simplement vérifie si le commit a bien eu lieu.

pareil avant:

Citation:
$controler = new PMO_MyController();
$map = $controler->queryController("SELECT * FROM droit WHERE idUti = '".$_SESSION['idUti']."' ;");
controle la valeur de la variable

Citation:
die($_SESSION['idUti']);
J'ai déjà vu des trucs de très bizarre avec php, des variables qui se retrouvaient unset mais c'était sur des versions plus anciennes.
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2008, 21h56   #10
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
sinon pour ton code, j'ai quelques optimisations à te proposer. J'ai incorporé aussi des nouveaux trucs sur le svs.

J'aimerai quand même qu'on trouve le bug :/
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2008, 02h53   #11
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
ça fonctionne ?
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 22h43   #12
Nouveau Membre du Club
 
Avatar de bractar
 
Inscription : janvier 2004
Messages : 201
Détails du profil
Informations forums :
Inscription : janvier 2004
Messages : 201
Points : 29
Points : 29
salut,
j'ai eu exactement les meme problemes :
- meme message d'erreur (il se trouvait que ma table etait vide)
- $driver au lieu de $driverz
- mauvaise url pour config.php

ca fonctionne maintenant, mais pour un faux debutant comme moi (je connaissais php4 mais je debute en php5), ca rebute un peu...
Je vais desormais essayer les fonctionnalites de ce programme qui a l'air super!
a+
__________________
Bractar the French fry eater
http://www.flale.com
bractar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2008, 22h58   #13
Membre habitué
 
Inscription : janvier 2003
Messages : 181
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 181
Points : 114
Points : 114
Citation:
Envoyé par bractar Voir le message
salut,
j'ai eu exactement les meme problemes :
- meme message d'erreur (il se trouvait que ma table etait vide)
- $driver au lieu de $driverz
- mauvaise url pour config.php

ca fonctionne maintenant, mais pour un faux debutant comme moi (je connaissais php4 mais je debute en php5), ca rebute un peu...
Je vais desormais essayer les fonctionnalites de ce programme qui a l'air super!
a+
héhé ok Bractar n'hésite pas à me donner un retour si tu as besoin d'aide
__________________
PhpMyObject teck leader
http://pmo.developpez.com

La justice de l'intelligence est la sagesse. Le sage n'est pas celui qui sait beaucoup de choses, mais celui qui voit leur juste mesure.
code34 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 07h13.


 
 
 
 
Partenaires

Hébergement Web