Utiliser les données d'une BDD MySQL dans une TableView
Electrobitch
Membre
Bonjour,
Je pense que le titre est assez clair : j'aimerais mettre dans mon application Cocoa une TableView (ou autre si c'est impossible) qui listerait les données d'une base de données MySQL. Mais je ne sais pas trop comment m'y prendre... Jusque là , j'ai essayé deux frameworks permettant d'interagir avec MySQL : MCPKit et MySQLClasses. Le problème c'est que l'utilisation de MCPKit entraà®ne une erreur à la compilation (cf. ici pour plus de détails) et le second semble bien fonctionner mais mon problème est en fait que je ne sais pas comment les utiliser avec MAMP pour effectuer mes tests en local (j'ai essayé avec un site que j'ai sur 1&1 mais l'accès est refusé; existe-t-il des hébergeurs qui l'acceptent ? si oui, quel critère permet de le savoir ?). Donc je viens vous poser une question qui se résumé à ça : quel est le meilleur moyen, selon vous, de lister les données d'une table d'une BDD ? Est-ce faisable avec une WebView qui chargerait un script HTML contenant les requêtes SQL ?
Merci d'avance de votre aide et excusez ma noobitude, je débute
Je pense que le titre est assez clair : j'aimerais mettre dans mon application Cocoa une TableView (ou autre si c'est impossible) qui listerait les données d'une base de données MySQL. Mais je ne sais pas trop comment m'y prendre... Jusque là , j'ai essayé deux frameworks permettant d'interagir avec MySQL : MCPKit et MySQLClasses. Le problème c'est que l'utilisation de MCPKit entraà®ne une erreur à la compilation (cf. ici pour plus de détails) et le second semble bien fonctionner mais mon problème est en fait que je ne sais pas comment les utiliser avec MAMP pour effectuer mes tests en local (j'ai essayé avec un site que j'ai sur 1&1 mais l'accès est refusé; existe-t-il des hébergeurs qui l'acceptent ? si oui, quel critère permet de le savoir ?). Donc je viens vous poser une question qui se résumé à ça : quel est le meilleur moyen, selon vous, de lister les données d'une table d'une BDD ? Est-ce faisable avec une WebView qui chargerait un script HTML contenant les requêtes SQL ?
Merci d'avance de votre aide et excusez ma noobitude, je débute
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Non, parce que le HTML n'exécute pas de requêtes. C'est un langage de description de pages. Il te faudra forcément passer par PHP ou autre.
Je ne me suis jamais servi de Cocoa pour accéder à une base mySQL, cependant, je l'ai déjà fait en Java. Le serveur PHP / mySQL était pris en charge par MAMP sans difficulté particulière. À toi d'utiliser le débogueur pour faire du pas à pas et voir où ça coince. Les seuls problèmes que j'avais eu était en rapport avec les autorisations sur la base.
Pour ce qui est de MySQLClasses, le débogueur ne peut malheureusement pas m'aider puisqu'il n'y a aucune erreur, c'est juste que la condition que j'ai faite pour m'indiquer l'état de la connexion est négative.
Quand tu demandes à consulter index.php, le script PHP s'exécute pour produire du HTML. Tu peux donc utiliser un script PHP pour produire une page HTML qui va t'afficher le contenu de la table, mais quel intérêt ? Ce n'est pas ainsi que tu vas remplir une NSTableView.
Ta 1ère méthode est la bonne: attaquer la base de données mySQL.
Le framework MYSQL donne accès aux messages d'erreur:
À mon avis, tu as des problèmes d'autorisations sur la base (crée un utilisateur Toto et file-lui tous les droits).
En ajoutant le message de l'erreur, j'obtiens ça :
MySQL error: 2002 - Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
C'est exactement le même message d'erreur que j'avais avec l'autre framework, MCPKit. J'imagine donc que c'est un problème dû au fait que j'utilise MAMP non ?
Il faut peut-être préciser le port (8889 avec MAMP). Je ne peux guère t'aider davantage, mais comme je te le disais, je l'ai fait en Java, ça doit marcher aussi bien. Il y a des spécificités du fait que tu sois en local, mais même un serveur distant est un cas spécifique où il faut mettre le bon nom d'hôte et les bonnes autorisations.
Qu'est ce que tu passes en host ? À mon avis, il faut que tu passe "localhost:8889".
MySQL error: 2002 - Can't connect to local MySQL server through socket '/tmp/mysql.sock'
Et quand je mets "localhost:8889" :
MySQL error: 2005 - Unknown MySQL Server Host 'localhost:8889'
(et c'est bien ce port là )
PS : que tu puisses m'aider ou pas, merci de tes réponses en tout cas !
file:///Applications/MAMP/tmp/mysql/mysql.sock
Il me semble qu'il y a une console dans le terminal avec tout Leopard. Sinon tu pourrais aussi installer la dernière version sur le site de MySQL et tu en auras une, avec une installation béton :-)
http://dev.mysql.com/doc/refman/5.0/fr/mac-os-x-installation.html
L'idée c'est d'être bon dans le terminal avant d'essayer Cocoa ..
J'ai utiliser il y a quelque temps cette méthode et j'ai utiliser MAMP aussi pour les tests (plus facile pour les tests).
Cela fait bien longtemps j'ai plus trop souvenir des méthodes, mais ce qui est sur c'est qu'il faut que tu utilise la méthode ou tu spécifie un socket (vers celui de MAMP) et non un host, car par défaut ton appli va chercher le mysql qui se trouve intégrer dans ton système et pas celui de MAMP.