Problème de connextion et requête

Signaler
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010
-
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
-
bonjour à tous,

je remercie
sidf pour sa réponse à ma précédente question, cependant je suis bloqué depuis plusieurs jours
et je n'arrive plus a avancer : je fais actuellement une petite
application en php/mysql pour tester des requêtes et je cherche de
l'aide; bien sur je ne ne demande pas que quelqu'un fasse le travail à
ma place, mais j'ai quand même besoin d'aide (après avoir cherché moi
même) serait t il possible de passer l'application complète, elle n'est
pas très grosse mais elle risque d'encombrer le forum.

Je vous remercie d'avance de votre réponse.

18 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,

explique d'abord quel est le problème, et au lieu de passer ton applicatiopn complète, donne la partie qui pose problème.
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

mon problème est la connexion mysql :

la première page de mon appli est un formulaire de connexion :

champ - serveur

champ - user

champ - password

champ - db

et un bouton de connexion



sur le bouton connexion j'accède à la page trait_connect.php

ci-après voici le script de la page connection :

<?php

session_start();

// fichier de langues

// file of languages

include('inc/langues.php');



// création de la variable de page pour la redirection après le script

// creation of the variable of page for the redirection after script

$st = 'index.php';







if(!empty($_POST['connecter']) && $_POST['connecter'] == $lang[4][$_SESSION['lg']]){

if(!empty($_POST['server']) && !empty($_POST['user']) && !empty($_POST['db'])){



// création des variables $_SESSION égales aux variables du formulaire de la page index.php

// creation of the variables $_session equal to the variables of the form of the index.php page

$_SESSION['server'] = $_POST['server'];

$_SESSION['user'] = $_POST['user'];

$_SESSION['pw'] = $_POST['pw'];

$_SESSION['db'] = $_POST['db'];

// connection

$connection = mysql_connect($_SESSION['server'],$_SESSION['user'],$_SESSION['pw']);

mysql_select_db ($_SESSION['db']);





// permet la redirection vers requete.php

// the redirection allows towards requete.php

$st = 'requete.php';

}

else{

// création d'un message d'erreur

// creation of an error message

$_SESSION['erreur'] = $erreur[0][$_SESSION['lg']];

}

}



// header

header("location:".$st."");

?>



// si je ne remplis rien dans les champs : j'ai un message d'erreur sur
ma première page(c'est effectivement ce que j'attends) mais si je
remplis n'importe quoi dans les champs j'ai une foule de message
d'erreurs.

Par contre si je remplis correctement, je peux acceder à ma page
requête, et en indiquant une requête correcte, j'ai les message
d'erreurs suivants :

Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in c:\essai\trait_requete.php on line 45





Warning: mysql_query(): A link to the server could not be established in c:\essai\trait_requete.php on line 45





Warning: Cannot modify header information - headers already sent by (output started at c:\essai\trait_requete.php:45) in c:\essai\trait_requete.php on line 66



Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in c:\essai\trait_requete.php on line 45





Warning: mysql_query(): A link to the server could not be established in c:\essai\trait_requete.php on line 45





Warning: Cannot modify header information - headers already sent by (output started at c:\essai\trait_requete.php:45) in c:\essai\trait_requete.php on line 66

Voila pour l'instant toute l'ampleur de mon problème.et ça me dépasse.........

voila ce que c'est d'être un gros débutant (98 kilos).
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Ben la connexion échoue. Vérifie les paramètres que tu passes à ta connexion bdd. C'est elle qui foire en premier.

Le headers already sent, c'est normal là : des messages d'erreur sont affichés AVANT que ton header (); donc tu ne peux envoyer à nouveau des entêtes.
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
"Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in c:\essai\trait_requete.php on line 45"

Tu as du te tromper lors de l'appel de mysql_connect().

"Warning: mysql_query(): A link to the server could not be established in c:\essai\trait_requete.php on line 45" C'est ce que je dis au dessus

"Warning: Cannot modify header information - headers already sent by (output started at c:\essai\trait_requete.php:45) in c:\essai\trait_requete.php on line 66" Problème de headers ... voir tuto.

"Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in c:\essai\trait_requete.php on line 45" Meme combat qu'au dessus.
"Warning: mysql_query(): A link to the server could not be established in c:\essai\trait_requete.php on line 45" On se la refait encore !

"Warning: Cannot modify header information - headers already sent by (output started at c:\essai\trait_requete.php:45) in c:\essai\trait_requete.php on line 66" Et encore une fois !

c'est ton mysql_connect() qui merde.
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

il me semblait bien que ma connexion échouait mais ce que je comprends
pas c'est pourquoi en entrant des paramètres corrects j'accède quand
même à ma page de requête.

Est ce qu'il faut que je gère d'abord les erreurs de connexion ? mais comment le faire ?
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Si je pige bien :
- tu fais entrer les paramètres
- tu vérifies que ça marche en faisant un mysql_connect() avec..;et en sélectioonnant la bdd...
- tu rediriges vers la page de 'requettage'...
...
sur cette page, par hasard, tu fais quoi au juste...? Tu as un autre mysql_connect()...?
Parce qu'une connexion mysql se ferme automatiquement à la fin d'un script. Et la fin d'un script, c'est, part exemple, la fin d'une page...quand tu rediriges, tu changes de 'page'. Bref : ta connexion est refermée...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Salut FhX au passage, ça va ? :-)
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

reponse à FhX, comme je viens de le dire, il me semblait que
c'est ma connexion qui déconne, ce n'est pourtant pas la première fois
que je fais une connexion à mysql, mais là je n'y arrive pas depuis des
jours et des jours.......je ne dois pas la faire pour l'instant au
moyen d'une fonction, et je suis un peu perdu , puis je avoir un
peu d'aide supplémentaire sur cette connextion (un squelette de code ?).

Merci
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

réponse à malalam:

effectivement sur ma page de requêtage je n'ai pas de nouvelle connection,

j'ai seulement un texte aréa pour écrire une requête (essentiellement un select )

si je comprends bien il faut que je récupére ma variable de connection pour l'utiliser à nouveau sur ma page requete.php



- ma page requete, tout comme ma page trait_connect débute par session_start()...
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Il faut que tu te connectes à ta bdd. Sur une nouvelle page, tu dois te reconnecter si tu veux effectuer des requêtes.
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

