pb pour afficher resultat requete mssql

pb pour afficher resultat requete mssql - SQL/NoSQL - Programmation

Marsh Posté le 29-10-2004 à 12:51:06    

bonjour,
 
voila je veux afficher le resultat d'un requete dans une page php, mais le resultat ne s'affiche pas. c'est vide y a rien qui vient
 
voici le code de la page :  
 
<?
// on se connecte à MySQL
$connection= mssql_connect('xxxxxxxx', 'xx', 'xx');  
 
// on séléctionne la base  
mssql_select_db('WEB_CA');  
 
// on créer la requete SQL et on l'envoie  
$sql = 'select  sum(France) from  dbo.web_clients_eagle ';  
 
// on envoie la requete  
$req = mssql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());  
 
// Haut du tableau
echo '<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>  
    <td><table width="600" border="0" align="left">
        <tr bgcolor="#9999CC">  
    <td width="150"><div align="center"><b>CLIENTS</b></div></td>
 
      </tr>
';
 
// on fait une boucle qui va faire un tour pour chaque enregistrements  
while($data = mssql_fetch_array($req))  
    {  
    // on affiche les informations de l'enregistrements en cours  
 
echo '<tr bgcolor="#D7E1E8">  
  <td><div align="center"><b>'.$data['sum(France)'].'</b></div></td>
 
';  
  }
echo '</table>
';    
// on ferme la connexion à mysql  
mssql_close();  
?>  
 
 
ci quelqu'un pouvait m'aide  
 
merci d'avance

Reply

Marsh Posté le 29-10-2004 à 12:51:06   

Reply

Marsh Posté le 29-10-2004 à 12:57:23    

Le deuxième tr n'est pas fermé. :o

Reply

Marsh Posté le 29-10-2004 à 13:44:46    

Hermes le Messager a écrit :

Le deuxième tr n'est pas fermé. :o


Ceci dit, je ne pense pas que ça bloque l'affichage pour autant. Même Moz laisse passer ce genre de bugs il me semble.

Reply

Marsh Posté le 29-10-2004 à 14:00:20    

enfaite la fermeture du </tr> est presente dans mon script mais j'ais mal fait le copier colle, car si j'enleve la fonction sum et je mets simplement un select champs ca marche parfaitement. mais il aime pas les calculs ou fonctions sum/avg  
 
c'est bizard nan  
 
par contre si je transferts les tables dans une DB mysql la ca marche bien (biensur en changeant les mssql par mysql).
 

Reply

Marsh Posté le 29-10-2004 à 15:00:19    

Ha ben ouais... $data['sum(France)']
 
J'avais pas vu... Faut pas t'attendre à ce que ça marche :o
 
"select sum(France) sommeFrance from ..."
 
Puis $data['sommeFrance']

Reply

Marsh Posté le 29-10-2004 à 15:17:19    

merci ca marche (j'ais tester aussi avec AVG(France) sommeFrance, et ca marche - je garde aussi la syntac sommeFrance?)
par contre si je veux faire un calcul exemple :
 
"select France*France2 from...."  
je dois mettre quoi ?
 
merci

Reply

Marsh Posté le 29-10-2004 à 16:09:52    

Ban nan :D
 
La syntaxe de SELECT c'est :
 
SELECT field [alias], field [alias] ...
 
Donc par exemple :
 
SELECT SUM(france) SommeFrance, AVG(France) MoyenneFrance, France * France CarreFrance
FROM ...

Reply

Marsh Posté le 29-10-2004 à 16:15:57    

Je vois, et pour soustraire ou additionner ou diviser c'est aussi  "Carre+nom-du-champs" ??

Reply

Marsh Posté le 29-10-2004 à 16:19:39    

Mais nan :lol: L'alias tu met le nom que tu peux :
 
SELECT SUM(champ1 * champ2 / champ3) / AVG(champ4) SCOUBIDOU_FAIT_DES_POMPES_DANS_MON_JARDIN
FROM MATABLE
 
Ca marche très bien aussi ;)

Reply

Marsh Posté le 29-10-2004 à 16:21:50    

Potasse ça :
 

Citation :


 Référence de Transact-SQL  
 
 
SELECT
Extrait les lignes de la base de données et permet la sélection d'une ou de plusieurs lignes ou colonnes, dans une ou plusieurs tables. La syntaxe complète de l'instruction SELECT est complexe mais en voici les principales clauses :
 
SELECT select_list  
[ INTO new_table ]  
FROM table_source  
[ WHERE search_condition ]  
[ GROUP BY group_by_expression ]  
[ HAVING search_condition ]  
[ ORDER BY order_expression [ ASC | DESC ] ]  
 
L'opérateur UNION peut être utilisé entre les requêtes pour combiner leurs résultats en un seul jeu de résultats.
 
Syntaxe
SELECT statement ::=  
    < query_expression >  
    [ ORDER BY { order_by_expression | column_position [ ASC | DESC ] }  
        [ ,...n ]    ]  
    [ COMPUTE  
        { { AVG | COUNT | MAX | MIN | SUM } ( expression ) } [ ,...n ]  
        [ BY expression [ ,...n ] ]  
    ]  
    [ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }  
            [ , XMLDATA ]  
            [ , ELEMENTS ]
            [ , BINARY base64 ]
        }  
]  
    [ OPTION ( < query_hint > [ ,...n ]) ]  
 
< query expression > ::=  
    { < query specification > | ( < query expression > ) }  
    [ UNION [ ALL ] < query specification | ( < query expression > ) [...n ] ]  
 
< query specification > ::=  
    SELECT [ ALL | DISTINCT ]  
        [ { TOP integer | TOP integer PERCENT } [ WITH TIES ] ]  
        < select_list >  
    [ INTO new_table ]  
    [ FROM { < table_source > } [ ,...n ] ]  
    [ WHERE < search_condition > ]  
    [ GROUP BY [ ALL ] group_by_expression [ ,...n ]  
        [ WITH { CUBE | ROLLUP } ]
    ]
    [ HAVING < search_condition > ]  
 
Du fait de la complexité de l'instruction SELECT, la syntaxe de chaque élément est détaillée par clause :
 
Clause SELECT
Clause SELECT
Clause SELECT
Clause WHERE
Clause WHERE
Clause HAVING
Opérateur UNION
Clause ORDER BY
Clause COMPUTE
Clause FOR
Clause OPTION
 
©1988-2000 Microsoft Corporation. Tous droits réservés.


 

Citation :


 
 Référence de Transact-SQL  
 
 
Clause SELECT
Définit les colonnes à renvoyer par la requête.
 
Syntaxe
SELECT [ ALL | DISTINCT ]
    [ TOP n [ PERCENT ] [ WITH TIES ] ]  
    < select_list >  
 
< select_list > ::=  
 
    {    *  
        | { table_name | view_name | table_alias }.*  
        |     { column_name | expression | IDENTITYCOL | ROWGUIDCOL }  
            [ [ AS ] column_alias ]  
        | column_alias = expression  
    }    [ ,...n ]  
 
Arguments
ALL
 
Indique que les doublons de lignes peuvent apparaître dans le jeu de résultats. ALL est l'argument par défaut.
 
DISTINCT
 
Indique que seules des lignes uniques peuvent apparaître dans le jeu de résultats. Les valeurs NULL sont considérées comme étant égales pour le mot clé DISTINCT.
 
TOP n [PERCENT]
 
Spécifie que seules les n premières lignes doivent être produites dans le jeu de résultats de la requête. n est un entier compris entre 0 et 4 294 967 295. Si la valeur PERCENT est également spécifiée, seul n premier(s) pour cent des lignes sont produites dans le jeu de résultats. Lorsque la clause PERCENT est spécifiée, n doit être un nombre entier compris entre 0 et 100.
 
Lorsque la requête comprend une clause ORDER BY, les n premières lignes (ou n pour cent de lignes) ordonnées par la clause ORDER BY sont extraites. Lorsque la requête ne comprend pas de clause ORDER BY, l'ordre des lignes est arbitraire.
 
WITH TIES
 
Indique que les lignes supplémentaires sont renvoyées avec la même valeur du jeu de résultats de base dans les colonnes ORDER BY que dans la dernière ligne de TOP n (PERCENT). TOP ... WITH TIES peut être défini uniquement s'il existe une clause ORDER BY.
 
< select_list >
 
Colonnes à sélectionner pour le jeu de résultats. La liste de sélection est une série d'expressions séparées par des virgules.  
 
*  
Indique que toutes les colonnes de toutes les tables et vues de la clause FROM doivent être renvoyées. Les colonnes sont renvoyées par table ou vue, comme indiqué dans la clause FROM, et par ordre d'apparition dans la table ou la vue.
 
table_name | view_name | table_alias.*  
Limite l'étendue de l'astérisque (*) sur la table ou la vue spécifiée.
 
column_name  
Nom d'une colonne à renvoyer. Spécifiez column_name pour éviter une référence ambiguë, notamment lorsque deux tables dans la clause FROM possèdent des noms de colonnes en double. Par exemple, les tables Customers et Orders de la base de données Northwind ont toutes les deux une colonne intitulée CustomerID. Si les deux tables sont jointes dans une requête, l'ID du client peut être spécifié dans la liste de sélection en tant que Customers.CustomerID.
 
expression  
Nom de colonne, constante, fonction ou toute combinaison de noms de colonnes, de constantes ou de fonctions reliés par un ou plusieurs opérateurs ou par une sous-requête.
 
IDENTITYCOL  
Renvoie la colonne d'identité. Pour plus d'informations, voir IDENTITY (Propriété), ALTER TABLE et CREATE TABLE.  
Si plusieurs tables de la clause FROM possèdent une colonne dotée de la propriété IDENTITY, IDENTITYCOL doit être qualifié avec le nom de table approprié, tel que T1.IDENTITYCOL.  
 
 
ROWGUIDCOL  
Renvoie la colonne contenant l'identificateur unique globale de la ligne.  
Si plusieurs tables de la clause FROM sont dotées de la propriété ROWGUIDCOL, ROWGUIDCOL doit être qualifié avec le nom de table approprié, tel que T1.ROWGUIDCOL.  
 
 
column_alias  
Nom utilisé pour remplacer le nom de colonne dans le jeu de résultats de la requête. Par exemple, un alias tel que « Quantity », « Quantity to Date » ou « Qty » doit être spécifié pour une colonne nommée quantity.  
Les alias sont également utilisés pour spécifier les noms des résultats d'expressions, par exemple :  
 
USE Northwind
SELECT AVG(UnitPrice) AS 'Average Price'
FROM [Order Details]
 
L'argument column_alias peut être utilisé dans une clause ORDER BY. Il ne peut toutefois pas être utilisé dans une clause WHERE, GROUP BY ou HAVING. Si l'expression de requête fait partie d'une instruction DECLARE CURSOR, column_alias ne peut pas être utilisé dans la clause FOR UPDATE.  
 
Clause INTO
Crée une nouvelle table et y insère les lignes résultant de la requête.
 
L'utilisateur exécutant une instruction SELECT avec la clause INTO doit disposer de l'autorisation CREATE TABLE dans la base de données de destination. Vous ne pouvez pas utiliser SELECT ... INTO avec COMPUTE. Pour plus d'informations, voir Transactions et Transactions explicites.
 
Vous pouvez utiliser SELECT ... INTO pour créer une définition de table identique (portant un nom différent) sans aucune donnée en utilisant une condition FALSE dans la clause WHERE.
 
Syntaxe
[ INTO new_table ]
 
Arguments
new_table
 
Nom d'une nouvelle table à créer à partir des colonnes de la liste de sélection et des lignes choisies par la clause WHERE. Le format de la variable new_table est déterminé par l'évaluation des expressions de la liste de sélection. Les colonnes de new_table sont créées dans l'ordre spécifié par la liste de sélection. Chaque colonne de new_table a le même nom, le même type de données et la même valeur que l'expression correspondante dans la liste de sélection.
 
Lorsqu'une colonne calculée est comprise dans la liste de sélection, la colonne correspondante de la nouvelle table n'est pas une colonne calculée. Les valeurs de la nouvelle colonne sont les valeurs calculées au moment où l'instruction SELECT ... INTO a été exécutée.
 
Dans cette version de SQL Server, l'option de base de données select into/bulkcopy n'influence pas la possibilité de créer ou non une table permanente avec SELECT INTO. L'importance de la consignation de certaines opérations en bloc, y compris SELECT INTO, dépend du modèle de restauration effectif pour la base de données. Pour plus d'informations, voir Utilisation des modèles de récupération.
 
Dans les versions précédentes, la création d'une table permanente avec SELECT INTO n'était possible que si l'option select into/bulkcopy était définie.
 
L'option select into/bulkcopy permet d'assurer la compatibilité ascendante, mais elle ne sera peut-être plus prise en charge dans les versions futures. Pour plus d'informations, voir les rubriques Modèles de récupération et compatibilité ascendante et ALTER DATABASE.
 
