Auteur Sujet: Fonctions  (Lu 5320 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Fonctions
« Réponse #15 le: 11 mai 2003 à 00:50:13 »
$Requete = Requete("SELECT * FROM Administration WHERE Pseudo='".$HTTP_POST_VARS["Pseudo_administration"]."' AND Mot_de_passe='$Mot_de_passe_administration_crypte'");
if (Nombre_enregistrements($Requete) == 1)






-----------------------
function Requete($Requete)
{
if (!$Requete)
{Erreur("Vous devez entré une requête !");}
$Ok = mysql_query($Requete) or die ("Erreur : Requete invalide pour la requete '".$Requete."'<BR>Mysql renvoie l'erreur suivante : ".mysql_error());
if (!$Ok)
{Erreur("Vous devez entrer une requête valide !");
return "0";}
else {
return mysql_query($query); }
}


function Nombre_enregistrements($Requete)
{
if ($Requete=="0")
{Erreur("Vous devez entrer une requête pour afficher le nombre d'enregistrements !");}
$Reussi = mysql_num_rows($Requete) or die ("Erreur : Ne peut définir le nombre d'enregistrements pour la requete '".$Requete."'<BR>MySQL renvoie l'erreur suivante : ".mysql_error());
if (!$Ok)
{Erreur("Vous devez entrer une requête valide !");}
return $Reussi;
}

Hors ligne Bouki

  • Habitué
  • **
  • Messages: 244
    • http://www.scripetudes.net
Fonctions
« Réponse #16 le: 11 mai 2003 à 01:11:39 »
j'ai essayé de remplacer $query par $Requete car $query sort de nul part mais ca marche pas
Bouki
oO .:: [ Mage développeur Bouki ] ::. Oo


Hors ligne Bouki

  • Habitué
  • **
  • Messages: 244
    • http://www.scripetudes.net
Fonctions
« Réponse #17 le: 11 mai 2003 à 02:14:15 »
En faite l pb c'est que $Ok renvoie "Resource id #2" et que je sais pas quoi renvoyer :s
Bouki
oO .:: [ Mage développeur Bouki ] ::. Oo


Hors ligne Ice

  • VIP
  • *****
  • Messages: 2 403
    • ATFX
Fonctions
« Réponse #18 le: 11 mai 2003 à 08:07:12 »
Et en plus , le $Ok de Nombre_enregistrements n'existe pas.

Hors ligne cheminots

  • Connaisseur
  • ***
  • Messages: 429
    • http://www.cheminots.be
Fonctions
« Réponse #19 le: 11 mai 2003 à 09:42:06 »
Si tu veux travailler avec $ok dans ton prg et dans tes fonctions, tes fonctions doivent commencer par
global $ok;sinon, php les considère comme 2 variables différentes.
www.cheminots.be
Le Portail des Cheminots et des amis du rail

Guest

  • Invité
Fonctions
« Réponse #20 le: 11 mai 2003 à 12:36:09 »
deja commencons par le debut:

Reussi = mysql_num_rows($Requete) or die ("Erreur : Ne peut définir le nombre d'enregistrements pour la requete '".$Requete."'<BR>MySQL renvoie l'erreur suivante : ".mysql_error());



mysql_num_rows prend en parametre d'identificateur de la ressource et non pas une requette SQL





function Requete($Requete)
{
if ($Requete=="")
{Erreur("Vous devez entré une requête !");}
else
{
$Ok = mysql_query($Requete) or die ("Erreur : Requete invalide pour la requete '".$Requete."'<BR>Mysql renvoie l'erreur suivante : ".mysql_error());
// Inutile de tester la valeur de $Ok le "or die" s'en charge tres bien

//return mysql_query($query);  a ce niveau la j'pense que t'a du 'pomper' un script de j'sais pas trop ou et oublier de changer $query en $Requete
// de plus c'est inutile de faire 2 fois le query car il suffi de renvoyer le $Ok qui est l'Id mysql

return $Ok



}
}


function Nombre_enregistrements($Ok)
{
if($Ok!=0)
{
$Reussi = mysql_num_rows($Requete);
return $Reussi;
}
else
{
echo "Id mysql non valide";
return -1;
}

}

Hors ligne kevin

  • vip
  • Habitué
  • **
  • Messages: 228
Fonctions
« Réponse #21 le: 11 mai 2003 à 12:36:56 »
oups Guest c'etait moi  
print map{chr(2.875*$_**4-32.25*$_**3+117.13*$_**2-142.75*$_+130)}(1..5)

Hors ligne tigroux

  • Débutant
  • *
  • Messages: 18
    • http://www.laplanetedejo.net/
Fonctions
« Réponse #22 le: 11 mai 2003 à 15:27:44 »
Bon, j'ai la réponse :

Lorsque tu fais $ok=mysql_query("$requete");

$ok est une ressource mysql.

Si tu fais echo $ok; elle va donc t'écrire que c'est une ressource : Ressource #2 (ressource numéro 2).
Si par contre tu l'utilises comme ceci $nb_ligne=mysql_num_rows($ok); ça deviens interessant car tu as le nombre de ligne retournées par ta requêtes $requete....
Ce $ok (ou ce qui est retoruné par ta fonction peut donc être utilisé avec toutes les fonctions mysql qui nécessite une ressource par exemple mysql_fetch_array();)

Bien sûr si ta requete n'est pas valide, $ok sera égal à false ce qui fait que tes tests fonctionnent dans ta fonction.

Je pense que je ne t'apprends rien, mais mieux vaut être clair par moment, quitte à prendre les gens pour des lapins de 6 semaines... ;-)
Secrétaire Général de La République Joïenne

Hors ligne CrazyTeacher

  • Connaisseur
  • ***
  • Messages: 331
    • http://www.koi29.info
Fonctions
« Réponse #23 le: 11 mai 2003 à 18:46:00 »
msql_query retourne un booleen pour insert, delete, update et un identifiant de resultat pour select.

par ailleurs, pas besoin de mettre un else si tu as une instruction return dans le code

function Requete($Requete)
{
if ($Requete=="")
{
            Erreur("Vous devez entré une requête !");  
            return false;
}
$Ok = mysql_query($Requete) or die ("Erreur : Requete invalide pour la requete '".$Requete."'<BR>Mysql renvoie l'erreur suivante : ".mysql_error());
$query en $Requete

          return $Ok
}
function Nombre_enregistrements($Ok)
{
   if($Ok!=0)
   {
     $Reussi = mysql_num_rows($Requete);
     return $Reussi;
   }

    echo "Id mysql non valide";
    return -1;
}
 
Une chose qui convainc n'est pas vraie pour autant. Elle est seulement convaincante. Remarque destinée aux ânes.  /*La Volonté de Puissance*/ Nietzsche

"Parler pour ne rien dire et ne rien dire en parlant est le principe de ceux qui feraient mieux de la fermer avant de l'ouvrir ! "     Pierre Dac

koi29.info

Hors ligne Bouki

  • Habitué
  • **
  • Messages: 244
    • http://www.scripetudes.net
Fonctions
« Réponse #24 le: 11 mai 2003 à 19:15:55 »
déjà à kevin > regarde la première page j'ai rien pompé du tout sinon tu penses bien que j'aurais pris un truc qui marche  :D déjà tout prêt ou même des scripts tout prêt $query c pas moi qui l'ai sorti oi j'aiu une variable appelé $Requete :D .
Je sais que mysql_query renvoie true ou false selon si c'est réussi ou pas.

Citer
Si par contre tu l'utilises comme ceci $nb_ligne=mysql_num_rows($ok); ça deviens interessant car tu as le nombre de ligne retournées par ta requêtes $requete....
Ce $ok (ou ce qui est retoruné par ta fonction peut donc être utilisé avec toutes les fonctions mysql qui nécessite une ressource par exemple mysql_fetch_array()
$nb_ligne tu le sors d'où ? ca représente quoi ? donne un exemple. Pour le $Ok je sais qu'il est utlilisé par de nombreuses fonctions mysql déjà (comme mysql_result())

d'autre part :

function Nombre_enregistrements($Ok)
{
  if($Ok!=0)
  {
    $Reussi = mysql_num_rows($Requete);
    return $Reussi;
  }

   echo "Id mysql non valide";
   return -1;
}

j'ai regardé mon code par rapport au tient et j'ai corrigé le mien, merci car je savais pas qu'on pouvait utliser $Ok puisque non fourni comme arg (bien que indirectement fournis).
Bouki
oO .:: [ Mage développeur Bouki ] ::. Oo


Hors ligne Bouki

  • Habitué
  • **
  • Messages: 244
    • http://www.scripetudes.net
Fonctions
« Réponse #25 le: 17 mai 2003 à 14:53:15 »
Bon, voilà que ca marche seulement à moitié

Ce code là plante tout le temps :

function Requete($Requete)
{
if (empty($Requete))
{
Ecris("<CENTER>Vous devez entré une requête !</CENTER>");
return false;
}
$Requete_MySQL = mysql_query($Requete) or die ("Erreur : Requete invalide pour la requete '".$Requete."'<BR>Mysql renvoie l'erreur suivante : ".mysql_error());
return $Requete_MySQL;
}

function Nombre_enregistrements($Requete_MySQL)
{
if ($Requete_MySQL != 0)
{
$Nombre = mysql_num_rows($Requete) or die ("Erreur : Ne peut définir le nombre d'enregistrements pour la requete '".$Requete_MySQL."'<BR>MySQL renvoie l'erreur suivante : ".mysql_error());
return $Nombre;
}
Ecris("<CENTER>Vous devez entré une requête valide pour afficher le nombre d'enregistrements !</CENTER>");
return -1;
}

tandisque celui là :

function Requete($Requete)
{
if (empty($Requete))
{
Ecris("<CENTER>Vous devez entré une requête !</CENTER>");
return false;
}
$Requete_MySQL = mysql_query($Requete) or die ("Erreur : Requete invalide pour la requete '".$Requete."'<BR>Mysql renvoie l'erreur suivante : ".mysql_error());
return $Requete_MySQL;
}

function Nombre_enregistrements($Requete_MySQL)
{
if ($Requete_MySQL != 0)
{
$Nombre = mysql_num_rows($Requete_MySQL) or die ("Erreur : Ne peut définir le nombre d'enregistrements pour la requete '".$Requete_MySQL."'<BR>MySQL renvoie l'erreur suivante : ".mysql_error());
return $Nombre;
}
Ecris("<CENTER>Vous devez entré une requête valide pour afficher le nombre d'enregistrements !</CENTER>");
return -1;
}

plante aléatoirement.
Que faire ?!
Bouki
oO .:: [ Mage développeur Bouki ] ::. Oo


Hors ligne Bouki

  • Habitué
  • **
  • Messages: 244
    • http://www.scripetudes.net
Fonctions
« Réponse #26 le: 17 mai 2003 à 17:03:46 »
pour le premier code j'ai :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/users/bouki/www/Scripetudes/Includes/Fonctions.php on line 17
Erreur : Ne peut définir le nombre d'enregistrements pour la requete 'Resource id #2'
MySQL renvoie l'erreur suivante :

pour le deuxième :
Erreur : Ne peut définir le nombre d'enregistrements pour la requete 'Resource id #2'
MySQL renvoie l'erreur suivante :
Bouki
oO .:: [ Mage développeur Bouki ] ::. Oo


Hors ligne Bouki

  • Habitué
  • **
  • Messages: 244
    • http://www.scripetudes.net
Fonctions
« Réponse #27 le: 17 mai 2003 à 17:31:20 »
g trouvé l'erreur

$Requete = Requete("SELECT * FROM Table");
$Total = Nombre_enregistrements($Requete);

Avec ma fonction y'a déjà $variable = mysql_truc donc ca plante...

alors comment faire ?!

function Requete($Requete)
{
if (empty($Requete))
{
Ecris("<CENTER>Vous devez entré une requête !</CENTER>");
return false;
}
mysql_query($Requete) or die ("Erreur : Requete invalide pour la requete '".$Requete."'<BR>Mysql renvoie l'erreur suivante : ".mysql_error());
return mysql_query($Requete);
}

function Nombre_enregistrements($Requete_MySQL)
{
if ($Requete_MySQL != 0)
{
mysql_num_rows($Requete_MySQL) or die ("Erreur : Ne peut définir le nombre d'enregistrements pour la requete '".$Requete_MySQL."'<BR>MySQL renvoie l'erreur suivante : ".mysql_error());
return mysql_num_rows($Requete_MySQL);
}
Ecris("<CENTER>Vous devez entré une requête valide pour afficher le nombre d'enregistrements !</CENTER>");
return -1;
}
plante...
Bouki
oO .:: [ Mage développeur Bouki ] ::. Oo


Hors ligne CrazyTeacher

  • Connaisseur
  • ***
  • Messages: 331
    • http://www.koi29.info
Fonctions
« Réponse #28 le: 17 mai 2003 à 19:35:44 »
sachant que mysql_query retourne un booléen pour INSERT DELETE UPDATE et
un identifiant pour SELECT, j'aurais plutôt écrit
function Requete($Req)[
{
if (empty($Req))
{
  Ecris("<CENTER>Vous devez entré une requête !</CENTER>");
  return 0;
}
                $ret = mysql_query($Req);
  if ( $ret == 0 )
   die ("Erreur : Requete invalide pour la requete '".$Req."'<BR>Mysql renvoie l'erreur suivante : ".mysql_error());

return $ret;
}
/CODE]
de cette façon, il n'y a pas 2 appels à mysql_query, puisque tu retourneras la valeur stockée dans $ret
qui sera 0 ou un identifiant.

Pour la seconde fonction :
[CODE]function Nombre_enregistrements($ReqMySQL)
{
if ($ReqMySQL != 0)
{
  $n = mysql_num_rows($ReqMySQL);
  if ( $n == 0)
   die ("Erreur : Ne peut définir le nombre d'enregistrements pour la requete '".$ReqMySQL."'<BR>MySQL renvoie l'erreur suivante : ".mysql_error());
  return $n;
}
Ecris("<CENTER>Vous devez entré une requête valide pour afficher le nombre d'enregistrements !</CENTER>");
return  0;
}

il vaut mieux retourner 0  plutôt que -1   puisque c'est un nombre d'enregistrements
dans tous les cas si c'est une requête SELECT, il te retournera le nbre d'enregistrements

normalement dans ton code principal, tu devrais avoir quelquechose du genre

$xrequete = ".........................";
$xresult = Requete( $xrequete );
// des tests à effectuer en fonction de la requête
$nbre =  Nombre_enregistrements( $xresult );


je ne sais pas si çà t'aide beaucoup.
 
Une chose qui convainc n'est pas vraie pour autant. Elle est seulement convaincante. Remarque destinée aux ânes.  /*La Volonté de Puissance*/ Nietzsche

"Parler pour ne rien dire et ne rien dire en parlant est le principe de ceux qui feraient mieux de la fermer avant de l'ouvrir ! "     Pierre Dac

koi29.info

Hors ligne Bouki

  • Habitué
  • **
  • Messages: 244
    • http://www.scripetudes.net
Fonctions
« Réponse #29 le: 17 mai 2003 à 21:28:34 »
l'erreur vient du faite de la mise en variable de tout ca justement

$Truc = mysql_query($parametre);
return $Truc;

si on fais :

Requete("select * from matable");
ca marche

MAIS
si on fait :
$Machin = Requete("select * from matable");

là ca plante car on a déjà mis ca sur une variable.
Bouki
oO .:: [ Mage développeur Bouki ] ::. Oo