Petit prob de fonction !

Répondre
Lefounard
le 07/02/2005 à 19:05
Lefounard
Bonsoir,
Voila j'ai fait un petit debuggage de rigueur, mais j'arrive toujours pas a trouver la source de l'erreur !
<?
connect($nw);
$sql2 = "SELECT * FROM site_news WHERE id='".$_GET['id']."'";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
$data = mysql_fetch_array($req2);
$pseudo=$data['auteur'];
mysql_close();
if(isset($pseudo) && !empty($pseudo)){echo $pseudo.'pseudo existe !';}
else{echo 'pseudo n\'exsite pas !';}
if(isset($data['auteur']) && !empty($data['auteur'])){echo $data['auteur'].'auteur existe !';}
else{echo 'auteur n\'est pas definie !';}
if(isset($_GET['id']) && !empty($_GET['id'])){echo $_GET['id'].'id existe !';}
else{echo 'id n\'est pas definie !';}

echo $_GET['id'];
incre_hit("nb_news",$pseudo,"moins");
?>

Ainsi avec toutes ces conditions j'obtient ca :

pseudo n'exsite pas !
auteur n'est pas definie !
72
id existe !

Ca a l'air clair pourtant j'ai verifier ma requete !
Merci de votre aide,
Ciao,
I am singing in the rain , I am happy again !!
LA GLOBULE
le 07/02/2005 à 19:15
LA GLOBULE
Bah si $pseudo n'existe pas, c'est normal que ta fonction plante.

Faut remonter plus haut...
moogli
le 07/02/2005 à 19:20
moogli
lut,

que te donne un mysql_num_rows ? En gros combien a tu de tuple retourner par ta requete ?

tu devrait éviter les select * http://frederic.bouchery.free.fr/?2004/10/26/27-La-Guerre-Des-Etoiles
fait un echo $sql2; pour etre sur du contenu !
fait un print_r($data).

Perso vu ton problème, je ne vois pas pourquoi tu récupère le pseudo pour ta fonction car tu a deja l'id, utilise l'id dans ta fonction c'est plus simple.

Dans ta focntion un if, un elseif et un else, une requete et le tour est joué !
<?php
function incre_hit($table,$id,$action) {
//action est sooit moins soit plus !
if ($action === 'moins') {
$sql = 'UPDATE FROM '.$table?' set nombre = nombre-1 WHERE id = "'.$id.'"';
}
elseif ($action === 'plus') {
$sql = 'UPDATE FROM '.$table?' set nombre = nombre+1 WHERE id = "'.$id.'"';
}
else {
echo 'soucis !!!!';
}
mysql_query($sql) or die ('Erreur sql<br/>'.$sql.'<br/>'.mysql_error());
}


Voila comment je ferais, les noms sont p'tet pas bon, mais c'est ta fonction tu sais a quoi sert tous sa smiley


smiley
Il en faut peu pour être heureux !!!!!
Lefounard
le 07/02/2005 à 19:22
Lefounard
oui ca je m'en doute, donc maintenant ca veut dire qu'il faut que je concentre mes recherche de l'erreur sur le requete sql :
<?php
connect($nw);
$sql2 = "SELECT id, auteur FROM site_news WHERE id='".$_GET['id']."'";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
$data = mysql_fetch_array($req2);
$pseudo=$data['auteur'];
mysql_close();
?>

MAis pourtant ce code a l'air correcte ! j'ai verifier le nom de table ainsi que le nom champs dans ma bdd, la correspondance est bonne !
Faudrait-il que je mette un mysql_free_result a la fin de la requete qui precede celle-ci ?!
Merci de votre aide !
Ciao,
I am singing in the rain , I am happy again !!
Lefounard
le 07/02/2005 à 19:24
Lefounard
C'est gentils Moogly ,
Donc je vais faire tes echjos mais sinon je t'explique pk je prends pas l'id : car l'id est celui de la news, or dans la news ya un champs "posteur" ensuite je recupere la valeur de ce champs l'envoi a ma fonction qui se connecte sur la table des membres et qui fait le reste ! ;)
Ciao,
I am singing in the rain , I am happy again !!
Lefounard
le 07/02/2005 à 19:42
Lefounard
bon le echo $sql2 fonctionne et c'est bien la requete que je souhaite ou le print_r($data) n'affiche rien ! Donc on cible l'erreur peut-etre sur le mysql_fetch_array !
Merci de votre Aide !
Ciao,
I am singing in the rain , I am happy again !!
i M@N
le 07/02/2005 à 21:36
i M@N
Hello !

il manque des parenthèses dans tes if nan ?
Essaye ça :
<?
connect($nw);
$sql2 = "SELECT * FROM site_news WHERE id='".$_GET['id']."'";
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql2.'<br>'.mysql_error());
$data = mysql_fetch_array($req2);
$pseudo=$data['auteur'];
mysql_close();
if(((isset($pseudo)) && (!empty($pseudo))){echo $pseudo.'pseudo existe !';}
else{echo 'pseudo n\'exsite pas !';}
if(((isset($data['auteur'])) && (!empty($data['auteur']))){echo $data['auteur'].'auteur existe !';}
else{echo 'auteur n\'est pas definie !';}
if(((isset($_GET['id'])) && (!empty($_GET['id']))){echo $_GET['id'].'id existe !';}
else{echo 'id n\'est pas definie !';}

echo $_GET['id'];
incre_hit("nb_news",$pseudo,"moins");
?>
@+...
One Love, One Heart, One Unity.
Lefounard
le 07/02/2005 à 23:25
Lefounard
Merci kan meme Im@n mais meme avec ces modifs g toujours un 'auteur' non definie malgres ma requete !
Je saizi vraiment po !
Merci de votre aide,
Ciao,
I am singing in the rain , I am happy again !!
Lefounard
le 08/02/2005 à 00:17
Lefounard
J'ai executer ma requete dans phpmyadmin et ca marche ! par contre dans mon script c toujours pareil ! j'ai meme essayer en protegeant les champs et nom de la table avec `` , mais c toujours pareille ! pas de data !
Voila ma table site_news
http://gueuska.free.fr/table.jpg
Merci de votre aide !
Ciao,
I am singing in the rain , I am happy again !!
keitarosan
le 08/02/2005 à 01:01
keitarosan
<?php

$sql2 = "SELECT * FROM site_news WHERE id='".$_GET["id"]."'";
$req2 = mysql_query($sql2) or die("Erreur SQL !$sql2".mysql_error());
$data = mysql_fetch_array($req2);
$pseudo=$data['auteur'];
mysql_close();

if(FALSE !== isset($pseudo) And FALSE === empty($pseudo))
{
echo ("$pseudo pseudo existe !");
}
else
{
echo ("pseudo n'exsite pas !");
}

if(FALSE !== isset($data['auteur']) And FALSE === empty($data['auteur']))
{
echo ($data['auteur']."auteur existe !");
}
else
{
echo ("auteur n'est pas definie !");
}

?>


Je confirme que cette portion de code fonctionne, je viens de la tester ^^.
j'ai crée la meme base de donnée, j'ai mis un id (2), et ca m'a bien afficher que le pseudo et l'auteur existait...

Donc soit l'id que tu recupere est vide (ce qui fait que la requete ne renvoit rien, d'ou le fait que tu es 'auteur n'existe pas...'.
Ou alors le probleme vient d'ailleur ^^

Fais un echo de la requete, et tu fais un copy/past dans PhpMyAdmin, et tu regarde le resultat ^^
>> http://projectopensource.free.fr/index.php?m=2&m2=5&s=8 <<
Répondre
LoadingChargement en cours