probleme variable encore

Eléphant du PHP | 299 Messages

12 févr. 2009, 22:20

Hello les gens, j' ai un souci sur mon futur petit site d' annonce, en effet, je me suis basé pour exemple sur le tutoriel du site du zero pour que les gens qui postent une annonce, je les valide ou les refuse avant qu' elles soient publiées:


http://www.siteduzero.com/tutoriel-3-36 ... ateur.html


Alors j ' ai deux soucis, le plus gros je vais essayer de l' expliquer clairement:


J' ai deux tables (validation et annonces). Lorsque les gens postent une annonce, celle ci se retrouve dans la table validation. Si je refuse l' annonce par ma page admin via deux lien (accepter-refuser), celle ci est supprimé. Si j' accepte l' annonce, celle ci est transférée sur la table "annonces" et supprimée de "validation".

Mon hic est que j' ai bien les annonces dans ma page de validation, mais si je les accepte, elles s' ajoutent bien sur mon site, mais tous les champs sont vides. Et en effet, dans mysql, les champs sont tous vide!

Le deuxieme souci est que je dois cliquer (toujours sur ma page de validation) DEUX FOIS sur accepter pour que l' annonce disparaisse de ma page de validation, ce qui fait qu' elle s' affiche deux fois sur mon site, ce qui est entre guillement normal (deux clic).


Je vous met ma page de validation pour que vosu jetiez un oeil:
					      <?php
$quete = mysql_query("SELECT * FROM validation");
while($validation = mysql_fetch_array($quete))
{
echo '<center><table width="600" border="1" cellspacing="0" cellpadding="0">
  <tr>
    <td><b>titre : </b></td><td colspan="2">';
echo $validation['titre'];
echo ' </td></tr>  <tr><td>  <b>nom:</b></td><td colspan="2"> ';
echo $validation['nom'];
echo ' </td>  </tr><tr><td colspan="3"><b>annonce:</b></td></tr><tr><td height="20" colspan="3"> ';
echo $validation['annonce'];
echo '</td></tr></table><br><a href="attente.php?action=accepter&id='.$validation['id'].'">Accepter</a> - ';
echo '<a href="attente.php?action=refuser&id='.$validation['id'].'">Refuser</a>';
echo '<br/></center><hr WIDTH="100%"><br>';
}
 
if(isset($_GET['action']) AND isset($_GET['id']))
{
$action = $_GET['action'];
if($action == "accepter")
{
$id = $_GET['id'];
$quete2 = mysql_query("SELECT '', '$cat', '$region', '$cp', '$nom', '$type', '$email', '$tel', '$titre', '$annonce', '$prix' FROM validation WHERE id='$id'");
$connexion = mysql_fetch_array($quete2);
$titre = $connexion['titre'];
$annonce = $connexion['annonce'];
$nom = $connexion['nom'];
mysql_query("INSERT INTO annonces VALUES('', '$cat', '$region', '$cp', '$nom', '$type', '$email', '$tel', '$titre', '$annonce', '$prix')");
mysql_query("DELETE FROM validation WHERE id='$id'");
}
elseif($action == "refuser")
{
$id = $_GET['id'];
mysql_query("DELETE FROM validation WHERE id='$id'");
}
}
?>	

et je pense que le souci vient plus précisement de :
$id = $_GET['id'];
$quete2 = mysql_query("SELECT '', '$cat', '$region', '$cp', '$nom', '$type', '$email', '$tel', '$titre', '$annonce', '$prix' FROM validation WHERE id='$id'");
$connexion = mysql_fetch_array($quete2);
$titre = $connexion['titre'];
$annonce = $connexion['annonce'];
$nom = $connexion['nom'];
mysql_query("INSERT INTO annonces VALUES('', '$cat', '$region', '$cp', '$nom', '$type', '$email', '$tel', '$titre', '$annonce', '$prix')");
mysql_query("DELETE FROM validation WHERE id='$id'");
}

Je suis completement bloqué, a savoir que les champs de mes tables sont:

id cat region cp nom type email tel titre annonce prix



Merci pour votre coup de pouce :cry:


Pour voir le bug,


http://piot.mickael.free.fr/

Eléphant du PHP | 447 Messages

12 févr. 2009, 22:25

hi,

pourquoi tu rajoutes pas simplement un champ validation dans ta table annonce avec une valeur soit à 0 quand non validé, soit à 1 quand validé...

ça me parait beaucoup plus simple.
Probably (only a) Human Problem?

Eléphant du PHP | 299 Messages

12 févr. 2009, 23:50

Parce que je ne sais pas faire :lol:

