Object id #1

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juin 2006, 15:33

Les 4 1eres erreurs veulent dire que tu ne passes pas les parametres 1,2,3 et 4 lors de l'appel à la fonction MYSQL().

Par contre, la dernière veut dire qu'il n'arrive pas à gérer les Exceptions :-k
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Amistrad
Invité n'ayant pas de compte PHPfrance

06 juin 2006, 16:20

En fait c'est bizarre, si j'instancie ma class Mysql genre:
$db = class MySQL();   $db=$db->MySQL (NAME, PASS, BASE, SERVER);
il me met les erreurs que je citais tout a l'heure, sinon si je fais:
<?php
require_once ("require.php");

$db = MySQL (NAME, PASS, BASE, SERVER);
$session = controlAcces ("html.php", $_POST, session_id(), $db);
echo 'retour de fonction : '.$session;
?>
(ligne 4 au niveau de $db = MySQL) la, il m'affiche

Code : Tout sélectionner

Warning: Wrong parameter count for mysql() in C:\wamp\www\html.php on line 4 Fatal error: Call to a member function execRequest() on a non-object in C:\wamp\www\Session.php on line 8

et la fameuse ligne 8 est au niveau de $result:
function searchSession ($id_session, $db){

	$request = "SELECT * FROM identification WHERE id_session='$id_session' ";
	$result = $db->execRequest ($request);
	return $db->objectNext ($result);
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

06 juin 2006, 16:24

A mon avis, c'est parce que le code qui pose problème se situe dans le constructeur de ta classe et lorsque tu instancis ta classe, tu fait appel à cette fonction et il lui manque les parametres.

Ensuite, lorsque tu es DANS une classe, pour faire appel à l'une des méthode d'elle-même, il faut utiliser $this et non pas $db ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Petit nouveau ! | 8 Messages

06 juin 2006, 18:19

j'arrive a débloquer petit a petit mais pas sans peine.

je suis a une nouvelle etape et je crois/espere que c'est la derniere pour ce script!

donc maintenant j'appel avec:
<?php
require_once ("require.php");

$db = new MySQL (NAME, PASS, BASE, SERVER);
$session = controlAcces ("html.php", $_POST, session_id(), $db);
echo 'retour de fonction : '.$session;
?>
function controlAcces ($name_script, $infoLogin, $id_session, $db){

	// Search session
	$sesion_current = searchSession($id_session, $db);
	
	// Cas 1: Verification current session
	if (is_object($session_current, $db)){
	
		// session exist, valid?
		if (sessionValid ($session_current, $db)){
	
			return $session_current;
		}
		else
			
			echo "<strong>Your session are not valid.</strong>";
		}
	
	//Cas 2: not session but login and password
	if (isset($infoLogin['login'])){
	
		// login/password exist, that's correct?
		if (createSession ($db, $infoLogin['login'], $infoLogin['password'], $id_session)){
		
			echo "Identification correct";
			return searchSession ($id_session, $db);
		}
		
		else
			echo "<strong>Your identification failled.</strong>";
		}
	
	// See form with login by default
	if (isset($infoLogin['login']))
		$login = $infoLogin['login'];
	
	else
		$login = "";
	
	formIdentification($name_script, $login);
}
?>
me renvoie maintenant

Code : Tout sélectionner

Warning: is_object() [function.is-object]: Only one argument expected in C:\wamp\www\Session.php on line 83 Fatal error: Call to undefined function formIdentification() in C:\wamp\www\Session.php on line 116
(83 c'est la ligne is_object biensur et la formIdent la derniere :) )

une idée?

Mammouth du PHP | 1311 Messages

06 juin 2006, 19:52

http://fr2.php.net/manual/fr/function.is-object.php
sinon instanceof en php5 et is_a en php4

Petit nouveau ! | 8 Messages

08 juin 2006, 13:45

Bonjour, merci pour les reponses.

j'ai un petit probleme, j'aurai pu recreer un post mais j'ai peur de ne voir que mon nom sur le forum (si c'est indispensable, je le fais).

En fait j'ai reussi a mettre en place mon script comme je le voulais, seulement apres l'avoir envoyer sur un serveur internet (qui n'est pas le final)
mon script ne marche plus, une partie du probleme venait apparement des exceptions (est ce que le fait que je n'ai pas fait de try et catch y soit pour quelquechose??), apres les avoir provisoirement supprimer je suis informer qu'il reste des erreur dans l'execution de mon script et cette fois ci le probleme serait un mysql_fetch_object ...

C'est normal qu'en passant de Wamp a un serveur plus rien ne marche de la meme facon???

Mammouth du PHP | 1311 Messages

08 juin 2006, 14:03

Comme ca, c'est dur de te repondre, il ya surement des differences entre wamp et ton autre serveur.

quelle est cette erreur et il faudrai aussi des infos sur la version de wamp et la config de ton autre serveur

Petit nouveau ! | 8 Messages

08 juin 2006, 14:13

Biensur

Wamp 1.6.3 (brut de pomme, j'ai juste lancer l'install :p )

puis l'hebergeur c'est my.oxito je sais pas si tu connais.

en meme temps le probleme est peut etre du a une fragilité de mon script je sais pas mais la j'ai beau chercher, je ne comprend pas..

Je sais pas si je suis le seul mais je rame comme un ouf pour mes debut, je trouve tjrs une erreur quelque part... et souvent c'est l'erreur la plus conne qui puisse etre, genre reslut au lieu de result... grr

bref sinon j'ai une class MySQL qui gere ma connection, a l'interrieur de cette class y'a ca:
	public function objectNext ($result){
	
		return mysql_fetch_object ($result);
	}
	
	public function lineNext ($result){
	
		return mysql_fetch_assoc ($result);
	}
	
	public function tableNext ($result){
	
		return mysql_fetch_row ($result);
	}
j'ai changer object contre line et ca me produit la meme erreur

la deuxieme erreur viendrait de là (c'est une fonction de ma class formulaire):
	private function fieldSelect ($name, $list, $default, $size=1){
		$s = "<SELECT NAME=\"$name\" SIZE='$size'>\n";
		while (list ($val, $libelle) = each ($list)){
		
		//Posting
		$val = htmlSpecialChars($val);
		$default = htmlSpecialChars($default);
		
			if ($val != $default)
			$s .= "<OPTION VALUE=\"$val\">$libelle</OPTION>\n";
			else
			$s .= "<OPTION VALUE=\"$val\" SELECTED>$libelle</OPTION>\n";
			}
		return $s . "</SELECT>\n";
	}

Code : Tout sélectionner

Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /home/httpd/vhosts/www.ottinex.fr/web/javelin.ottinex.fr/mysql.class.php5 on line 39 Warning: Variable passed to each() is not an array or object in /home/httpd/vhosts/www.ottinex.fr/web/javelin.ottinex.fr/form.class.php5 on line 54
au cas ou quelque chose te pete aux yeux, je reprecise que sous wamp pas de pbs...

Petit nouveau ! | 8 Messages

08 juin 2006, 14:17

Ah oui petit detail qui peut avoir son importance!?

Le serveur me demande de renomer mes fichier pour du PHP5 en .php5 alors je l'ai fait partout.

Mammouth du PHP | 1311 Messages

08 juin 2006, 14:33

je connais pas ta classe mais
fait une truc du genre pour controller la ressource qui t'es envoyer lors de lma connexion a la base de données
var_dump($this->connexion);
et ajoute a tes fonctions mysql la ressource en question

Petit nouveau ! | 8 Messages

08 juin 2006, 14:45

je suis pas trop une bete en fait, j'ai mis ca sous ma ligne object Next (c bien?).

ca me donne

Code : Tout sélectionner

resource(12) of type (mysql link persistent) resource(12) of type (mysql link persistent) resource(12) of type (mysql link persistent) resource(12) of type (mysql link persistent) resource(12) of type (mysql link persistent)
wamp mais ca ne me reporte que NULL sur le serveur

Mammouth du PHP | 1311 Messages

08 juin 2006, 15:00

epluche la conf de ton serveur notament les connexions persistente pas sur quelles soitent autorisées

Petit nouveau ! | 8 Messages

08 juin 2006, 15:35

il y a des serveurs avec la meme config que wamp?