Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & ODBC
PHP & ODBC Forum d'entraide sur ODBC avec PHP. Avant de poster -> FAQ ODBC
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 02/05/2008, 14h51   #1
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 45
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : juin 2006
Messages : 45
Points : 36
Points : 36
Par défaut Equivalent à mysql_data_seek() ?

Bonjour,

Pour compenser un problème lié au driver odbc (je me connecte à SqlServer2005) :
Citation:
odbc_num_rows() retourne le nombre de lignes dans un résultat ODBC. odbc_num_rows() retournera -1 en cas d'erreur. Pour les commandes INSERT, UPDATE et DELETE, odbc_num_rows() retourne le nombre de ligne affectées. Pour les commandes SELECT, cela PEUT être le nombre de lignes disponibles, mais ce n'est pas certain.

Note: odbc_num_rows() après un SELECT retournera -1 avec de nombreux pilotes.
Je me suis refait ma propre fonction :
Code :
1
2
3
4
5
6
7
8
9
10
 
protected function _num_rows($result)
	{
		$i=0;
		while($ligne = odbc_fetch_row($result)){
			$i++;	
		}
		if( $i == 0 )	return -1;
		else return $i;	
	}
le probleme : odbc_fetch_row() lit le 1er résultat contenu dans $result puis place le curseur sur le 2eme résultat et ainsi de suite. Donc, une fois que je connais le nombre de résultat contenu dans $result, j'ai l'air malin, car je ne peux plus avoir les résultats de ma requête......

Avez vous une astuce qui me permettrai de passer outre?

Je voudrais dans la mesure du possible ne pas faire 2 requêtes, car je trouve cela inutile. Au pire, je veux bien coder une fonction odbc_data_seek(), si vous avez un bon tuto sur la manipulation de resultat de requete.
George Abidbol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/05/2008, 15h28   #2
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 45
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : juin 2006
Messages : 45
Points : 36
Points : 36
J'lai bien feinté tiens :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
	protected function _num_rows($result)
	{
		$i=0;
		while($ligne = odbc_fetch_row($result)){
			$i++;	
		}
		if( $i == 0 )	return -1;
		else {
			// Lit la ligne 0 du résultat qui n'existe pas, puis place le curseur sur le 1er résultat
			// La prochaine lecture du resultat démarera sur le bon enregistrement
			odbc_fetch_row($result,0);
			return $i;	
		}
	}
George Abidbol 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 00h26.


 
 
 
 
Partenaires

Hébergement Web