La je me suis basé sur un tuto existant donc en l' adaptant a ma guise, j' ai un peu plus de facilité a comprendre pourquoi tel ou tel chose va ici ou la.


Apres je suis ouvert a tout, du moment qu' on m' explique le schmilblick :wink:

Eléphant du PHP | 139 Messages

13 févr. 2009, 00:14

De stef
pourquoi tu rajoutes pas simplement un champ validation dans ta table annonce avec une valeur soit à 0 quand non validé, soit à 1 quand validé...

ça me parait beaucoup plus simple.
L'idée est pertinente.

champ etat_validation à 0 : les gens postent une annonce
champ etat_validation à 1 : l'admin accepte et valide
supprime l'annonce: l'admin refuse et valide

Eléphant du PHP | 299 Messages

13 févr. 2009, 07:43

Ben c' est sur que ca a l' ait simple comme principe, je vias voir cette methode ce soir ca je vais devoir aller taffer :)

bonne journée


edit: je trouve pas d' info la dessus, z avez un lien pour me renseigner la dessus svp :roll:

Eléphant du PHP | 299 Messages

15 févr. 2009, 12:48

Je suis sincerement desolé, ca ne fonctionne pas, ils m' ont conseillé, comme y a pas mal d aide entre deux, pour ne pas que vous soyez perdu, je vous propose le lien de ma discussion avec un membre du siteduzero pour vous montrer ce qu' il m' a proposé. Son code est propre, mai ne fonctionne toujours pas. Le dieu du php ou du sql est contre moi :

http://www.siteduzero.com/forum-83-3709 ... l#r3430266

J' espere que ca ne derangera pas que je mette ce lien, c' est pour eviter les multiples explications :roll:

Eléphant du PHP | 451 Messages

15 févr. 2009, 14:12

L'erreur vient surtout de ça:
"SELECT '', '$cat', '$region', '$cp', '$nom', '$type', '$email', '$tel', '$titre', '$annonce', '$prix' FROM validation WHERE id='$id'"
Ca ne fonctionne pas comme ça un INSERT INTO.

On ne met jamais de $variable dans le SELECT, ça doit être juste le nom des champs qui sont dans la table que tu veux récupérer ou alors le signe * si tu veux tout récupérer voilà le problème.

Tu ferais:
mysql_query("ta requete") or die(mysql_error());
Tu aurais vu ton erreur toute suite donc met or die à chaque fin de mysql_query cela te permettra de débugger.

Eléphant du PHP | 299 Messages

15 févr. 2009, 15:06

Oui je l' ai deja mis, mais justement je n' ai absolument aucune erreur qui apparait :?

ViPHP
ViPHP | 1996 Messages

15 févr. 2009, 19:23

j'ai eu un truc du genre une fois : la ressource sql n'était pas disponible pour ma requete.
Cette ressource se créé lorsque tu fais le mysql_connect

http://fr.php.net/mysql_connect

Essaye de voir dans cet horizon.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 299 Messages

15 févr. 2009, 19:30

Bon ben je vais essayer de voir un peu plus la dessus, mais c' est bien compliqué ce que je veux faire pour si peu de choses. Surtout que mon code n' est pas trop moche pour un debut :lol:

ViPHP
ViPHP | 1996 Messages

15 févr. 2009, 19:40

C'est normal quand on débute, tant qu'on a pas eu le problème on ne peut pas le deviner.
Moi je ffais toujours quand j'ai un doute un echo des ressources sql ce qui devrait t'afficher Ressouce#32 ou Ressource#15 ou un truc similaire
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
AB
ViPHP | 5818 Messages

15 févr. 2009, 20:10

Quand tu fais des requêtes, écris-les avant de les exécuter, cela te permettra de voir ce qu'elles contiennent pour le débuggage :
$requete = 'SELECT...';
//echo $requete;
mysql_query($requete) or die(mysql_error());
Ces quelques conseils sont très utiles.

Eléphant du PHP | 299 Messages

15 févr. 2009, 21:14

Je vais regarder ca, merci a tosu pour les conseils je vosu tiens au courant, mais c' est quand meme bizarre que j' ai aucun message d' erreur :?

Eléphant du PHP | 299 Messages

17 févr. 2009, 14:08

Je ne trouve pas, simple question, mais pourquoi le fait de les mettre avant permettrait de voir le debuggage? :roll:

ViPHP
AB
ViPHP | 5818 Messages

17 févr. 2009, 19:52

Ben si tu fais un echo de ta requête ça te permet de savoir si elle est bien écrite, si les variables sont bien passées.