IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Conflit de classement entre "Latin1_General_CI_AS" et "Latin1_General_BIN" [SQL-Server]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut Conflit de classement entre "Latin1_General_CI_AS" et "Latin1_General_BIN"
    Salut à tous, voilà je gère avec un collègue un site de jeu avec classement des joueurs, dans ce classement nous avons deux erreurs que nous n'arrivons pas à corriger.

    Nous passons par developpez.net car vous êtes notre seule solution réelle,

    Notre fichier php montre le classement des "joueurs" des "guildes" et des "guildes sièges"
    Seules les classements guildes et guildes sièges, fonctionnent correctement, seul le classement joueurs obtient des erreurs.

    Les erreurs sont les suivantes:
    Warning: odbc_exec(): SQL error: [Microsoft][ODBC SQL Server Driver][SQL Server]Impossible de r�soudre le conflit de classement entre "Latin1_General_CI_AS" et "Latin1_General_BIN" dans l'op�ration equal to., SQL state 37000 in SQLExecDirect in C:\wamp\www\pages\ranking.php on line 16 Warning: odbc_num_rows() expects parameter 1 to be resource, boolean given in C:\wamp\www\pages\ranking.php on line 11
    Le fichier.php est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?php
    if(isset($_GET['a']) and $_GET['a']=='player')
    {
    	$PageContent .='<div id="center_4">
    				<h1>Classement</h1>
    				<h2>Classement des Joueurs</h2>
    				<table class="width bordered rank players">
    					<tr><td>N°</td><td>Nom</td><td>Classe</td><td>Level</td><td>Guilde</td></tr>';
    					$Query = odbc_exec($mssql, "SELECT TOP 19 t1.m_szName, t1.m_nLevel, t1.m_nJob, t1.m_dwSex, SUM(t3.Point)/COUNT(t3.Point) as points, t5.m_szGuild FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL] AS t1 LEFT JOIN [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] AS t2 on t1.account=t2.account LEFT JOIN [CHARACTER_01_DBF].[dbo].[tblCombatJoinPlayer] AS t3 on t3.PlayerID=t1.m_idPlayer LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_MEMBER_TBL] AS t4 ON t4.m_idPlayer = t1.m_idPlayer LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_TBL] AS t5 ON t5.m_idGuild = t4.m_idGuild WHERE t2.m_chLoginAuthority='F' AND t1.m_chAuthority='F' AND t1.isblock='F' GROUP BY t1.m_szName, t1.m_nLevel, t1.m_nJob, t1.m_dwSex, t5.m_szGuild ORDER BY t1.m_nLevel desc, points desc");
    					$i=1;
    					if(odbc_num_rows($Query) != 0)
    					{
    						while($datas = odbc_fetch_array($Query))
    						{
    							$PageContent .='
    					<tr><td>'.$i.'</td><td>'.gender($datas['m_szName'], $datas['m_dwSex']).'</td><td>'.Classe($datas['m_nJob']).'</td><td>'.level($datas['m_nLevel'], $datas['m_nJob']).'</td><td>'.$datas['m_szGuild'].'</td></tr>';
    							$i++;
    						}
    						$PageContent .='
    				</table>';
    					}
    					else $PageContent.='
    				</table>
    				<div id="error" style="margin-top: 5px">Aucuns Personnages trouvés.</div>';
    				$PageContent .='
    			</div>';
    }
    elseif(isset($_GET['a']) and $_GET['a']=='guilds')
    {
    	$PageContent .='<div id="center_4">
    				<h1>Classement</h1>
    				<h2>Classement des Guildes</h2>
    				<table class="width bordered rank guild">
    					<tr><td>N°</td><td>Nom</td><td>Level</td><td>Gagnés</td><td>Perdus</td><td>Abandons</td></tr>';
    					$Query = odbc_exec($mssql, "SELECT TOP 19 * FROM [CHARACTER_01_DBF].[dbo].[GUILD_TBL] ORDER BY m_nLevel desc, m_nWin desc, m_nLose asc");
    					$i=1;
    					if(odbc_num_rows($Query) != 0)
    					{
    						while($datas = odbc_fetch_array($Query))
    						{
    							$PageContent .='
    					<tr><td>'.$i.'</td><td>'.$datas['m_szGuild'].'</td><td>'.$datas['m_nLevel'].'</td><td>'.$datas['m_nWin'].'</td><td>'.$datas['m_nLose'].'</td><td>'.$datas['m_nSurrender'].'</td></tr>';
    							$i++;
    						}
    						$PageContent .='
    				</table>';
    					}
    					else $PageContent.='
    				</table>
    				<div id="error" style="margin-top: 5px">Aucunes Guildes trouvés.</div>';
    				$PageContent .='
    			</div>';
    }
    elseif(isset($_GET['a']) and $_GET['a']=='gs')
    {
    	$PageContent .='<div id="center_4">
    				<h1>Classement</h1>
    				<h2>Classement des Guildes Sièges</h2>
    				<table class="width bordered rank gs">
    					<tr><td>N°</td><td>Nom</td><td>Guilde</td><td>Points</td><td>Moyenne par GS</td></tr>';
    					$Query = odbc_exec($mssql, "SELECT TOP 19 t1.[m_szName], t1.[m_dwSex], SUM(t2.[Point]) as [points], AVG(t2.[Point]) as moyenne, t4.[m_szGuild] FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL] AS t1 LEFT JOIN [CHARACTER_01_DBF].[dbo].[tblCombatJoinPlayer] AS t2 ON t2.[PlayerID] = [m_idPlayer] LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_MEMBER_TBL] AS t3 ON t3.[m_idPlayer] = t1.[m_idPlayer] LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_TBL] AS t4 ON t3.m_idGuild=t4.m_idGuild WHERE [m_chAuthority] = 'F' AND [isblock] != 'D' GROUP BY t1.[m_szName], t1.[m_dwSex], t4.[m_szGuild] HAVING COUNT(t2.[Point])>=1 ORDER BY points DESC, moyenne DESC");
    					$i=1;
    					if(odbc_num_rows($Query) != 0)
    					{
    						while($datas = odbc_fetch_array($Query))
    						{
    							$PageContent .='
    					<tr><td>'.$i.'</td><td>'.gender($datas['m_szName'], $datas['m_dwSex']).'</td><td>'.$datas['m_szGuild'].'</td><td>'.$datas['points'].'</td><td>'.$datas['moyenne'].'</td></tr>';
    							$i++;
    						}
    						$PageContent .='
    				</table>';
    					}
    					else $PageContent.='
    				</table>
    				<div id="error" style="margin-top: 5px">Aucuns Personnages trouvés.</div>';
    				$PageContent .='
    			</div>';
    }
    else
    {
    	require_once('pages/error.phb');
    }
    ?>
    Si vous pouvez nous éclairer, ça serait génial !

  2. #2
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525
    Par défaut
    la requête retourne FALSE donc pas de record a traiter, essaye la en direct sur la db pour en savoir plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Query = odbc_exec($mssql, "SELECT TOP 19 t1.m_szName, t1.m_nLevel, t1.m_nJob, t1.m_dwSex, SUM(t3.Point)/COUNT(t3.Point) as points, t5.m_szGuild FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL] AS t1 LEFT JOIN [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] AS t2 on t1.account=t2.account LEFT JOIN [CHARACTER_01_DBF].[dbo].[tblCombatJoinPlayer] AS t3 on t3.PlayerID=t1.m_idPlayer LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_MEMBER_TBL] AS t4 ON t4.m_idPlayer = t1.m_idPlayer LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_TBL] AS t5 ON t5.m_idGuild = t4.m_idGuild WHERE t2.m_chLoginAuthority='F' AND t1.m_chAuthority='F' AND t1.isblock='F' GROUP BY t1.m_szName, t1.m_nLevel, t1.m_nJob, t1.m_dwSex, t5.m_szGuild ORDER BY t1.m_nLevel desc, points desc");

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut
    J'ai fais le boulet lol

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut
    Voilà j'ai éxecuté la requête directement depuis la database:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT TOP 19 t1.m_szName, t1.m_nLevel, t1.m_nJob, t1.m_dwSex, SUM(t3.Point)/COUNT(t3.Point) as points, t5.m_szGuild FROM [CHARACTER_01_DBF].[dbo].[CHARACTER_TBL] AS t1 LEFT JOIN [ACCOUNT_DBF].[dbo].[ACCOUNT_TBL_DETAIL] AS t2 on t1.account=t2.account LEFT JOIN [CHARACTER_01_DBF].[dbo].[tblCombatJoinPlayer] AS t3 on t3.PlayerID=t1.m_idPlayer LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_MEMBER_TBL] AS t4 ON t4.m_idPlayer = t1.m_idPlayer LEFT JOIN [CHARACTER_01_DBF].[dbo].[GUILD_TBL] AS t5 ON t5.m_idGuild = t4.m_idGuild WHERE t2.m_chLoginAuthority='F' AND t1.m_chAuthority='F' AND t1.isblock='F' GROUP BY t1.m_szName, t1.m_nLevel, t1.m_nJob, t1.m_dwSex, t5.m_szGuild ORDER BY t1.m_nLevel desc, points desc");
    et je reçois le même message d'erreur:
    Msg*468, Niveau*16, État*9, Ligne*1
    Impossible de résoudre le conflit de classement entre "Latin1_General_CI_AS" et "Latin1_General_BIN" dans l'opération equal to.

  5. #5
    Membre émérite Avatar de patrickbaras
    Homme Profil pro
    Informaticien (à sa mémère).
    Inscrit en
    Septembre 2010
    Messages
    525
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien (à sa mémère).
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 525

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut
    J'ai été vérifié chaque colonne et tout est normal concernant leur classement.

    ça m'a tué --" comment faire ?

    Ya t'il pas une requête a executer pour appliquer le même classement à toutes les colonnes de la table ?


    Cordialement

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Par défaut
    Merci @patrickbaras

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/08/2009, 12h12
  2. Réponses: 1
    Dernier message: 11/02/2009, 10h40
  3. Conflits d'identifiants entre portlets
    Par ginkas31 dans le forum Websphere
    Réponses: 2
    Dernier message: 09/10/2008, 17h51
  4. Conflit de noms entre bibliothèques
    Par oodini dans le forum C++
    Réponses: 3
    Dernier message: 14/08/2008, 14h51
  5. Réponses: 14
    Dernier message: 10/01/2008, 18h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo