Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/04/2011, 15h08   #1
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
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 :
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 :
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 :-)
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 15h39   #2
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
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)
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/04/2011, 16h12   #3
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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 ???
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 16h19   #4
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
Merci de votre réponse je vais essayer.
Par contre j'ai un soucis avec ma db, j'ai le code :
Code :
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 ?
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 16h21   #5
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
sinon tu as MySQLi qui propose apparemment une manip' plus simplifiée.
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 16h55   #6
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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 :
ini_set('mysql.trace_mode', true);
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h07   #7
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
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 :
ini_set('mysql.trace_mode', true);
Merci j'ai rajouter cette ligne juste après "<?php" et j'obtients :
Code :
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
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h14   #8
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h20   #9
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
Cela viens uniquement quand j'utilise cela :
Code :
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
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h23   #10
Membre Expert
 
Inscription : septembre 2010
Messages : 1 242
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 1 242
Points : 1 564
Points : 1 564
Code :
1
2
3
$resu = mysql_query ($sql);
$infos = mysql_fetch_array ($resu);
$ville = $resu['ville'];
C'est plutôt
Code :
$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);
__________________
- Réalisations
- Interface graphique : génération en javascript d'objets défilants, texte et/ou images, mode horizontal ou vertical.
ABCIWEB est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/04/2011, 17h28   #11
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
Big merci, cela fonctionne !
Oui comme je n'attends qu'un résultat je prefère ne pas faire de boucle :-)
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h33   #12
Membre confirmé
 
Avatar de Pymento
 
Homme
Ingé. Info.
Inscription : janvier 2008
Messages : 338
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 24
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingé. Info.

Informations forums :
Inscription : janvier 2008
Messages : 338
Points : 273
Points : 273
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.
__________________
Memento Quia Pulvis Es, Et In Pulverem ReverteriS
Pymento est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h44   #13
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
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.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h51   #14
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
Hop grace à vous j'avance sur mon script initial et je vous en remercie :-)
J'ai donc un fichier connexion.php contenant :
Code :
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 :
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
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 17h56   #15
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
t'as 2 méthode différentes, donc soit t'utilises mysql_* sois PDO, faut choisir
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 18h06   #16
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
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 :
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 :
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 :
$bdd = new PDO('mysql:host=localhost;dbname=test1', 'root', '',
Mais c'est la que je bloque
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 18h11   #17
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
ç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.
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 18h21   #18
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
Ok je vous remercie :-)
Je vais tester cela dans la soirée
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h16   #19
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
Re les amis.
En essayant de remettre en forme le code, j'ai fait ceci :
Code :
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 :-)
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/04/2011, 21h34   #20
Membre du Club
 
Inscription : juin 2007
Messages : 336
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 336
Points : 48
Points : 48
J'ai bidouiller encore, j'arrive à me connecter à la base mais je n'arrive pas à afficher les données :
Code :
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>
yuyu599 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h49.


 
 
 
 
Partenaires

Hébergement Web