Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
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 01/03/2007, 10h58   #1
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
Par défaut [SQL] problème de classification

mon probleme est le suivant

je fais la requete suivante
Code :
1
2
 
$requete = "select COM_CODIGO,COM_NOMBRE from san_comarcas order by COM_CODIGO,COM_NOMBRE";
mais le probleme est que je n'obtien pa vraiment le resultat espéré voici un petit apercu:

Citation:
0
1
10
11
12
2
20
21
22
.
.
.
.
comment doit-je modifier la requette????

merci
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 11h02   #2
Membre chevronné
 
Inscription : juin 2005
Messages : 572
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Haute Vienne (Limousin)

Informations forums :
Inscription : juin 2005
Messages : 572
Points : 690
Points : 690
Typiquement cela vient du faire que ton code pays est déclaré en varchar, et du coup en terme de caractères "2" est plus grand que "10".

Le mieux à mon avis si le problème vient de la serait plutot d'uniformiser la base de données, en donnant le meme nombre de caractères à chaque code pays (transformer "1" en "01" par exemple).
ratapapa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 12h23   #3
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
merci mec
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 12h42   #4
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Le mieux serait de passer le champ en integer vu que tu veux stocker des entiers ^^ (ou smallint)
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 12h54   #5
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
le sousis c'est que j'ai pas acces a ma base de donné avant mardi et je suis pas sur d'etre autorisait a faire cette modif donc pour le moment je fait un classement par ordre alphabetique et je propose cette alternative aux autres


merci
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 13h12   #6
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Si tu peux absolument pas toucher à la base tu peux utiliser LPAD pour ton tri, ex :

Code :
...ORDER BY LPAD(code_pays, '0', 3);
3 étant le nombre maximal de digit utilisés pour le code pays.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 13h25   #7
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
ma requete est devenue la suivante suite a ton conseil mais elle me fais un rangement par ordre alphabetique et ne prent pas en conte le code des comarcas(comarcas est equivalant a region plus ou moin en français)



Code :
1
2
 
$requete = "select COM_CODIGO,COM_NOMBRE from san_comarcas order by rpad('COM_CODIGO','0',2),COM_NOMBRE";
que doit-je modifier stp
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 13h27   #8
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
offet il faut utiliser rpad ou lpad

mon code de comarcas est en char 2byte
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 13h29   #9
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
c'est lpad pour compléter ta chaîne sur la gauche avec des 0.
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 13h33   #10
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
il veut rien savoir il continu en prendre en conte les nom et pas les code

ma requete est la suivante quesqui cloche?

Code :
1
2
 
$requete = "select COM_CODIGO,COM_NOMBRE from san_comarcas order by lpad('COM_CODIGO','0',2),COM_NOMBRE";
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 14h07   #11
Membre Expert
 
Avatar de Djakisback
 
Inscription : février 2005
Messages : 1 797
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 1 797
Points : 1 688
Points : 1 688
Y a pas de guillemets pour un nom de colonne dans une commande sql ^^ :

Code sql :
1
2
3
lpad('COM_CODIGO','0',2)
 
lpad(COM_CODIGO,'0',2)
Djakisback est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 14h09   #12
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
merci
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 14h12   #13
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
en faite sa marche toujour pas



j'en est trop mare de se php de mer....


voici ma requete si quelqu'un y voit quelque chose a redire merci d'avance

Code :
1
2
 
$requete = "select COM_CODIGO,COM_NOMBRE from san_comarcas order by lpad(COM_CODIGO,'0',2),COM_NOMBRE";
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2007, 14h16   #14
Membre habitué
 
Inscription : octobre 2006
Messages : 325
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 325
Points : 137
Points : 137
on c'est jamais si le probleme venait d'ailleur dans la page je vous laisse le reste du code qui va avec


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
 
<?php																		
	session_start();
	$card_grant=$_SESSION['card'];
	$tablo_grant=$_SESSION['tablo_grant'];
 
	echo "mapa SANITARIO<br />";
	echo "Comarcas :<br />";
	include("connec_bdd.php");
	$requete = "select COM_CODIGO,COM_NOMBRE from san_comarcas order by lpad(COM_CODIGO,'0',2),COM_NOMBRE";
	$stmt=ociparse($connexion, $requete);
	ociexecute($stmt);
	$nb_comarcas=0;
	while(ocifetch($stmt))
	{
		$tablo_comarcas_codigo[$nb_comarcas]=ociresult($stmt,"COM_CODIGO");
		$tablo_comarcas_nombre[$nb_comarcas]=ociresult($stmt,"COM_NOMBRE");
		$nb_comarcas++;
	}
	echo "hay $nb_comarcas comarcas<br />";
	$nb_page_comarcas=ceil($nb_comarcas/20);
	echo "Nb page: $nb_page_comarcas<br />";
	if(isset($_GET['page_comarcas']))
	{
		$page_courante=intval($_GET['page_comarcas']);
		if ($page_courante>$nb_page_comarcas)
		{
			$page_courante=$nb_page_comarcas;
		}
		if ($page_courante<1)
		{
			$page_courante=1;
		}
	}
	else
	{
		$page_courante=1;
	}
	echo "page courente: $page_courante<br />";
	$j=20*($page_courante-1);
	$id=0;
	echo"<table>";
	while ($id<20 && $j<$nb_comarcas)
	{
		echo"<tr>";
			echo "<td>".$tablo_comarcas_codigo[$j]."</td><td>".$tablo_comarcas_nombre[$j]."</td>";
		echo"</tr>";
		$id++;
		$j++;
	}
	echo"</table>";
	echo "<br />";
	echo "<br />";
	echo "Liste des page :<br />";
	for ($i=1;$i<=$nb_page_comarcas;$i++)
	{
		echo '<a href="comarcas.php?page_comarcas='.$i.'">'.$i.'</a> ';
	}
 
?>
teen6517 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web