Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction connexion bdd paramétrable

Sujet résolu
    18 février 2011 à 14:35:30

    Bonjour ! Je voulais me faire une petite procédure pour me connecter a ma base mysql de cette forme :

    <?php function connexion_bd($host, $dbname, $login, $mdp)
    	{
    		try
    		{
    			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
    			$bdd = new PDO('mysql:host='$host';dbname='$dbname'' , $login , $mdp , $pdo_options);
    		}
    		catch (Exception $e)
    		{
    			die('Erreur : ' . $e->getMessage());
                    }
    	}
    


    Mais, ça ne marche pas, et je me tape cette erreur :
    Parse error: syntax error, unexpected T_VARIABLE in C:\wamp\www\Blog\fonction.php on line 7

    J'ai vu sur le net une syntaxe similaire à ça :
    <?php $bdd = new PDO('mysql:host='.$host.';dbname='.$dbname.'' , $login , $mdp , $pdo_options);
    


    Mais cette fois, j'ai l'erreur suivante :
    Undefined variable: bdd in C:\wamp\www\Blog\ndex.php on line 15
    Et
    Fatal error: Call to a member function query() on a non-object in C:\wamp\www\Blog\ndex.php on line 15


    Je dois avouer que je bloque :lol:

    PS : Voila ndex.php :
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    		<title>Document sans titre</title>
    		<link rel="stylesheet" media="screen" type="text/css" title="css" href="css.css"/>
    		<?php include 'fonction.php'?>
    	</head>
    	<body>
    
    		<?php connexion_bd('localhost' , 'blog' , 'root' , '') ?>
    
    		<div class="news">
    			<?php 
    				$news=$bdd->query('SELECT * FROM article ORDER BY id DESC LIMIT 0,5');
    				while ($donnee=$news->fetch())
    				{?>
    				
    					<h1> <?php echo htmlspecialchars($donnee['titre'])?> </h1>
    					<h3> <?php echo htmlspecialchars($donnee['date_article'])?></h3>
    					<p> <?php echo htmlspecialchars($donnee['corps'])?></p>
    					
    				<?php
    				}
    				$news->closecursor();
    			?>
    		</div>
    		
    	</body>
    </html>
    


    EDIT :
    Ah, mais je crois que je me démène inutilement xD. Si je ne m'abuse, le "try ...catch" englobe tout le programme ! Donc, ça sert à rien de faire une fonction en fait ...

    Mais pourquoi ça ne marche pas ?
    • Partager sur Facebook
    • Partager sur Twitter
      18 février 2011 à 15:14:40

      C'est pas comme ça qu'il faut faire ... ^^
      Revoie le chapitre sur la portée des variables ...
      Une variable déclaré dans une fonction n'est pas accessible au dehors ...
      Ce qu'il faut que tu fasse, c'est faire return $bdd à la fin de ta fonction
      <?php function connexion_bd($host, $dbname, $login, $mdp)
      	{
      		try
      		{
      			$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
      			$bdd = new PDO('mysql:host='.$host.';dbname='.$dbname , $login , $mdp , $pdo_options);
      
      return $bdd;
      		}
      		catch (Exception $e)
      		{
      			die('Erreur : ' . $e->getMessage());
                      }
      	}
      ?>
      

      Et dans ton index.php

      <?php
      $bdd=connexion_bd('localhost' , 'blog' , 'root' , '');
      ?>
      


      Voilà ... :)

      EDIT

      Citation


      Ah, mais je crois que je me démène inutilement xD. Si je ne m'abuse, le "try ...catch" englobe tout le programme ! Donc, ça sert à rien de faire une fonction en fait ...


      Si, ça peut être utile ... try .. catch servent à capturer les erreurs ...
      Mais il y a mieux à faire qu'une fonction. Simplement, tu fait une page connect.php , et là, tu fais ta connexion ...
      Ensuite, pour créer un connexion à la bdd, tu fais include('connect.php');
      C'est très pratique, sans compter que tu peux metre plein d'autre choses dans cette page.
      Moi j'ai un page début.php. Elle contient tout, session_start(), la connexion à la bdd, mes fonctions et constantes personnelle, l'en tête HTML etc.
      Pour un gros site, c'est très très pratique ce genre de chose ...
      • Partager sur Facebook
      • Partager sur Twitter

      Fonction connexion bdd paramétrable

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown