Prob avec fonction de connection

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Prob avec fonction de connection

par Sékiltoyai » 18 mai 2007, 12:11

Pour la portée des variables, tout est expliqué ici : http://fr2.php.net/manual/fr/language.v ... .scope.php

par supercanard » 18 mai 2007, 12:04

je viens enfin d'y arriver et de comprendre :

Code : Tout sélectionner

$servmysql= 'blabla'; //global $servmysql; $usermysql= 'k_base'; //global $usermysql; $passmysql= 'zoup'; //global $passmysql; $basemysql= 'k_base'; //global $basemysql; function connect($servmysql,$usermysql,$passmysql,$basemysql) { mysql_connect($servmysql,$usermysql,$passmysql); mysql_select_db($basemysql); } connect($servmysql,$usermysql,$passmysql,$basemysql);
Même pas besoin de déclarer les variables globales, ça marche comme ça :D
Ca à été laborieux, ça me parrait logique maintenant...

par supercanard » 18 mai 2007, 11:32

Merci je vais regarder ça =)

Autre chose sur lequel je pinaille, alors que je fait exactement ce qui est noté sur la doc pour la rcupération du nombre de lignes :

Code : Tout sélectionner

$req = "SELECT id,produit,img FROM trucs"; $result= mysql_query($req); $num= mysql_num_rows($result); echo $num; $nb= rand(1,$num); echo $nb;
Ce qui me renvois cette erreur : Warning: mysql_num_rows(): supplied argument is not a valid MySQL

par Sékiltoyai » 18 mai 2007, 01:35

Quand tu appelles les fonction mysql_connect() ou mysql_select_db(), tu les appelles sans arguments ? En fait, php n'est pas devin, il n'est pas encore capable de deviner les arguments des fonctions tout seul, donc de la même manière qu'aux fonctions prédéfinies, tu passes des arguments, tu dois aussi en passer dans tes propres fonctions.

Prenons une fonction qui aura été définie ainsi :
function machin($arg1, $arg2)
{
return arg1*$arg2;
}
Elle devra être appelée ainsi :
$truc=machin($var1, $arg2);
Ou bien ainsi :
echo machin(5, 6);
Et comme tu as vu, le nom des arguments n'a aucune influence. C'est à dire que les arguments de la fonctions sont des variables qui n'existent que dans la fonction :
function machin($arg1)
{
echo $arg1; // OK, $arg1 est défini à l'intérieur de la fonction, car elle a été définie lors de l'appel de la fonction.
$var='test';
echo $var; // OK, on vient juste de définir la variable.
}
echo $var; //erreur, ce n'est pas défini ici, ca n'était défini que dans la fonction
echo $arg1; //idem
Bref, le nom de l'argument de la fonction ne sert qu'à permettre l'utilisation de l'argument dans la fonction.

Je t'invite à lire le manuel pour plus de renseignements. http://fr2.php.net/manual/fr/functions.arguments.php

par supercanard » 18 mai 2007, 00:19

Y'a du mieux :D

Mainenant l'erreur donne :

une serie de : Warning: Missing argument 1 for connection() in ./fonctions.php on line 2

ensuite :

Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in ./fonctions.php on line 3

D'ou sort le root@localhost ?? Ma variable $serveur ne passe donc pas...

Et j'ai aussi ça :
Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in ./fonctions.php on line 4

C'ets donc dans ma fonction que ça cloche maintenant non ?

Code : Tout sélectionner

<?php function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect($serveur,$utilisateur,$passe); mysql_select_db($base,$db); } ?>

par thehawk » 18 mai 2007, 00:00

essaie mais vu l'heur j'ai plus les yeux en face des trous
$serveur= 'sql.blabla.com'
global $serveur;
etc

@ demain thehawk

par supercanard » 17 mai 2007, 23:54

En résumé...

Dans mon fichier config :

Code : Tout sélectionner

global $serveur= 'sql.blabla.com'; global $utilisateur= 'supercanard1'; global $passe= 'blabla'; global $base= 'supercanard1';
dans mon fichier fonctions :

Code : Tout sélectionner

function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect($serveur,$utilisateur,$passe); mysql_select_db($base,$db); }
Et on appelle... :

Code : Tout sélectionner

include '../config.php'; include 'fonctions.php'; connection();
Et l'erreur : Parse error: parse error, expecting `','' or `';'' in ../config.php on line 2
la ligne 2 correspond à : global $utilisateur= 'supercanard1';

Soit j'ai rien compris soit ben... je donne ma langue au chat :?

par supercanard » 17 mai 2007, 22:06

Ah wi pardon mais en fait c'est la même chose que plus haut ^^

Code : Tout sélectionner

global $serveur= 'sql.blabla.com';

par thehawk » 17 mai 2007, 21:51

si tu monter la ligne 2 ca iré plus vite

par supercanard » 17 mai 2007, 21:09

Toujours une erreur...

Code : Tout sélectionner

Parse error: parse error, expecting `','' or `';'' in ../config.php on line 2
Pourtant rie na signaler :cry:

par thehawk » 17 mai 2007, 20:13

et non malheureux ca servirait a rien ^^

il faut que tu fasse :
global $serveur = '...';

// puis ta fonction de connection :

function connection($serveur,$utilisateur,$passe) {
$db= mysql_connect($serveur,$utilisateur,$passe);
mysql_select_db($base,$db);
}

connection(); 

par supercanard » 17 mai 2007, 20:06

Donc si j'ai bien compris c'est juste dans la fonction qu'il faut faire ceci :

Code : Tout sélectionner

function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect(global $serveur,global $utilisateur,global $passe); mysql_select_db(global $base,$db); }
Enfin je crois... car j'ai une petite erreur : Parse error: parse error, expecting `')'' in ./fonctions.php on line 2

En tous cas j'aurrais appris quelquechose aujourdhui =) merci

par thehawk » 17 mai 2007, 19:54

une variable global est defini ainsi :

Code : Tout sélectionner

global $obj;

par supercanard » 17 mai 2007, 19:47

Sans dire de bêtise je pense que j'ai déjà des variables globales...

Dans mon fichier config :

Code : Tout sélectionner

$serveur= 'sql.blabla.com'; $utilisateur= 'supercanard1'; $passe= 'blabla'; $base= 'supercanard1';
dans mon fichier fonctions :

Code : Tout sélectionner

function connection($serveur,$utilisateur,$passe,$base) { $db= mysql_connect($serveur,$utilisateur,$passe); mysql_select_db($base,$db); }
Et j'apelle tout ça de cette manière :

Code : Tout sélectionner

include '../config.php'; include 'fonctions.php'; connection();
Et j'ai une belle erreur :

Code : Tout sélectionner

Warning: Missing argument 1 for connection() in ./fonctions.php on line 2
suivie e plein d'autres...

par thehawk » 17 mai 2007, 18:38

enfaite dans une fonction seul les varible dite globale peuvent y acceder donc il faut soit declarer tes varibles comme global soit les mettre entre les ()