akamaru

Prob Php&sql

Messages recommandés

Salut à tous,

j'espère que mon poste ne fait pas tache dans cette section,

mais malgrés de longue recherche sur le net

voila plusieurs semaines que je bute sur un problème sql.

En effet je débute en php et sql et dans le cadre de ma scolarité je dois faire un site contenant une base de donnée.

Le site et la base de donnée ont été réalisés sans problème,

par contre je suis dans l'incapacité d'afficher ma base de donnée sur mon site.

Pourtant cela ne me paraissait pas dément.

Tout est en local et j'utilise wamp et sql server 2005

1.jpg

2.jpg

3.jpg

En espérant que quelqu'un pourra me montrer mon erreur.

Merci d'avance.

Partager ce message


Lien vers message
Partager sur d'autres sites

Lo,

Dans le connect il me semble qu'il faut mettre juste "mysql_connect(machine, user,passwd)"

Donc en l'occurence il faudrait que tu mettes :

$host = "PC-De-Pascal"; $user = "sa";$password = "xxxxx"; $base=mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");

Je dis peut être n'importe quoi car cela fait 4 ans que je n'ai pas touché à du PHP / SQL j'en ai fait très vite fait lors de mon BTS .

++

Partager ce message


Lien vers message
Partager sur d'autres sites

Salut,

Tu utilises mysql_connect pour te connecter a un serveur MSSQL ? :oki:

Essais avec mssql_connect ce sera déjà un mieux et change toutes tes instructions parce que tu utilises sont celles de MYSQL au lieu de ceux de MSSQL.

Modifié par erwan2004

Partager ce message


Lien vers message
Partager sur d'autres sites

Bien vu erwan2004 :D .

Akamaru je ne connais pas les impératifs que t'imposes tes profs mais si tu veux éviter de te prendre la tête je te conseille EasyPHP pour Windows. Ca contient un Apache et un MySQL parfaitement configuré.

++

Partager ce message


Lien vers message
Partager sur d'autres sites

Salut et merci pour vos réponses,

ué je travaille avec sql server 2005 en cours,

donc de préférence je préfère rester dessus.

Suite à vos remarque j'ai tout refait à partir d'un exemple pour sql server

mais cela ne fonctionne toujours pas. crying

j'ai donc deux pages

affichage

5.jpg

l'ouverture avec wamp me donne une page blanche.

Puis la seconde page

select

4.jpg

la le message sous wamp est:

6.jpg

voila si quelqu'un à une méthode qui marche ou plus simple si cela existe :blink:

sinon je me pencherai sur la proposition de Schumpopo.

Merci pour votre aide chinese

Modifié par akamaru

Partager ce message


Lien vers message
Partager sur d'autres sites

Salut,

dans mssql_connect()

pour ton serveur essai de mettre localhost ou 127.0.0.1

donc en gros, marque

$host = "localhost";

Je ne vois pas trop pourquoi tu mes des fonctions partout aussi... essai de faire simple et de mettre tout sur la meme page..

Modifié par Thony

Partager ce message


Lien vers message
Partager sur d'autres sites

donc dans "affichage" j'ai change server=PC-de-pascaletc par localhost.

Aucun changement.

Partager ce message


Lien vers message
Partager sur d'autres sites

hééé akamaru tu t'relis parfois?

regarde le nom de ta fonction !

"connecxionBD()", comme ça que tu le declares...

après dans l'autre page tu fais

"ConexionBD()"

connecxionBD(), ConnexionBD()... tu vois pas l'erreur?

Surtout que l'erreur donné par PHP est assez explicite !

"Call to undefined funtion ConnexionBD()..."

non tu vois toujours pas?

Partager ce message


Lien vers message
Partager sur d'autres sites

oui merci plopy mon acuité visuel est très diminué après une longue journée de cours.

j'ai corrigé il me unable to connect to server localhost

Modifié par akamaru

Partager ce message


Lien vers message
Partager sur d'autres sites

si pourtant

j'ai refais un code plus petit même résultat

<?php

$server="PC-de-PASCAL\MSSMLBIZ"; //le nom du serveur sur lequel tourne SQLserver

$username="sa"; //le username SQL

$password=""; //le password SQL

$sqlconnect = mssql_connect($server, $username, $password);

$sqldb=mssql_select_db("LECAPVERT",$sqlconnect);

$sqlquery="SELECT nom_île FROM île;";

?>

Modifié par akamaru

Partager ce message


Lien vers message
Partager sur d'autres sites

Franchement, pour un projet de ce genre, passe par un easyPhp sur Windows avec une base de données MySQL. Tu ne devrais avoir aucun souci et ça sera beaucoup plus documenté que le couple PHP+SQL Server.