Clause FROM
Spécifie la ou les tables à partir desquelles extraire les lignes. La clause FROM est obligatoire sauf lorsque la liste de sélection ne contient que des constantes, des variables et des expressions arithmétiques (pas de nom de colonne). Pour plus d'informations, voir FROM.
 
Syntaxe
[ FROM { < table_source > } [ ,...n ] ]  
 
< table_source > ::=  
    table_name [ [ AS ] table_alias ] [ WITH ( < table_hint > [ ,...n ] ) ]  
    | view_name [ [ AS ] table_alias ]  
    | rowset_function [ [ AS ] table_alias ]  
    | OPENXML  
    | derived_table [ AS ] table_alias [ ( column_alias [ ,...n ] ) ]  
    | < joined_table >  
 
< joined_table > ::=  
     < table_source > < join_type > < table_source > ON < search_condition >  
    | < table_source > CROSS JOIN < table_source >  
    | < joined_table >  
 
< join_type > ::=  
    [ INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } ]  
    [ < join_hint > ]  
    JOIN  
 
Arguments
< table_source >
 
Tables, vues, tables dérivées et tables jointes de l'instruction SELECT.  
 
table_name [[AS] table_alias ]  
Nom d'une table et d'un alias optionnel.
 
view_name [ [ AS ] table_alias ]  
Nom d'une vue et d'un alias optionnel.
 
rowset_function [ [AS] table_alias ]  
Nom d'une fonction rowset et d'un alias optionnel. Pour obtenir la liste des fonctions d'ensemble de lignes, voir Fonctions d'ensembles de lignes.
 
OPENXML  
Fournit une vue de l'ensemble des lignes d'un document XML. Pour plus d'informations, voir OPENXML.
 
WITH ( < table_hint > [ ,...n ] )  
Spécifie un ou plusieurs indicateurs de table. Pour plus d'informations sur les indicateurs de table, voir FROM.
 
derived_table [ [ AS ] table_alias ]  
Instruction SELECT imbriquée qui extrait les lignes de la base de données et des tables spécifiées.  
 
column_alias  
Alias facultatif qui peut remplacer un nom de colonne dans le jeu de résultats.  
< joined_table >
 
Jeu de résultats qui correspond au produit de deux ou plusieurs tables. Exemple :
 
SELECT *
FROM tab1 LEFT OUTER JOIN tab2 ON tab1.c3 = tab2.c3
    RIGHT OUTER JOIN tab3 LEFT OUTER JOIN tab4
        ON tab3.c1 = tab4.c1
        ON tab2.c3 = tab4.c3
 
Pour plusieurs jointures CROSS, vous devez utiliser les parenthèses pour modifier l'ordre naturel des jointures.
 
< join_type >
 
Type d'opération de jointure.  
 
INNER  
Indique que tous les couples de lignes correspondants sont renvoyés. Supprime les lignes n'ayant pas de correspondance entre les deux tables. Ceci est l'option par défaut si aucun type de jointure n'est spécifié.
 
LEFT [OUTER]  
Indique que toutes les lignes de la table de gauche ne réunissant pas les critères spécifiés sont comprises dans le jeu de résultats en plus de l'ensemble des lignes renvoyées par la jointure interne. Les colonnes de sortie de la table de gauche prennent la valeur NULL.
 
RIGHT [OUTER]  
Indique que toutes les lignes de la table de droite ne réunissant pas les critères spécifiés sont comprises dans le jeu de résultats en plus de l'ensemble des lignes renvoyées par la jointure interne. Les colonnes de sortie de la table de droite prennent la valeur NULL.
 
FULL [OUTER]  
Si une ligne d'une des deux tables ne répond pas aux critères de sélection, cette option spécifie la ligne à inclure dans le jeu de résultats et les colonnes de sortie qui correspondent à l'autre table doivent prendre la valeur NULL. Ceci en plus de toutes les lignes généralement renvoyées par la jointure interne.
 
< join_hint >  
Option de jointure ou algorithme d'exécution. Si <join_hint> est spécifié, INNER, LEFT, RIGHT ou FULL doivent également être spécifiés de manière explicite. Pour plus d'informations sur les indicateurs de jointure, voir FROM.
 
JOIN  
Indique que les tables ou vues spécifiées doivent être jointes.  
ON < search_condition >
 
Indique la condition sur laquelle se base la jointure. Celle-ci peut spécifier tout prédicat, bien que les opérateurs de colonne et de comparaison soient souvent utilisés. Exemple :
 
SELECT ProductID, Suppliers.SupplierID
    FROM Suppliers JOIN Products  
    ON (Suppliers.SupplierID = Products.SupplierID)
 
Lorsque la condition spécifie des colonnes, celles-ci ne doivent pas porter le même nom ou être du même type de données. Cependant, si les types de données ne sont pas identiques, ils doivent être compatibles ou pouvoir être convertis de manière implicite par Microsoft® SQL Server™. Si les types de données ne peuvent pas être convertis implicitement, la condition de jointure doit le faire explicitement à l'aide de la fonction CAST.
 
Pour plus d'informations sur les conditions de recherche et les prédicats, voir Search Condition.
 
CROSS JOIN
 
Spécifie le produit croisé de deux tables. Renvoie les mêmes lignes comme si les tables à joindre étaient simplement énumérées dans la clause FROM et qu'aucune clause WHERE n'était spécifiée. Par exemple, les deux requêtes suivantes renvoient un jeu de résultats qui est une jointure croisée de toutes les lignes de T1 et T2.
 
SELECT * FROM T1, T2
SELECT * FROM T1 CROSS JOIN T2
 
©1988-2000 Microsoft Corporation. Tous droits réservés.


 


Message édité par Arjuna le 29-10-2004 à 16:24:43
Reply

Marsh Posté le 29-10-2004 à 16:21:50   

Reply

Marsh Posté le 29-10-2004 à 20:09:38    

Arjuna a écrit :

Ban nan :D
 
 


"bin" non, "ban" c'est différent.  :D

Reply

Marsh Posté le 29-10-2004 à 23:15:57    

bah voui mais voilà quoi... [:spamafote]

Reply

Marsh Posté le 22-12-2004 à 18:29:43    

bonjour, j'aimerais juste savoir comment est ce que tu as pu etablir une connection a une base mssql ? j'ai pour l'instant fait comme mysql mais les fonction mssql_* ne sont apparement pas reconnues...
merci de votre reponse

Reply

Marsh Posté le 22-12-2004 à 18:31:05    

bonjour, j'aimerais juste savoir comment est ce que tu as pu etablir une connection a une base mssql ? j'ai pour l'instant fait comme mysql mais les fonction mssql_* ne sont apparement pas reconnues...  
merci de votre reponse

Reply

Marsh Posté le 22-12-2004 à 21:48:48    

vi, on avait compris :o ;)
 
euh, déjà, premier truc : ton serveur PHP, c'est toi qui l'a installé avec tes mimines, t'as utilisé un truc tout fait (le truc avec php et mysql + phpmyadmin) ou chez un hébergeur ?
 
parceque à vue de nez, les packages mssql ne sont pas installé, tout simplement. normalement, ils font partie de la distribution standard, mais avec un peu de pas de chance, t'es tombé sur une distrib qui ne supporte que les connection à mysql par exemple :spamafote:
 
ceci-dit, j'y connais pas grand chose à php. j'ai installé ça sous linux un coup, mais vu que j'avais installé nux comme une quiche, je l'ai viré et j'ai refoutu windows. pas eu le temps de creuser php donc. et vu que sous windows y'a iis intégré d'office, je m'emmerde pas à faire du php...

Reply

Marsh Posté le 23-12-2004 à 11:28:10    

bonjour et merci pour ta reponse... :)
 
mon site est heberger chez une hebergeur(OVH) puis en local pour tester je suis sur easyphp 1.6.
 
le but de ce que je souhaite faire est de communiquer la base du site (mysql) avec la base d'un logiciel (mssql) qui est installe sur un serveur local windows NT
 
merci

Reply

Marsh Posté le 30-12-2004 à 22:01:59    

Ca ne m'étonnerais pas qu'OVH bloque leur serveurs Web pour ne se connecter qu'à leur propre base de données. C'est un gouffre de sécurité que de se connecter à une base distante, et un hébergeur de ce type ne peux pas s'amuser à faire du cas par cas pour chaque client...

Reply

Marsh Posté le 01-01-2005 à 05:12:13    

Ok, je te remercie infiniment.
 
Bonne annee ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed