IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Connexion en 1 seul fichier


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut Connexion en 1 seul fichier
    Bonjour le forum,
    Je suis un script qui fonctionne très bien, mais je cherche à l'optimiser.
    J'ai un fichier php que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?php
    try
    {
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=test1', 'root', '', $pdo_options);
     
        $reponse = $bdd->query('SELECT * FROM jeux_video');
     
        while ($donnees = $reponse->fetch())
        {
        ?>
       <div class="toto">
            <h3 class="toto2"><a href="url-<?php echo $donnees['ID']; ?>.php"><?php echo $donnees['valeur']; ?></a></h3>
            <div class="toto3"> 
    <a href="url-<?php echo $donnees['valeur2']; ?>.php"><img src="images/image-<?php echo $donnees['image']; ?>.jpg" width="140" height="140" alt="" class="left" /></a>
    Dans une esprit d'optimisation et de sécurité, je cherche à créer un fichier de connexion à ma base sql, et ensuite d'appeler ce fichier quand j'en ai besoin.
    C'est la ça coince.
    Voici mon fichier de connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    	// ceci est le fichier connexion.php
    	// On définit les 4 variables nécessaires à la connexion MySQL :
    	$hostname = "localhost";
    	$user     = "root";
    	$password = "";
    	$nom_base_donnees = "test1";
     
    	// Connexion permanente au serveur MySQL : mysql_Pconnect
    	$conn = mysql_pconnect($hostname, $user, $password) or die(mysql_error());
     
    	// Choix de la base sur laquelle travailler
    	mysql_select_db($nom_base_donnees, $conn);
    ?>
    J'appelle ce fichier via un include ( include('connexion.php'), mais je ne sais pas ou mettre mes intructions.
    Merci de votre aide :-)

  2. #2
    Membre averti Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Points : 329
    Points
    329
    Par défaut
    Si tu l'include c'est la même chose que si tu l'écrivais dans ton fichier, du coup tu peux accéder directement à toute tes variables.

    Un conseil que je peux te donner, c'est de faire ta connexion via un objet, c'est plus propre et efficace (et facile)

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par Pymento Voir le message
    Un conseil que je peux te donner, c'est de faire ta connexion via un objet, c'est plus propre et efficace (et facile)
    ??? mais encore



    sinon pourquooi y'a un fichier avec PDO et un autre avec Mysql ???

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Merci de votre réponse je vais essayer.
    Par contre j'ai un soucis avec ma db, j'ai le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    // on se connecte à notre base
    $base = mysql_connect('localhost', 'root', '');  
    mysql_select_db ('test1') ;  
    $sql = "SELECT ville FROM infos";
    $resu = mysql_query ($sql);
    $infos = mysql_fetch_array ($resu);
    $ville = $resu['ville'];
    mysql_close($base);
    ?>
     
        <h1 id="logo"><?php echo "$ville";?> </h1>
    Mon echo ne retourne rien :-(
    Ma db s'apelle test1, ma table infos et la colonne qui contient la valeur est "ville".
    Une piste ?

  5. #5
    Membre averti Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Points : 329
    Points
    329
    Par défaut
    sinon tu as MySQLi qui propose apparemment une manip' plus simplifiée.

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par Pymento Voir le message
    sinon tu as MySQLi qui propose apparemment une manip' plus simplifiée.
    quelle manip ??? faut arrête de dire des choses sans rien derrière



    yuyu599 > pour voir les erreurs de mysql il faut faire avant la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('mysql.trace_mode', true);

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    quelle manip ??? faut arrête de dire des choses sans rien derrière



    yuyu599 > pour voir les erreurs de mysql il faut faire avant la connexion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ini_set('mysql.trace_mode', true);
    Merci j'ai rajouter cette ligne juste après "<?php" et j'obtients :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Warning: Unknown: 1 result set(s) not freed. Use mysql_free_result to free result sets which were requested using mysql_query() in Unknown on line 0

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    oui c'est normale, il faut lire la doc de mysql_free_result,
    sinon verifie les valeur de display_errors et de error_reporting dans ton phpinfo

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Cela viens uniquement quand j'utilise cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    // on se connecte à notre base
    $base = mysql_connect('localhost', 'root', '');  
    mysql_select_db ('test1') ;  
    $sql = "SELECT ville FROM infos";
    $resu = mysql_query ($sql);
    $infos = mysql_fetch_array ($resu);
    $ville = $resu['ville'];
    mysql_close($base);
    ?>
     
        <h1 id="logo"><?php echo "$ville";?> </h1>
    Je cherche mais je ne comprend pas pourquoi mon echo est vide

  10. #10
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $resu = mysql_query ($sql);
    $infos = mysql_fetch_array ($resu);
    $ville = $resu['ville'];
    C'est plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ville = $infos['ville'];
    Mais pourquoi tu fais pas une boucle ? tu n'attends qu'un résultat ?

    Sinon quand tu active 'mysql.trace_mode', php va te demander de libérer la ressource. Donc quand tu n'as plus besoin du jeu de résultat tu dois faire mysql_free_result($resu);

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Big merci, cela fonctionne !
    Oui comme je n'attends qu'un résultat je prefère ne pas faire de boucle :-)

  12. #12
    Membre averti Avatar de Pymento
    Homme Profil pro
    Ingé. Info.
    Inscrit en
    Janvier 2008
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingé. Info.

    Informations forums :
    Inscription : Janvier 2008
    Messages : 366
    Points : 329
    Points
    329
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    quelle manip ??? faut arrête de dire des choses sans rien derrière
    y'a google sinon, on est quelques uns à l'utiliser en France, ça marche pas mal tu devrais essayer.

    A partir du moment ou on ouvre une piste sur autre chose que le problème initial, le simple nom de la piste se suffit à lui même, et c'est au demandeur d'aller faire ses recherches, moi je le vois comme ça.
    Après si il vient avec d'autres interrogations vis à vis de la "nouvelle piste" je me ferai un plaisir de l'aider dans la mesure du possible.

    Alors certes mes deux interventions n'étaient pas très exhaustives, mais je vais à l'inverse de ton raisonnement. Vaut mieux ça, que rien.

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Citation Envoyé par Pymento Voir le message
    y'a google sinon, on est quelques uns à l'utiliser en France, ça marche pas mal tu devrais essayer.

    A partir du moment ou on ouvre une piste sur autre chose que le problème initial, le simple nom de la piste se suffit à lui même, et c'est au demandeur d'aller faire ses recherches, moi je le vois comme ça.
    Après si il vient avec d'autres interrogations vis à vis de la "nouvelle piste" je me ferai un plaisir de l'aider dans la mesure du possible.

    Alors certes mes deux interventions n'étaient pas très exhaustives, mais je vais à l'inverse de ton raisonnement. Vaut mieux ça, que rien.
    oui mais la en revanche je vois sur plusieurs topic que tu dis beaucoup d’âneries donc jusqu’à preuve du contraire t'es interversion sont pour le moment inutile et apporte plus de confusion qu'autre chose.

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Hop grace à vous j'avance sur mon script initial et je vous en remercie :-)
    J'ai donc un fichier connexion.php contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    	$hostname = "localhost";
    	$user     = "root";
    	$password = "";
    	$base = "test1";
     
    	$conn = mysql_pconnect($hostname, $user, $password) or die(mysql_error());
    	mysql_select_db($base, $conn);
     
    ?>
    Il me sert à me connecter à ma DB ( j'espère qu'il est correcte et sécurisé mais en tout cas il fonctionne )
    J'appelle ensuite ce fichier quand j'en ai besoin via un "include".
    La ou je bloque c'est sur ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    try
    {
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=test1', 'root', '', $pdo_options);
     
        $reponse = $bdd->query('SELECT * FROM jeux_video');
     
        while ($donnees = $reponse->fetch())
        {
        ?>
    Puisque j'ai un fichier de connexion, inutile de reprendre les infos pour se connecter à la DB, mais du coup, comment faire

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    t'as 2 méthode différentes, donc soit t'utilises mysql_* sois PDO, faut choisir

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Non en faite je crois qu'on s'est mal compris
    J'ai un premier include dans ma page qui appelle le fichier connexion.php contenant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
     
    	$hostname = "localhost";
    	$user     = "root";
    	$password = "";
    	$base = "test1";
     
    	$conn = mysql_pconnect($hostname, $user, $password) or die(mysql_error());
    	mysql_select_db($base, $conn);
     
    ?>
    Ce fichier me sert pour faire autre chose que ce qui va suivre.
    Puis dans cette meme page j'ai le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    try
    {
        $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
        $bdd = new PDO('mysql:host=localhost;dbname=test1', 'root', '', $pdo_options);
     
        $reponse = $bdd->query('SELECT * FROM jeux_video');
     
        while ($donnees = $reponse->fetch())
        {
        ?>
    Mais initialement je n'avais pas de fichier connexion.php donc je devais me connecter à ma db avec ce code. Mais maintenant que le fichier connexion.php existe j'aimerais ne pas réutiliser cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd = new PDO('mysql:host=localhost;dbname=test1', 'root', '',
    Mais c'est la que je bloque

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    ça reviens au même c'est ridicule de faire 2 connexions sur une une même base, et encore plus avec deux extensions différentes, donc c'est bien l'un ou l'autre.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Ok je vous remercie :-)
    Je vais tester cela dans la soirée

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    Re les amis.
    En essayant de remettre en forme le code, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php
    	$hostname1 = "localhost";
    	$user1     = "root";
    	$password1 = "";
    	$base1 = "test1";
     
    	$conn1 = mysql_pconnect($hostname1, $user1, $password1) or die(mysql_error());
    	mysql_select_db($base1, $conn1);
     
     
     
        $reponse = $conn1->query('SELECT * FROM jeux_video');
     
        while ($donnees = $reponse->fetch())
     
        ?>
    Mais j'ai du sauvagement me louper rien de marche :-)
    Si une ame charitable passe par la :-)

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    386
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 386
    Points : 90
    Points
    90
    Par défaut
    J'ai bidouiller encore, j'arrive à me connecter à la base mais je n'arrive pas à afficher les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?php
    // on se connecte à MySQL
    $db = mysql_connect('localhost', 'root', '');
     
    // on sélectionne la base
    mysql_select_db('test1',$db);
     
    // on crée la requête SQL
    $sql = 'SELECT * FROM jeux_video';
     
    // on envoie la requête
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
     
    // on fait une boucle qui va faire un tour pour chaque enregistrement
    while($data = mysql_fetch_assoc($req))
    {
     
    } 
    // on ferme la connexion à mysql
    mysql_close();
    ?> 
     
     
      <span class="box"><?php echo $data['ID']; ?></span>

Discussions similaires

  1. Un seul fichier pour les connexion SQL
    Par camcam8782 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/04/2009, 14h39
  2. [Conception][HSQLDB] Comment gérer une BD comme un seul fichier ?
    Par calogerogigante dans le forum Persistance des données
    Réponses: 7
    Dernier message: 14/03/2006, 16h45
  3. [VB4]Décompresser un seul fichier
    Par Whombat dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/03/2006, 03h24
  4. enregistrer deux fichier dans un seul fichier
    Par Bourak dans le forum Langage
    Réponses: 9
    Dernier message: 05/11/2005, 10h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo