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

- 28 oct. 2012 à 14:29 - Dernière réponse :  Schtouill - 29 oct. 2012 à 16:40
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 :)
Afficher la suite 

Votre réponse

19 réponses

Meilleure réponse
29 oct. 2012 à 11:19
3
Merci
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 !

Merci nicotontige 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de nicotontige
Meilleure réponse
29 oct. 2012 à 14:45
3
Merci
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].'
';
}
?>

Merci nicotontige 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de nicotontige
29 oct. 2012 à 11:23
0
Merci
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
Commenter la réponse de nicotontige
0
Merci
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 :)
Commenter la réponse de Schtouill
29 oct. 2012 à 13:38
0
Merci
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
Commenter la réponse de nicotontige
0
Merci
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...
Commenter la réponse de Schtouill
0
Merci
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 :/
Commenter la réponse de Schtouill
29 oct. 2012 à 14:44
0
Merci
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].'
';
}
?>
Commenter la réponse de nicotontige
0
Merci
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 :)
Commenter la réponse de Schtouill
0
Merci
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
Commenter la réponse de Schtouill
29 oct. 2012 à 15:09
0
Merci
pas de souci, plus qu'à mettre ce post en résolu

Et bon courage pour la suite
Commenter la réponse de nicotontige
0
Merci
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 :)
Commenter la réponse de Schtouill
29 oct. 2012 à 15:24
0
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.
Commenter la réponse de nicotontige
0
Merci
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.
Commenter la réponse de Schtouill
0
Merci
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"
Commenter la réponse de Schtouill
29 oct. 2012 à 15:35
0
Merci
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 ?
Commenter la réponse de nicotontige
0
Merci
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...
Commenter la réponse de Schtouill
29 oct. 2012 à 16:36
0
Merci
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 ....
Commenter la réponse de nicotontige
0
Merci
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 :)
Commenter la réponse de Schtouill

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.