Comment puis-je faire un fichier de base de données?

  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Avr 28, 2011
  • Messages: 214
  • Loc: Sweden
  • Status: Offline

Message Avril 28th, 2011, 10:46 am

Fondamentalement Im apprendre les classes et la Programmation Orientée Objet, je voulais simplement faire un fichier de base de données de connexion. Cela n'a pas fonctionné alors je suis devenu fou, après ne pas avoir le fichier de travailler si maintenant je suis toucher de l'aide.

Je veux être en mesure de se connecter à ma base de données comme ceci (code ci-dessous étant index.php)

Code: [ Select ]
<?php
include db.php;
dbconnect = new dbconnect("name of somedatabase");
dbconnect->connect();
?>
  1. <?php
  2. include db.php;
  3. dbconnect = new dbconnect("name of somedatabase");
  4. dbconnect->connect();
  5. ?>


Le db. php doit contenir une classe, avec les variables $ host, $ user, $ mot de passe prédéfini et faire un mysql_connect ($ host, $ user, $ password), ce qui semble impossible. Je veux aussi les valeurs de $ host, $ user, $ mot de passe pour pouvoir être remplacées. Et l'installation "dbconnect = new dbconnect (" nom de somedatabase ");" devrait me laisser décider de base de données.

Voici ma db. php qui n'a rien fait:

Code: [ Select ]
<?php

