Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2932 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Transmission de variable entre deux pages PHP ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] Transmission de variable entre deux pages PHP ?

n°1253562
Moufle2mer
Posté le 25-11-2005 à 23:24:51  profilanswer
 

Bonjour à tous,
 
J'apprend actuellement le php er j'essaye de créer une liste de contact que l'on pourrait éditer (ajout, suppression, etc...)...Mon problème est la suppression : dans une 1ère page en php j'affiche un tableau nom, prénom, tél, email + une checkbox de l'ensemble des contact afin de choisir si l'on veut le supprimer ou pas et tout ça suivi d'un bouton type submit  supprimer qui dirige vers une seconde page...Cette seconde page supprime les contacts voulus et affiche la nouvelle liste...Un peu à la façon des boites mails et des messages que l'on veut supprimer...Voilà les codes :
 
1ère page :
 
<?
 
$i=0;
$m=mysql_connect("localhost","root","" );
mysql_select_db("test",$m);
$RES="SELECT * FROM agendatest";
$chance=mysql_query($RES);
 
echo "<TABLE ALIGN = center><tr><td><h2> Suppression des contacts de votre agenda</h2></td></tr></TABLE><br><br>";
echo"<TABLE BORDER=2 ALIGN=center>";
while($results=mysql_fetch_array($chance))
{
 echo "<tr><td>"?><form METHOD=POST ACTION=http://********/Test/supp2.php><Input type="checkbox" name="tab[]" value=1><?echo"</td><td>".$results["nom"]."</td><td>".$results["prenom"]."</td><td>".$results["tel"]."</td><td>".$results["email"]."</td></tr>\n";
 $i++;
}
echo"</TABLE>";
?>
<br>
<TABLE ALIGN = center><TR><TD><Input type="submit" value=Supprimer></TD></TR></TABLE>
</form>
<br><br>
<TABLE ALIGN = center><tr><td><A HREF = "Menu.html">Retour vers le menu principal</A></td></tr></TABLE><br><br>
 
2e page :
 
<?
 
$m=mysql_connect("localhost","root","" );
mysql_select_db("test",$m);
 
$RES="SELECT * FROM agendatest";
$chance=mysql_query($RES);
$num_rows = mysql_num_rows($chance);
 
for ( $i = 0; $i < $num_rows; $i++ )
{
$results=mysql_fetch_array($chance);
if ( $_POST["tab[$i]"]== 1)
{
$RES1="Delete * FROM agendatest";
$chance1=mysql_query($RES1);
}
}
reset($results);
 
echo "<TABLE ALIGN = center><tr><td><h2> Liste des contacts de votre agenda</h2></td></tr></TABLE><br><br>";
echo"<TABLE BORDER=2 ALIGN=center>";
while($results=mysql_fetch_array($chance))
{
 echo "<tr><td>".$results["nom"]."</td><td>".$results["prenom"]."</td><td>".$results["tel"]."</td><td>".$results["email"]."</td></tr>\n";
}
echo"</TABLE>";
 
?>
<HTML>
<br><br><br>
<TABLE ALIGN = center><tr><td><A HREF = "Menu.html">Retour vers le menu principal</A></td></tr></TABLE><br><br>
<TABLE ALIGN = center><tr><td><A HREF = "supp.php">Supprimer un autre contact</A></td></tr></TABLE><br><br>
</HTML>
 
 
et voilà le message d'erreur  qui s'affiche sur la 2e page:
 
Notice: Undefined index: tab[0] in c:\program files\easyphp1-8\www\test\supp2.php on line 13
 
Notice: Undefined index: tab[1] in c:\program files\easyphp1-8\www\test\supp2.php on line 13
 
Notice: Undefined index: tab[2] in c:\program files\easyphp1-8\www\test\supp2.php on line 13
 
Notice: Undefined index: tab[3] in c:\program files\easyphp1-8\www\test\supp2.php on line 13
 
Bon j'ai (presque) tout essayé, enfin tout (entre autre php_track_vars qui ne veut pas marcher (erreur du genre undefined constant) mais aussi session start etc...)
 
Alors SVP SVP aidez-moi...
 
MERCI...


Message édité par Moufle2mer le 27-11-2005 à 00:05:59
mood
Publicité
Posté le 25-11-2005 à 23:24:51  profilanswer
 

n°1253565
leflos5
On est ou on est pas :)
Posté le 25-11-2005 à 23:38:25  profilanswer
 

1) tu sais que si tu lisais le FM tu comprendrais mieux certaines choses :)
 
2) mysql_fetch_array() renvoit false si plus de résultalt donc:
- t'as un résultat à la fois donc ton for...
- un while est plus de mise
- t'as qu'un enregistrement unique à la fois ;)
 
3) le sql ça s'apprend ;) Tu peux supprimer un seul enregistrement en utilisant la clause where ;)
 
4) il est plus de coutume de passer l'id de la "ligne" pour supprimer que ce que tu veux et en être sur (pense à l'accès concurrent ;) )
 
Poubelle et on recommence :P
 
Et un petit conseil, une classe de connexion, ça facilite les chose, un user root au moins on en modifie le mdp mais on l'utilise pas pour un truc que tout le monde utilise...

n°1253592
Moufle2mer
Posté le 26-11-2005 à 01:11:55  profilanswer
 

Bon désolé de faire mon lourd mais je comprends pas trop...
 
Je sais que tu vas le prendre mal mais mon but premier est que ça marche et là j'ai pas trop compris ce qui ne marchait pas...
 
J'ai pas des heures de PHP derrière moi, je suis plus que débutant, alors allons-y molo STP...
 
Alors dans tout ce que tu m'a dis :
 
1) Le FM pour French MAnual ?
 
2) Donc c'est ma boucle for qui est responsable de tout ça ?
 
3) et 4) WHERE ça je comprends et là je l'avoue je comprends pas pourquoi je n'ai pas utilisé, vu que je l'avais crée dans ma base de données...
 
4) l'accés concurrent ?????
 
Poubelle, j'ai pas le courage...rafistolage oui...
 
Pour ce qui est de la conclusion j'ai rien compris...Juste un truc pour excuse c'est du copier coller du cours que j'ai suivi (bien pourri d'ailleurs comme tu as surement remarquer)...
 
Alors concrétement où est le problème...J'ose pas te le demander, bon aller je me jète : une correction ptetre ?

n°1253596
leflos5
On est ou on est pas :)
Posté le 26-11-2005 à 03:16:42  profilanswer
 

Moufle2mer a écrit :

Bon désolé de faire mon lourd mais je comprends pas trop...
 
Je sais que tu vas le prendre mal mais mon but premier est que ça marche et là j'ai pas trop compris ce qui ne marchait pas...
 
J'ai pas des heures de PHP derrière moi, je suis plus que débutant, alors allons-y molo STP...


Le problème est peut être là, c'est pas que le php mais aussi le sql et je parle pas du html ;)
 

Moufle2mer a écrit :


Alors dans tout ce que tu m'a dis :
 
1) Le FM pour French MAnual ?


 
Fucking Manual :D Le truc que personne ne lit mais devrait ;) En gros, pour php t'as nexen.net ou autres et google reste ton ami ;)
Après si la prog ça te parle pas va falloir t'y faire mais bosser un peu :)

Moufle2mer a écrit :


2) Donc c'est ma boucle for qui est responsable de tout ça ?


Oui parce que mysql_fetch_cequetuveux, renvoit un résultat et un seul, mais ça c'est marqué dans le fameux FM :D
En fait si c'est tableau, il renvoit le résultat suivant, toujours marqué dans le FM :)
Donc tu fais un while(musql_fetch...) et quand t'es au bout t'as false donc ça s'arrête ;)  
 
En fait tu l'utilises bien en lecture mais ton souci est plus la méthode de suppression, j'avais lu qu'en travers :p
 

Moufle2mer a écrit :


3) et 4) WHERE ça je comprends et là je l'avoue je comprends pas pourquoi je n'ai pas utilisé, vu que je l'avais crée dans ma base de données...


Créé un Id je suppose ;) Vu que tu dois dois surement pouvoir identifier chaque ligne de chaque table de façon unique :whistle:
Donc Delete ...where ID=monID, mais ça c'est du sql ;) Un poil de conception j'avoue mais du sql ;)

Moufle2mer a écrit :


4) l'accés concurrent ?????


Si quelqu'un ajoute, si ça existe dans ton truc, avant quelqu'un supprime mais qu'il a affiché, aie la merde :D Tu supprimes ce qu'il faut pas, quoique vu que ça supprime rien ton truc :D

Moufle2mer a écrit :


Poubelle, j'ai pas le courage...rafistolage oui...


En fait je viens de comprendre ce que tu voualais faire...
Tu fais un tableau à l'affichage mais de données html et tu comptes relire le truc dans ton for (indépendant ultérieurement au moins, de ce que tu as affiché).
Donc passe l'ID du tuple ;) Pour faire un where dans l'action ultérieure.
 
Et au final dans ton truc brouillon, le problème ce situe probablement dans le fait que ==1 ça veut pas dire existe :D Essaye isset() && !empty()
 
Celà dit tu parcours une donnée html en tableau et considère que ça correspond à tes données initiales...

Moufle2mer a écrit :


Pour ce qui est de la conclusion j'ai rien compris...Juste un truc pour excuse c'est du copier coller du cours que j'ai suivi (bien pourri d'ailleurs comme tu as surement remarquer)...


T'as une connexion au serveur mysql, en root (super utilisateur par défaut et sans mdp par défaut, ça craint).
Une classe, t'évite d'écrire 2 fois la même chose si on peut dire ça comme ça dans ton cas :)
 

Moufle2mer a écrit :


Alors concrétement où est le problème...J'ose pas te le demander, bon aller je me jète : une correction ptetre ?


Non t'auras pas le truc qui marche :P Juste de quoi te faire réfléchir ;)

n°1253598
Moufle2mer
Posté le 26-11-2005 à 03:57:41  profilanswer
 

Bon j'y vois un peu plus claire, mais rien ne change, j'ai toujours le même problème :  
 
Notice: Undefined index: tab[0] in c:\program files\easyphp1-8\www\test\supp2.php on line 13  
 
Notice: Undefined index: tab[1] in c:\program files\easyphp1-8\www\test\supp2.php on line 13  
 
Notice: Undefined index: tab[2] in c:\program files\easyphp1-8\www\test\supp2.php on line 13  
 
Notice: Undefined index: tab[3] in c:\program files\easyphp1-8\www\test\supp2.php on line 13  
 
Et ça ça me les brise vraiment, je vois pas où est l'erreur : apparemment je définis le Input type="checkbox" name="tab[]" dans la première page et il n'est pas reconnu dans la seconde !!!!!!!!!!!!! Alors STP dit moi où est l'erreur...

n°1253609
sielfried
Posté le 26-11-2005 à 09:14:42  profilanswer
 

Un checkbox non coché n'envoie pas sa valeur à la page cible du formulaire.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1253706
Moufle2mer
Posté le 26-11-2005 à 13:31:11  profilanswer
 

Pourtant quand je coche tous les checkbox j'ai toujours les mêmes problèmes....
 
Bon essayons d'être pragmatique : comment créer une page php avec à l'intérieur des checkbox créés dans une boucle avec pour nom tab[], afin que la 2e page php puisse savoir si dans la 1ère pages les checkbox ont été rempli ou pas...

n°1253715
sielfried
Posté le 26-11-2005 à 13:46:30  profilanswer
 

Code :
  1. formulaire.html
  2. <form method="post" action="reception.php">
  3. <input type="checkbox" name="tab[]" value="1" />
  4. <input type="checkbox" name="tab[]" value="2" />
  5. <input type="checkbox" name="tab[]" value="3" />
  6. <input type="submit" value="OK" />
  7. </form>
  8. reception.php
  9. <?php
  10. if (!isset($_POST['tab'])) {
  11. echo 'Aucune case selectionee.';
  12. }
  13. else {
  14. foreach ($_POST['tab'] as $value) {
  15.  echo $value, '<br />';
  16. }
  17. }
  18. ?>


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1253727
Moufle2mer
Posté le 26-11-2005 à 14:45:16  profilanswer
 

ok alors là je commence à voir le bout du tunnel...Enfin j'espère, merci sielfried...Et comme tu l'avais prévu un check box non coché ne donne pas sa valeur à la page cible formulaire....
 
J'ai essayé une initialisation de tab[], mais apparement elle "fout le camp"...comment m'en sortir ?

n°1253728
The-Shadow
Développeur
T'as été voir dans ton profil?
Posté le 26-11-2005 à 14:46:33  profilanswer
 

Quel intérêt de récupérer une checkbox si elle n'a pas été coché ?

mood
Publicité
Posté le 26-11-2005 à 14:46:33  profilanswer
 

n°1253743
Moufle2mer
Posté le 26-11-2005 à 15:23:46  profilanswer
 

bon d'accord alors : si ya pas de réponse à cette question, il va falloir détourner le problème...
 
Alors (on m'arréte si j'ai faux) je donne à value le numéro de la ligne affiché qui correspond à $value et dans la 2nde page j'écris :
 
foreach ($_POST['tab'] as $value) {
  $RES1="DELETE * FROM agendatest WHERE id=$value";
  $chance1=mysql_query($RES1);
    }
 
Bon si ça c'est juste, il reste un problème : comment faire pour que $value prenne la valeur de la ligne : parceque mes lignes sont crées dans une boucle, alors les value="1" value="2" value="3" c'est bien mais dans une boucle, boffe...
Alors pour prouver que je bosse j'ai essayé value = <? $i ?> et toutes les alternatives avec des guillemets un peu partout...

n°1253855
Moufle2mer
Posté le 26-11-2005 à 18:11:40  profilanswer
 

UP personne SVP, juste ça ...

n°1253921
Moufle2mer
Posté le 26-11-2005 à 20:15:21  profilanswer
 

Bon alors je retente :
 
Dans ma première page en php j'ai la boucle suivante :
 
while($results=mysql_fetch_array($chance))
{
 echo "<tr><td>"?><form METHOD=POST ACTION=http://127.0.0.1/Test/supp2.php><Input type="checkbox" name="tab[]" value = <? $i ?>><?echo"</td><td>".$results["nom"]."</td><td>".$results["prenom"]."</td><td>".$results["tel"]."</td><td>".$results["email"]."</td></tr>\n";
 $i++;
}
 
et c'est là mon problème, au niveau du value !!!!!! quand je fais un echo $value, j'obtiens $i...j'ai beau essayer je trouve pas...
 
Alors SVP aidez-moi c'est urgent !!!!!

n°1253930
sielfried
Posté le 26-11-2005 à 20:32:52  profilanswer
 

Tu vas arriver à rien faire si t'as aussi peu de bases en php/html, donc là admettons que ce soit pressé mais la prochaine fois faudra te mettre un peu à jour. :/
 
- <? $i ?> ne fait rien, ce que tu veux c'est <?php echo $i; ?> ;
- formulaire dans une boucle ? les checkboxes, ok, pas le formulaire... :spamafote:


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1254009
Moufle2mer
Posté le 27-11-2005 à 00:05:21  profilanswer
 

Merci pour tout sielfried...Voilà j'ai tout terminé à temps grâce à toi, merci...Je suis sûr qu'il y aurait encore plein de remarques à faire, mais ça marche !!!!!!!! Donc mille fois merci !!

n°1254721
leflos5
On est ou on est pas :)
Posté le 28-11-2005 à 15:46:25  profilanswer
 

Le progèse serait de le faire en une fois :whistle:

n°1255005
erwan83
Du Shift DEL tu te méfieras !
Posté le 28-11-2005 à 22:42:17  profilanswer
 

tu aurais l'adresse de la page en question ???


---------------
http://www.ypikay.com

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] Transmission de variable entre deux pages PHP ?

 

Sujets relatifs
supprimer une feuille (résolu)[Résolu] Fonction Execlp avec nombre parametres variable
[PHP] Lister le contenu d'un repertoire en faisant des liens[resolu]PHP, TEMPLATE ET APPLET
[PHP] Probleme de compteur de visite et de cookieProbléme de menu PHP
[vba excel] [résolu]requête avec adodbModifier les caractéres spéciaux et les Majuscules d'une variable
Plus de sujets relatifs à : [RESOLU] Transmission de variable entre deux pages PHP ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR