Variable à transmettre dans un autre fichier [Résolu]

Signaler
-
 Schtouill -
Bonjour à tous.

Je suis désolé si le sujet a déjà été traité, mais je vous pose cette question en fonction de mon cas.

Je vous montre déjà le bout de mon code :
echo('Liste des rubriques : ' .'
'.'
');
  
  
  $requete=$connect->query('SELECT no_genre, nom_rubrique FROM rubrique'); ?>
  
  <?php

while($donnees=$requete->fetch())
{

$id=$donnees[0];
$nom=$donnees[1];
$_SESSION['id_rub']=$donnees[0];
$_SESSION['nom_rub']=$donnees[1];

echo \"----
$nom,  \n\" ?>
<td>
<?php
}

?>


Donc en fait, j'affiche les différentes rubriques de ma table dans un tableau, j'ai l'icone d'une poubelle dans chaque ligne du tableau pour supprimer la rubrique, il y a un message de confirmation avant de supprimer.

La requête de suppression est donc sur un autre page php, et je voulais savoir comment on pouvait savoir le nom de la rubrique sur laquelle il a cliqué ? (enfin sur quelle ligne il a cliqué sur la poubelle, pour supprimer la bonne rubrique).

Car j'ai testé avec une variable SESSION, mais logiquement, ça prend la dernière valeur de la boucle et donc ça supprime la mauvaise rubrique...

Avez vous une solution ?

Merci beaucoup :)

19 réponses


Oulala..

Je vois pas du tout ce que fait la notion de session dans ton code ...
il faut que tu utilises tout simplement les id, et que tu évites de traiter ça dans un lien href, mais créer plutôt une fonction que tu appelles quand tu cliques sur ton image, ça sera beaucoup plus simple !!

voici ce que tu désires
le script en question, avec en paramètre l'id que tu vas appeler quand tu cliques sur l'image :
<SCRIPT language="Javascript">
function question(id) {
if (confirm("Etes-vous sûr de vouloir supprimer cette rubrique ? (Cela détruira aussi toutes les nouvelles de ce genre)"))
document.location.href="sup_rub.php?id=" + id;
}

</script>


et enfin t'as boucle php :
<?php
while($donnees=$requete->fetch())
{
     echo "<tr><td>".$donnees[1]."</td>";
     echo '<td></tr>';
}
?>


Je pense que ça devrait t'aider !

oups, je sais pas comment modifier ce que j'ai écris, et comme j'ai fait une faute, je spam, bref je voulais écrire ça :
<?php
$droit=$connect->query('SELECT no_genre FROM droit_auteur WHERE no_user = 89');	
$data=$droit->fetchAll();
foreach($data as $dat) {
$tab[] = $dat[];
}
$req=$connect->query('SELECT no_genre, nom_rubrique FROM rubrique');
$donn=$req->fetchAll();
foreach($donn as $don)
{
if (in_array($don[0], $tab))
echo ''.$don[1].'
';
else
echo ''.$don[1].'
';
}
?>

arf, j'oubliais, il faut que tu traites ça dans un get pour le fichier sup_rub.php : $_GET['id'];

Je t'invite à aller voir ici si tu ne connais pas trop
Oui je vois je connais merci, j'avais juste pas pensé à faire comme ça au début

Le cursor:pointer fait quoi ?

J'avais réussi à mettre tout dans le echo pour que ça marche (j'ai galéré à cause de la concaténation alors que c'était tout bête...), mais c'est vrai que votre fonction est quand même beaucoup plus lisible que mon echo où tout est regroupé.

Merci beaucoup en tout cas :)

Le cursor:pointer sert a afficher ton curseur comme un pointeur (comme son nom l'indique quoi ), car ton image n'a pas de lien, et là c'est comme s'il y en avait un.
Juste un point de vue esthétique
D'accord merci :)

Et par contre j'ai encore une autre question.

En fait je veux cocher une checkbox en fonction de ma base.

$req=$connect->query('SELECT no_genre, nom_rubrique FROM rubrique');
while($don=$req->fetch())
{

echo ''.$don[1].'
';	


}


Donc là c'est pour afficher tous les genres possibles.

Mais, dans une autre table (droit_auteur), j'ai donc différents auteurs qui ont sur le droit sur certains genres. Donc je voudrais que les cases se cochent si les genres sont présents dans la table en fonction de l'auteur.

Donc pour savoir quels sont ces genres, il faudrait juste faire une requête SQL comme ça par exemple :
SELECT no_genre FROM droit_auteur WHERE no_user=82


Mais après je vois pas trop comment parcourir les deux en même temps et que ça coche les bonnes (il faut une condition ça c'est sur), et que ça affiche les cases le bon nombre de fois quoi aussi...
Pour l'instant en fait j'ai testé et j'ai ça :

$droit=$connect->query('SELECT no_genre FROM droit_auteur WHERE no_user = 89');	
$data=$droit->fetchAll();
$req=$connect->query('SELECT no_genre, nom_rubrique FROM rubrique');
$donn=$req->fetchAll();
foreach($donn as $don)
{
foreach($data as $dat) {
if ($dat[0]==$don[0]) 
echo ''.$don[1].'
';
else
echo ''.$don[1].'
';

}
}


Mais ça m'affiche plusieurs fois les cases vu qu'il y a 2 genres sur 3 qui sont associés à cet auteur dans la table droit_auteur :/

et si tu essayes ça :
<?php
$droit=$connect->query('SELECT no_genre FROM droit_auteur WHERE no_user = 89');	
$data=$droit->fetchAll();
foreach($data as $dat) {
$tab[] = $dat[];
}
$req=$connect->query('SELECT no_genre, nom_rubrique FROM rubrique');
$donn=$req->fetchAll();
foreach($donn as $don)
{
if (in_array($don[0], $os))
echo ''.$don[1].'
';
else
echo ''.$don[1].'
';
}
?>
J'ai l'erreur suivante :
Cannot use [] for reading

C'est un problème au niveau de la ligne "$tab[] = $dat[];", il n'accepte pas le $dat[].
Mais si je met $dat['no_genre'] ça marche nickel :)
Et j'ai rajouté un

if (isset($tab)) au cas ou il n'a aucun droit, et tout marche nickel :) Merci beaucoup en tout cas

pas de souci, plus qu'à mettre ce post en résolu

Et bon courage pour la suite
Mais je viens de tester le script en JS là d'hier, et finalement il marche pas, rien ne se passe quand je clique :x

Et merci :)

le script de tout à l'heure tu veux dire ? Celui pour supprimer ?
As-tu vérifier si le passage de paramètre se faisait bien ? (alert en javascript), et sur ta page de suppression test un echo de ta requete pour savoir s'il n'y a pas de problème.

S'il y a, redis le nous.
Le problème c'est que j'ai même pas le message de confirmation en fait quand je clique; rien ne se passe :/

Normalement il devrait pas y avoir de problème pour la requête vu qu'elle marchait avant en faisant un get aussi.
J'ai rien dit en fait ça marche parfaitement.

C'est juste que j'avais mis un mauvais truc dans la balise du script language="javascript"

s'il n'y a pas de message de confirmation, c'est que l'appel à la fonction est mauvaise.
As-tu changer le nom de la fonction, est-elle bien placé dans ton code ?
Et la fonction ne marche que dans ce cas là ?

Car j'ai essayé de faire la même chose pour les auteurs mais le message de confirmation apparaît pas...

hum .... oui, normalement

Le mieux que je te conseille, c'est d'installer firebug pour firefox, qui te donnera les erreurs rencontrées (excellent outil pour un développeur ).
Sinon, sans code, je ne peux t'aider ....
En fait c'est juste parce que la fonction prend que les int, je pensais qu'elle pouvait aussi prendre les string c'est pour ça que ça ne marchait pas.

Merci beaucoup pour votre aide en tout cas :)