class dbconnect {
var $host= "localhost";
var $user= "root";
var $psw= "myPASS";
var $database = false;

//function to change the default connection
function ChangeData($host, $user, $psw) {
$this->host = $host;
$this->user = $user;
$this->psw = $psw;

}
function connect($db) {
$this->database=$db;
$con= mysql_connect($host, $user, $database);
mysql_select_db("$database", $con);
}
?>
  1. <?php
  2. class dbconnect {
  3. var $host= "localhost";
  4. var $user= "root";
  5. var $psw= "myPASS";
  6. var $database = false;
  7. //function to change the default connection
  8. function ChangeData($host, $user, $psw) {
  9. $this->host = $host;
  10. $this->user = $user;
  11. $this->psw = $psw;
  12. }
  13. function connect($db) {
  14. $this->database=$db;
  15. $con= mysql_connect($host, $user, $database);
  16. mysql_select_db("$database", $con);
  17. }
  18. ?>


»: T_FUNCTION erreur d'analyse, s'attendant» dans C: Parse error \ wamp \ www \ fte \ lib \ db.php sur la ligne 21 "Essayer de faire fonctionner ces fichiers dans un résultat d'erreur disant.
Comment puis-je faire ce travail la façon dont la programmation orientée objet? Im probablement trop compliquer les choses. S'il vous plaît m'aider à ce sujet.
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Avril 28th, 2011, 10:46 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Message Avril 28th, 2011, 6:37 pm

Je vois quelques problèmes dans votre code. La première section de code que vous avez affichée vous êtes absent de votre $ rubriques pour les variables. Donc cette ligne:

PHP Code: [ Select ]
dbconnect = new dbconnect("name of somedatabase");
dbconnect->connect();
  1. dbconnect = new dbconnect("name of somedatabase");
  2. dbconnect->connect();


devraient être:

PHP Code: [ Select ]
$dbconnect = new dbconnect("name of somedatabase");
$dbconnect->connect();
  1. $dbconnect = new dbconnect("name of somedatabase");
  2. $dbconnect->connect();


Le deuxième problème que je vois, c'est que votre fichier de classe qui vous manque la finale } sur votre classe qui est sans doute pourquoi vous avez trouvé une erreur d'analyse sur cette ligne.

Troisièmement je ne vois aucun constructeur dans votre classe depuis que vous êtes désireux d'appeler la classe comme ceci:

PHP Code: [ Select ]
$dbconnect = new dbconnect("name of somedatabase");


Assurez-vous que votre classe dbconnect a un constructeur qui peut prendre la valeur que vous êtes de passage là-bas et le stocker dans une variable privée dans votre classe. Un constructeur par défaut aurait le même nom de fonction en tant que votre nom de classe, dans ce cas vous auriez une fonction dans votre classe dbconnect comme:

PHP Code: [ Select ]
function dbconnect($db) {
   $this->database = $db;
}
  1. function dbconnect($db) {
  2.    $this->database = $db;
  3. }


Assurez-vous de modifier votre fonction communiquer de façon appropriée, que vous ne passez pas toutes les variables à travers cette fonction.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Avr 28, 2011
  • Messages: 214
  • Loc: Sweden
  • Status: Offline

Message Avril 28th, 2011, 6:47 pm

Merci pour vos commentaires. Mais je l'ai réécrit a et je pense que le problème est résolu.

(Ce) est le nouveau index.php:

Code: [ Select ]
<?php
require "db.php";
$dbase = new dbcon("");
$dbase->go();
?>
  1. <?php
  2. require "db.php";
  3. $dbase = new dbcon("");
  4. $dbase->go();
  5. ?>


Et ce db.php être:

Code: [ Select ]
<?php
class dbcon{
    var $con = "";
    var $host = "localhost";
    var $user = "root";
    var $password = "myPASS";
    var $db_name = "test";
    
    //makes it possible to change the default "database"
    function __construct($whatDB) {
    if($whatDB!= "") {
    $this->db_name = $whatDB;
    }
    }

    //connects to the selected database
    function go() {
    $this->con = mysql_connect("$this->host", "$this->user", "$this->password") or die(mysql_error());
    mysql_select_db($this->db_name, $this->con);
    }
}
?>
  1. <?php
  2. class dbcon{
  3.     var $con = "";
  4.     var $host = "localhost";
  5.     var $user = "root";
  6.     var $password = "myPASS";
  7.     var $db_name = "test";
  8.     
  9.     //makes it possible to change the default "database"
  10.     function __construct($whatDB) {
  11.     if($whatDB!= "") {
  12.     $this->db_name = $whatDB;
  13.     }
  14.     }
  15.     //connects to the selected database
  16.     function go() {
  17.     $this->con = mysql_connect("$this->host", "$this->user", "$this->password") or die(mysql_error());
  18.     mysql_select_db($this->db_name, $this->con);
  19.     }
  20. }
  21. ?>


Ne voulant pas renouveler les erreurs, mais au moins je n'ai pas encore de l'essayer encore. S'il ya des suggestions sur la façon d'améliorer et d'optimiser ce code, je serai heureux d'écouter.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Message Avril 28th, 2011, 6:54 pm

En passant, je crois que j'ai ajouté plus à mon poste alors que vous écriviez le vôtre, alors vous voudrez peut-être relire la fin de mon dernier post. Aussi, je viens de faire un peu de recherche et mes méthodes pour le constructeur semble être un peu désuet que cela fonctionnerait pas plus pour PHP 5.3.3 ou supérieur, le meilleur moyen est la façon dont vous le faites avec la méthode __construct.

Cela dit le code réécrit à première vue semble que cela pourrait fonctionner. Dites-nous si vous rencontrez des problèmes.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Avr 28, 2011
  • Messages: 214
  • Loc: Sweden
  • Status: Offline

Message Avril 28th, 2011, 7:22 pm

Bigwebmaster a écrit:
En passant, je crois que j'ai ajouté plus à mon poste alors que vous écriviez le vôtre, alors vous voudrez peut-être relire la fin de mon dernier post. Aussi, je viens de faire un peu de recherche et mes méthodes pour le constructeur semble être un peu désuet que cela fonctionnerait pas plus pour PHP 5.3.3 ou supérieur, le meilleur moyen est la façon dont vous le faites avec la méthode __construct.

Cela dit le code réécrit à première vue semble que cela pourrait fonctionner. Dites-nous si vous rencontrez des problèmes.


J'ai lu tous vos post maintenant. Et j'ai aussi fait quelques tests. Après avoir utilisé la connexion faite par db.php à ma base de données appelée "test", j'ai essayé d'envoyer un mysql INSERT INTO requête (il s'est ajouté). Et puis j'ai essayé de changer une ligne dans mon fichier index.php il a demandé une autre base de données (construite la même chose que "test").

$ Dbase (""); = dbcon nouvelles
est devenu

$ Dbase = dbcon nouvelles ("test2");

Et tout d'un coup je pourrais ajouter des choses à la base de données "test2" à la place! :D Jusqu'à présent, aucun bugs que j'ai repéré!
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8922
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Online

Message Avril 28th, 2011, 11:15 pm

C'est génial! Excellent travail, se sent bien quand les choses fonctionnent vraiment, hein ;)
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Avr 28, 2011
  • Messages: 214
  • Loc: Sweden
  • Status: Offline

Message Avril 29th, 2011, 11:36 am

Bigwebmaster a écrit:
se sent bien quand les choses fonctionnent vraiment, hein ;)



OFC, code de travail a été l'objectif. :wink:

Afficher de l'information

  • Total des messages de ce sujet: 7 messages
  • Utilisateurs parcourant ce forum: webspace et 131 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC