suppression de liens dans la BDD via formulaire

Eléphanteau du PHP | 23 Messages

04 déc. 2011, 14:21

Bonjour à tous;)
voila mon soucis, je me suis inspirer d'un exemple de formulaire proposer par ABà cette page sql-bases-donnees/supprimer-enregistrem ... 51339.html.
mon problème actuel est que lorsque je veux supprimer un liens dans la liste c'est toujours le dernier liens qui est pris en compte .
j aurais besoins d'un petit coup de pouces pour que l'on m'explique comment corriger ce léger soucis.
d’après ce que j'ai pu lire il faudrait que je puisse identifier chaque ligne mais je ne sais absolument pas par quoi je dois commencer,mes connaissance en php ne sont pas terrible je débute :).
merci a vous d’éclairer ma lanterne :priere:

oups j'ai oublier lesentiel lol.
<?php
	
include ('config_users.php ');
mysql_select_db("MA BDD");


// Requête qui efface un enregistrement suivant son ID
if (isset($_POST['supprimer']))
{
        $id_a_supprimer =  isset($_POST['id']) && is_numeric($_POST['id'])? intval($_POST['id']) : null;
        $query = "DELETE FROM liens WHERE id = ".$id_a_supprimer."";  
      
        $delete = mysql_query($query) or die(mysql_error());
		
}



// Requête qui récupère toutes les données de la table
$query = "SELECT id, user_name, user_link, file_name, file_size FROM liens";
$liste = mysql_query($query) or die(mysql_error());

?>



<div aligne= "center">
<?php if (isset($delete) && $delete == 1) echo '1 enregistrement à été supprimé';?>
</div>

<div align="left">

<form action = "" method = "post"enctype="multipart/form-data">
<?php
while ($row_client = mysql_fetch_assoc($liste))
{ ?>
<p>
<table border="2" bordercolor="#7C684E" cellspacing="2" cellpadding="2" >
<td><?php echo /*$row_client['user_name'].' '.$row_client['user_link'].*/'Nom du fichier: '.$row_client['file_name'].'</td><td>'.$row_client['file_size'].'</td>';?>
<td>
<input name = "supprimer" type = "submit" value = "Supprimer" />
<input type = "hidden" name = "id" value = "<?php echo $row_client['id'] ?>"/> 

</td>
</table> 
</p>
<?php } ?>
 </form>
<?php mysql_close();?>

Eléphanteau du PHP | 18 Messages

05 déc. 2011, 19:14

Faire une 3ieme colonne dans ton tableau avec une case à cocher qui lui contiendrais l'ID de ton fichier. De cette facon chaque ligne devient unique.

Tu nommes chaque cases de cette facon CASE[<?php $row_client['id']; ?>]

Chaque case prendre l'ID qui lui est attribué dans ta base de données.

Ensuite, pour récupérer tes cases tu fais tout simplement ceci : $cases = $_POST[case];
Par la suite tu fais une vérification si tu as au moins une case de cocher : if (!empty($cases))
Pour savoir quelle cases sont cochés, tu as ceci : $caseID = array_keys($cases)

Pour voir ce que ca donne, tu peux faire un var_dump de tes variables.

J'espère t'avoir aider.

Sylvain

Eléphanteau du PHP | 23 Messages

05 déc. 2011, 20:01

merci pour la réponse ;)

voila ce que ca donne car en attendant ben je me suis un peu depatouiller mais je n'arrive pas a faire relier le formulaire au propriaiyaire (le membres)
j'ai bien un start session qui control le membre par son nom mais sur la page en question si je me connect avec un autre pseudo je vois le formulaire de l'autre membre lol.
une idée?
<?php require_once('Connections/mysql.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch ($theType) {
    case "text":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;    
    case "long":
    case "int":
      $theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case "double":
      $theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case "date":
      $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
      break;
    case "defined":
      $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
      break;
  }
  return $theValue;
}
}

$maxRows_rssup = 10;
$pageNum_rssup = 0;
if (isset($_GET['pageNum_rssup'])) {
  $pageNum_rssup = $_GET['pageNum_rssup'];
}
$startRow_rssup = $pageNum_rssup * $maxRows_rssup;

mysql_select_db($database_mysql, $mysql);
$query_rssup = "SELECT * FROM liens";
$query_limit_rssup = sprintf("%s LIMIT %d, %d", $query_rssup, $startRow_rssup, $maxRows_rssup);
$rssup = mysql_query($query_limit_rssup, $mysql) or die(mysql_error());
$row_rssup = mysql_fetch_assoc($rssup);

if (isset($_GET['totalRows_rssup'])) {
  $totalRows_rssup = $_GET['totalRows_rssup'];
} else {
  $all_rssup = mysql_query($query_rssup);
  $totalRows_rssup = mysql_num_rows($all_rssup);
}
$totalPages_rssup = ceil($totalRows_rssup/$maxRows_rssup)-1;

//-----------------------------------------------------------------
// Bertrand, flashxpress.net - Supprimer plusieurs enregistrements
//-----------------------------------------------------------------
	if (!empty($_POST['supprimer'])) {
		foreach ($_POST['supprimer'] as $cle) {
			$Requete = "DELETE FROM liens WHERE id = '$cle'";
			$resRequete = mysql_query($Requete, $mysql) or die(mysql_error());
		}
		header("Location:deletemultiplerecords.php");
	} 
 //require_once('Connections/mysql.php'); ?>
<?php //include ('config_users.php'); ?>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div align="center">
<form action="" method="post">
<table width="750" border="2" cellspacing="5" cellpadding="2" bordercolor= "#7C6B5A" >
 <tr>
     <td >id</td>
    <td >Nom du proprietaire</td>
    <td>Liens</td>
    <td>Nom </td>
    <td >Taille </td>
    <td>Action</td>
  </tr>
 
    <?php do { ?>
      <tr>
        <td><?php echo $row_rssup['id']; ?></td>
        <td><?php echo $row_rssup['user_name']; ?></td>
        <td><?php echo $row_rssup['user_link']; ?></td>
        <td><?php echo $row_rssup['file_name']; ?></td>
        <td><?php echo $row_rssup['file_size']; ?></td>
        <td><input name="supprimer[]" type="checkbox" id="supprimer[]" value="<?php echo $row_rssup['id']; ?>"></td>
      </tr>
      <?php } while ($row_rssup = mysql_fetch_assoc($rssup)); ?>
<tr><td colspan="6" align="right">Supprimer la séléction.=>  <input name="Supprimer" type="submit"value="Supprimer"> </td> </tr>
           
    </table>
          
</form>
</div>

</body>

<?php
mysql_free_result($rssup);
?>

Eléphanteau du PHP | 18 Messages

05 déc. 2011, 20:18

Dans ton SELECT * FROM liens, tu demandes tout le contenu de la base de données, mais sans aucune condition.

Si c'est les données d'un client particulier que tu veux, tu dois ajouter un WHERE avec ton iddeclient = à celui de la connexion de ton membre.

As-tu ta page de ton formulaire de LOGIN ?

Sylvain

Eléphanteau du PHP | 23 Messages

05 déc. 2011, 20:25

encore merci pour la rapidité ;)

voici ma page de connection
<?php
//Si lutilisateur est connecte, on le deconecte
if(isset($_SESSION['username']))
{
        //On le deconecte en supprimant simplement les sessions username et userid
        unset($_SESSION['username'], $_SESSION['userid']);
?>

<div class="message">Vous avez bien &eacute;t&eacute; d&eacute;connect&eacute;.<br />
<a href="<?php echo $url_home; ?>">Accueil</a></div>
<?php
}
else
{
        $ousername = '';
        //On verifie si le formulaire a ete envoye
        if(isset($_POST['username'], $_POST['password']))
        {
                //On echappe les variables pour pouvoir les mettre dans des requetes SQL
                if(get_magic_quotes_gpc())
                {
                        $ousername = stripslashes($_POST['username']);
                        $username = mysql_real_escape_string(stripslashes($_POST['username']));
                        $password = stripslashes($_POST['password']);
                }
                else
                {
                        $username = mysql_real_escape_string($_POST['username']);
                        $password = $_POST['password'];
                }
                //On recupere le mot de passe de lutilisateur
                $req = mysql_query('select password,id from users where username="'.$username.'"');
                $dn = mysql_fetch_array($req);
                //On le compare a celui quil a entre et on verifie si le membre existe
                if($dn['password']==$password and mysql_num_rows($req)>0)
                {
                        //Si le mot de passe es bon, on ne vas pas afficher le formulaire
                        $form = false;
                        //On enregistre son pseudo dans la session username et son identifiant dans la session userid
                        $_SESSION['username'] = $_POST['username'];
                        $_SESSION['userid'] = $dn['id'];
?>
<div class="message">Bonjour<?php if(isset($_SESSION['username'])){echo ' '.htmlentities($_SESSION['username'], ENT_QUOTES, 'UTF-8');} ?>,<br />
Vous avez bien &eacute;t&eacute; connect&eacute;. Vous pouvez acc&eacute;der &agrave; votre espace membre.<br />
<a href="<?php echo $url_home; ?>">Accueil</a></div>
<?php
                }
                else
                {
                        //Sinon, on indique que la combinaison nest pas bonne
                        $form = true;
                        $message = 'La combinaison que vous avez entr&eacute; n\'est pas bonne.';
                }
        }
        else
        {
                $form = true;
        }
        if($form)
        {
                //On affiche un message sil y a lieu
        if(isset($message))
        {
                echo '<div class="message">'.$message.'</div>';
        }
        //On affiche le formulaire
?>
<div class="content">
    <form action="connexion.php" method="post">
        Veuillez entrer vos identifiants pour vous connecter:<br />
        <div class="center">
            <label for="username">Nom d'utilisateur</label><input type="text" name="username" id="username" value="<?php echo htmlentities($ousername, ENT_QUOTES, 'UTF-8'); ?>" /><br />
            <label for="password">Mot de passe</label><input type="password" name="password" id="password" /><br />
            <input type="submit" value="Connection" />
      </div>
    </form>
</div>
<?php
        }
}
?>

Eléphanteau du PHP | 18 Messages

05 déc. 2011, 20:32

Est-ce que chaque lien est identifié à qui il appartient ?
Est-ce que une fois connecté, l'utilisateur ne doit voir que ses propres liens ?

Si tu as répondu OUI à chacune des questions, ta requête doit ressembler à ceci

Code : Tout sélectionner

$query_rssup = "SELECT * FROM liens WHERE toniddeclient = '" . $_SESSION[iduser] . "'";
De cette facon tu récupères seulement les données de ton client connecté et j'ai mis toniddeclient car je ne connais pas la structure de ta table LIENS.

Sylvain

Eléphanteau du PHP | 23 Messages

06 déc. 2011, 16:03

nickel merci beaucoup sylvain pour le coup de main ;)

$query_rssup = "SELECT * FROM liens WHERE user_name = '" . $_SESSION['username'] . "'";

ma table principal ne comporte pas le meme id que ma table liens parce que j'ai mi les deux id en auto increment pour eviter les problémes.
par contre les deux tables contiennes bien le meme user_name.
normalement il est impossible de s'inscrire avec un pseudo identique , jéspere que c'est suffisant comme control ^^.