Autres conseils :

. toutes tes bases de données, nom de table, nom de champ, clé... doivent êter en minuscules. Quand tu connaitras sur le bout des doigts les ISO, UTF-8 et consorts, tu pourras commencer à faire de l'exotique. Pas avant. Et pour info, même ceux qui connaissent ça au poil gardent la notation minuscule avec underscore ( le caractère '_' ) pour séparer les mots. C'est une convention et ça rendra tes développements plus lisibles.

. idem avec les caractères accentués. Tu veux écrire "île" dans une base de données ? Tu écris "ile" et tu ne t'en porteras que mieux. Autre convention : on fait souvent tout en anglais. Donc ton champ devrait s'appeler 'island_name'.

. idem avec tes noms de variables en PHP : on supprime tous les caractères spéciaux pour ne pas se poser de problèmes inutiles (surtout que je te promets, pour l'avoir fait moi meme, que tu ne veux vraiment pas essayer de résoudre ce genre de problèmes...)

. quand tu ouvers une connection en fonctionnel (donc pas en objet), utilises le "or die()" qui te donnera des informations sur la nature de l'erreur.

. penses à toujours fermer les connections que tu ouvres. Aujourd'hui c'est peut-être pas utile sur ton projet mais c'est une bonne habitude à prendre dès le début.

. quand tu fais une query (avec mssql ou mysql), penses à bien passer le link en paramètre. Sans ça, ouvrir ta connection avant ça perd de son sens étant donné que tu vas devoir d'abord devoir interroger ton SGBD pour savoir si une connection est déjà ouverte. Et hop : perte de performances (et surtout perte de maintenabilité !)

. indentes ton code : tu gagneras en lisibilité. Sur 5 lignes, ce n'est rien. Sur un fichier de 200 lignes, ça change pas mal de choses ;)

. quand tu donnes des exemples de code, prends le temps de faire un copier/coller dans une balise "code" plutot que de faire un screenshot. Ca facilitera la vie de tes correcteurs :)

. php.net et les tutos de developpez.com sont tes amis. Utilises les sans hésiter. Ce sont des mines d'or.

. pour faire du dev, Linux est souvent une bien meilleure plateforme. Mais ça, c'est plus un avis personnel et ça dépend complètement du dev. Maintenant, pour développer un site web, Linux est bien plus intéressant étant donné qu'il y a de grandes chances que tes projets professionnels finissent sur des serveurs Apache (donc sur Linux).

. pour faire du dev, tu as intérêt à apprendre à te servir d'un moteur de recherche. De deux choses l'une : soit tu racontes n'importe quoi, soit tu ne sais pas te servir d'un moteur de recherche => des semaines de recherche pour arriver avec un code qui contient des appels à MySQL alors que ton SGBD est SQL Server ? Le problème est vraiment gros. De plus, si j'avais une question technique à poser sur du dev Php/Mysql, Gueux serait le dernier endroit où je posterais : tu as des centaines de forums dédiés à ça et tu viens poster ta question sur un formum dédié au hack des consoles ? Ca va que c'est un sujet générique. Mais tu n'auras aucune réponse quand tu viendras poser des questions sur le couple XML/XSLT, sur du Struts, du Cocoa, ... Chaque forum a sa spécialité. N'hésites pas à en utiliser plusieurs :)

Partager ce message


Lien vers message
Partager sur d'autres sites

merci d'avoir pris le temps de me répondre, Fornorst

j'ai bien pris note de tes remarques.

donc j'ai refait un code qui comporte aucune erreur selon mon prof de dev et mes collègues de classe.

<?php

function teste()

{

$server="PC-DE-PASCAL\MSSMLBIZ";

$username="sa";

$password="";

$sqlconnect = mssql_connect('PC-DE-PASCAL\MSSMLBIZ', 'sa', '');

$sqldb=mssql_select_db("lecapvert",$sqlconnect);

return $sqlconnect;

}

if(teste())

{

echo'CONNEXION REUSSI';

}

else

{

echo'CONNEXION ECHOUEE';

}

?>

Pourtant cela ne marche toujours pas (unable to connect)

Le prob doit venir de wamp ou de sql.

Wamp me donne un warning easyphp un fatal error.

je vais donc tester tout cela sur une autre machine.

Merci

Modifié par akamaru

Partager ce message


Lien vers message
Partager sur d'autres sites

Si ton prof de dev trouve ça OK, pourquoi pas mais faut pas qu'il fasse du dev alors ! Ton "if(teste())" marche peut-être (ah la magie du typage faible en PHP...) mais c'est une très mauvais chose de faire ça. Un "if" doit tester si une condition est remplie ou non, donc si le booléen résultant de l'interprétation de la condition vaut "true". Toi, tu ne testes pas un booléen : tu testes un objet de "type" link. Alors, OK ça marche en PHP mais c'est la meilleure façon de se tromper. Autre souci : mets donc un espace entre tes "echo" et ce qui doit être imprimé. Ca t'évitera des soucis. Dernier point : ton indentation est toujours mauvaise (quoique c'est en partie peut-êter dû au forum) : laisses 3 ou 4 espaces blancs en début de ligne dans tes blocs. Et mets tes accolades ouvrantes sur la même ligne que le début du bloc : tu gaspilles une ligne pour rien donc tu vois moins de code fonctionnel par écran et tu devras scroller sans arrêt pour lire ton code.

Pour ton problème à proprement parler, il y a fort à parier que ton serveur SQL Server est mal configuré (ou alors que tu connais mal sa conf). Essaie de vérifier si le port qu'écoute ton SQL Server est le meme que celui utilisé par défault par mssql_connect. Je parie pour une erreur de ce type. Par exemple, MySQL est le plus souvent configuré pour taper sur le port 3306. Je ne sais pas sur quel port SQL Server écoute. A toi de vérifier. Auter conseil : utilise "localhost" comme hôte si tu es en local. Deux raisons :

1. Ca t'évitera de devoir faire une requête sur le réseau (en fait, sur la couche réseau de Windows) pour savoir quel est le véritable hostname associé à cette machine.

2. Si tu passes par le réseau, tu vas passer par ta carte réseau et donc tu ne seras pas vu comme te connectant en local. Résultat : il faudra que tu ajoutes les accès à ton utilisateur "sa" pour se connecter depuis '*' et pas seulement depuis "localhost" d'où une configuration supplémentaire à faire.

Conseil : dans ce genre de cas où tu as des soucis à te connecter à ta base, les étapes à réaliser sont :

. vérification que le SGBD est bien lancé (un bon vieux "ps -edfH | grep mysqld" sous Linux fait parfaitement l'affaire par exemple)

. vérification du port

. création (temporaire) d'un user avec tous les droits, sans mot de passe et qui peut se connecter depuis n'importe où (donc pas que depuis localhost).

Une fois que t'arrives à te connecter à ta base, tu essaies de réduire les droits : ajout d'un mot de passe, limitation à localhost, ... Ca te permettra de trouver ta panne assez rapidement. Mais je te le redis : pour ce genre de souci : easyPhp avec utilisation d'une base mysql. Pour lancer un projet de website rapidement, il n'y a pas mieux. J'utilise encore ça (le couple PHP/MySQL) assez régulièrement pour prototyper de nouvelles features demandant un minimum de dynamique coté serveur et ça marche du tonerre.

Edit : pendant que j'y pense : dans ton nom d'host, tu as le caractère '\' qui est souvent un caractère d'échappement, qu'il faut donc... échapper lui aussi. En gros, essaie

$server="PC-DE-PASCAL\\MSSMLBIZ";plutot que$server="PC-DE-PASCAL\MSSMLBIZ";

sinon PHP risque de croire que tu veux faire un '\M' (si ça existe). Encore un point qui milite pour ne pas utiliser des noms d'host Windows, surtout quand tu es en localhost.

Partager ce message


Lien vers message
Partager sur d'autres sites

ok merci beaucoup pour ta réponse.

je vais tenter de vérifier tout cela pendant le week.

j'ai entre temps désactivé le pare feu et remplacé une dll (ntwdblib)

Mais j'ai toujours le même résultat.

pour le moment dans sql server configuration j'ai

SQL Server(MSSMLBIZ) En cours d'éxécution

SQL Server (SQLEXPRESS arrêté

SQL Server Browser En cours d'éxécution

pour vérifier les ports je sais pas comment faire la seul information que j'ai trouver pour le moment est

dans configuration sql native client tcp ip port 1433.

je retourne à ma recherche

A bientôt.

Modifié par akamaru

Partager ce message


Lien vers message
Partager sur d'autres sites

Installes easyPhp et utilise le MySQL de base fourni avec. Tu iras bien plus vite à passer ton schéma relationnel sous MySQL qu'à comprendre comment fonctionne SQLServer. Et pour un projet de cette nature, surtout si le SGBD n'est pas imposé, MySQL est largement le meilleur choix.

Partager ce message


Lien vers message
Partager sur d'autres sites

Effectivement cela fonctionne avec easyphp.

Merci beaucoup pour votre aide,

plus particulièrement Fornorst chinese

Partager ce message


Lien vers message
Partager sur d'autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant