8795 sujets

Développement web côté serveur, CMS

Bonjour a tous Smiley smile

Le site sur lequel je travail souhaite avoir un livre d'or avec la possibilité que l'admin valide le message avant la diffusion.
Je bute sur l'acceptation ou la suppression du message envoyé.
Voici le code :
<?php 
$quete = mysql_query("SELECT * FROM validation");
while($validation = mysql_fetch_array($quete))
{ ?>
<table>
<tr>
	<td>ID</td>
    <td><?php echo $validation['Id_validation']; ?></td>
</tr>
  <tr>
    <td>Nom des mariées</td>
    <td><?php echo $validation['prenoms']; ?></td>
  </tr>
  <tr>
    <td>Ville</td>
    <td><?php echo $validation['ville']; ?></td>
  </tr>
  <tr>
    <td>Telephone</td>
    <td><?php echo $validation['telephone']; ?></td>
  </tr>
  <tr>
    <td>E-mail</td>
    <td><?php echo $validation['mail']; ?></td>
  </tr>
  <tr>
    <td>Date de mariage</td>
    <td><?php echo $validation['date_mariage']; ?></td>
  </tr>
  <tr>
    <td>Message</td>
    <td><?php echo $validation['message']; ?></td>
  </tr>
</table> 

<?php
}
echo '<a href="validation.php?action=accepter&id='.$validation['Id_validation'].'">Accepter</a>'; 
echo '   <a href="validation.php?action=refuser&id='.$validation['Id_validation'].'">Refuser</a>';

if(isset($_GET['action']) AND isset($_GET['Id_validation']))
{
$action = $_GET['action'];
if($action == "accepter")
{
$id = $_GET['Id_validation'];
$quete2 = mysql_query("SELECT * FROM validation WHERE Id_validation='$id'");
$connexion = mysql_fetch_array($quete2);
$prenom = $connexion['prenoms'];
$ville = $connexion['ville'];
$telephone = $connexion['telephone'];
$mail = $connexion['mail'];
$date = $connexion['date_mariage'];
$message = $connexion['message'];
mysql_query("INSERT INTO livreor VALUES('$id', '$prenom', '$ville', '$telephone', '$mail', '$date', '$message')");
mysql_query("DELETE FROM validation WHERE Id_validation='$id'");
}
elseif($action == "refuser")
{
$id = $_GET['Id_validation'];
mysql_query("DELETE FROM validation WHERE Id_validation='$id'");
}
}

?>


le probleme c'est que quand on passe sur accepter le lien afficher dans la barre d'etat, n'affiche pas le numéro de l'Id, pareil pour reufer.

Pouvez vous me dire ou je fait erreur?
merci
Modifié par Vanlen (20 May 2010 - 15:03)
Salut!
Il faudrait que tu mettes le "}" après les deux liens.

Sinon, niveau sécurité ton script est à revoir!
Merci, c'était bien ca Smiley smile comme quoi, quand on a la tête dans le code toute la journée Smiley smile

Maintenant ca me prend l'ID mais ca ne me l'efface pas de la base, ni l'intègre dans l'autre table quand je clic.

Pour la question de sécurité, c'est un peu normal pour le moment Smiley smile

EDIT :
J'ai fait des modif pour utiliser qu'une seule table, mais le probleme est toujours la.
Quand je clic sur accepté, ca ne me change pas la base de donner.

<?php 
$quete = mysql_query("SELECT * FROM livreor WHERE valide = 0");
while($validation = mysql_fetch_array($quete))
{ ?>
<table>
  <tr>
	<td>ID</td>
    <td><?php echo $validation['Id_livreor']; ?></td>
  </tr>
  <tr>
    <td>Nom des mariées</td>
    <td><?php echo $validation['prenoms']; ?></td>
  </tr>
  <tr>
    <td>Ville</td>
    <td><?php echo $validation['ville']; ?></td>
  </tr>
  <tr>
    <td>Telephone</td>
    <td><?php echo $validation['telephone']; ?></td>
  </tr>
  <tr>
    <td>E-mail</td>
    <td><?php echo $validation['mail']; ?></td>
  </tr>
  <tr>
    <td>Date de mariage</td>
    <td><?php echo $validation['date_mariage']; ?></td>
  </tr>
  <tr>
    <td>Message</td>
    <td><?php echo $validation['message']; ?></td>
  </tr>
</table> 

<?php

echo '<a href="validation.php?action=accepter&amp;id='.$validation['Id_livreor'].'">Accepter</a>'; 
echo '   <a href="validation.php?action=refuser&amp;id='.$validation['Id_livreor'].'">Refuser</a>';
}


if(isset($_GET['action']) AND isset($_GET['Id_livreor']))
{
$action = $_GET['action'];
if($action == "accepter")
{
$id = $_GET['Id_livreor'];
$quete2 = mysql_query("SELECT * FROM validation WHERE Id_livreor='$id' and valide=0");
$connexion = mysql_fetch_array($quete2);
$prenom = $connexion['prenoms'];
$ville = $connexion['ville'];
$telephone = $connexion['telephone'];
$mail = $connexion['mail'];
$date = $connexion['date_mariage'];
$message = $connexion['message'];
mysql_query("UPDATE livreor SET valide=1");
//mysql_query("INSERT INTO livreor VALUES('$id', '$prenom', '$ville', '$telephone', '$mail', '$date', '$message')");
//mysql_query("INSERT INTO livreor (Id_livreor, prenoms, ville, telephone, mail, date_mariage, message) VALUES('$id', '$prenom', '$ville', '$telephone', '$mail', '$date', '$message')");
mysql_query("DELETE FROM livreor WHERE Id_livreor='$id'");
}
elseif($action == "refuser")
{
$id = $_GET['Id_livreor'];
mysql_query("DELETE FROM livreor WHERE Id_livreor='$id'");
}
}

?>

Modifié par Vanlen (20 May 2010 - 11:34)
le problème est à la ligne
echo '<a href="validation.php?action=accepter&amp;id='.$validation['Id_livreor'].'">Accepter</a>';

et
if(isset($_GET['action']) AND isset($_GET['Id_livreor']))


Ton lien envoie un paramètre "id" et non "Id_livreor", du coup ton test n'est jamais vrai.
Bonjour,

Pour le contrôle tu peux simplifié, isset() accepte plusieurs valeurs.


if (isset($_GET['action'], $_GET['id'])) 


Smiley smile
Ouai sauf que ca fonctionne pas comme tu le propose Smiley smile

Je reste avec ma façon.

Mais merci quand même.
Je vais rajouter le résolu au titre Smiley cligne