je comprends bien : pour effectuer les requêtes il faut une connexion,
mais y a t il un moyen de transmettre cette connexion de page en page,
car sur les pages suivantes (archivage des requêtes, journal, nouvelle
requête etc... j'ai prévu une deconnexion par destruction de la
variable de session (session_destroy()).
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

je passe ma page trant_requet.php, là ou je traite ma requête,

je suppose qu'il y manque une nouvelle connection,

(par ailleurs je n'ai pas encore abordé le traitement sur x requêtes (entre 1000 et 50 000)

ni la récupération du temps d'éxécution, qui seront d'autres sources de problèmes).



<?php

session_start();

// fichier de langues

// file of languages

include('inc/langues.php');

// création de la variable de page pour la redirection après le script

// creation of the variable of page for the redirection after script

$st = 'requete.php';



//gestion des messages d'erreur

//management of the error messages

if(!empty($_SESSION['erreur'])){

echo $_SESSION['erreur'];

//initialisation du message d'erreur

//initialization of the error message

$_SESSION['erreur'] = '';

}





// teste si le bouton submit de form "requete" existe et si sa valeur
est strictement égale à la variable: "$lang[7][$_SESSION['lg']]"



// tests if the button submit form "requete" exists and if its value is
strictly equal to the variable: "$$lang[7][$_SESSION['lg ' ] ]"



// vérifie si le textarea de la requete est rempli

// check if the textarea requete is filled



// transtypage de nbre de requete -> si oui on continue le script

// transtypage of a number of requete - > so yes script is continued



if(!empty($_POST['soumettre']) && $_POST['soumettre'] ==
$lang[7][$_SESSION['lg']] && !empty($_POST['text_requet'])
&& settype($_POST['nb_test'],'integer')){

// teste si nombre boucle < 1000

// test if a number buckles < 1000

if($_POST['nb_test'] < 1000) $_POST['nb_test'] = 1000;

// teste si nombre boucle > 50000

// test if a number buckles > 50000

if($_POST['nb_test'] > 50000) $_POST['nb_test'] = 50000;

// creation des variables de session égales au formulaires de la page requête.php

// creation of the variables of session equal to the forms of the requête.php page

$_SESSION['text_requet'] = $_POST['text_requet'];

$_SESSION['nb_test'] = $_POST['nb_test'];



// teste la requete sur le nombre de boucles

// test the requete on the number of loops

$query = $_SESSION['text_requet'];

$result = mysql_query($query);



// redirection vers la page de resultats

// redirection towards the page of results

$st = 'result_requet.php';

}



// traitement du bouton effacer (si le bouton effacer existe et strictement égal à variable de session langue 8

// treatment of the button to erase (if the button to erase exists and strictly equal to variable of session language 8

else if(!empty($_POST['effacer']) && $_POST['effacer'] == $lang[8][$_SESSION['lg']]) {

$_SESSION['text_requet'] = '';

$_SESSION['nb_test'] = '';



}

else {

$_SESSION['erreur'] = $erreur[1][$_SESSION['lg']] ;

}







// header

header("location:".$st."");

?>
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
un mysql_connect() renvoie une ressource :
http://fr.php.net/manual/fr/function.mysql-connect.php

C'est cette ressource que tu dois trimballer, alors.

Ahem...
Ton application est l'exemple typique où on a tout inytérêt à utiliser une classe d'abstraction de bdd...tu sais.
regarde les sources, la dernière postée, par FhX d'ailleurs. Elle est exellente, et tu gagnerais à t'en servir.
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

merci, je vais aller voir sur php.net/manual....

Par ailleurs, bien que débutant j'ai déjà aperçu qu'il serait préférable d'utiliser des classes,

mais je ne sais pas encore le faire, et j'ai peu de temps il faut que
je finisse cette appli avant la fin du mois, sachant que j'aurais aussi
à factoriser tout ce qui peut l'être. j'ai très peur de ne pas y
arriver pour présenter mon rapport de stage.......



omment s'appelle la source de FfX ?
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
http://www.phpcs.com/code.aspx?ID=35488

Utilise la mienne dans ce cas la.
L'exemple d'utilisation est marqué sur la page d'acceuil du script.

Cependant, toutes les fonctions mysql ne sont pas représentées dans la classes. Si tu en a besoin d'autres, soit tu me le demandes (je le rajouterai au passage), soit tu le fais toi même en prenant exemple sur ce que j'ai déja fait.

Par contre, une connection ne peut pas se trimballer de page en page. La connection se coupe d'elle même à la fin de ta page, et tu dois la rappeler lors de la nouvelle page.
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
PHP5 Couche d'abstraction SGBD, c'est la 1ère en haut de la liste pour aujourd'hui.
Messages postés
46
Date d'inscription
jeudi 10 mars 2005
Statut
Membre
Dernière intervention
13 septembre 2010

Merci, grand merci à tous les deux malalam et FhX, je vais essayer de
continuer. Si il y a des trucs que je ne comprends pas, je reviendrai
ver vous (sans abuser)

Et si j'arrive au bout, je vous adresserai cette appli terminée.même si
ce n'est pas d'un haut niveau, ne serait ce que pour voir votre
contribution.

Encore merci et à bientot.
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
4
:)

Au faite, bonjour Malalam ! ( ouh la, j'ai quelques posts de retard moi :p )