Transmission de variable entre deux pages PHP ? [RESOLU] - PHP - Programmation
Marsh Posté le 25-11-2005 à 23:38:25
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
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...
Marsh Posté le 26-11-2005 à 01:11:55
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 ?
Marsh Posté le 26-11-2005 à 03:16:42
Moufle2mer a écrit : Bon désolé de faire mon lourd mais je comprends pas trop... |
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 : |
Fucking Manual 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 : |
Oui parce que mysql_fetch_cequetuveux, renvoit un résultat et un seul, mais ça c'est marqué dans le fameux FM
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
Moufle2mer a écrit : |
Créé un Id je suppose Vu que tu dois dois surement pouvoir identifier chaque ligne de chaque table de façon unique
Donc Delete ...where ID=monID, mais ça c'est du sql Un poil de conception j'avoue mais du sql
Moufle2mer a écrit : |
Si quelqu'un ajoute, si ça existe dans ton truc, avant quelqu'un supprime mais qu'il a affiché, aie la merde Tu supprimes ce qu'il faut pas, quoique vu que ça supprime rien ton truc
Moufle2mer a écrit : |
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 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 : |
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 : |
Non t'auras pas le truc qui marche Juste de quoi te faire réfléchir
Marsh Posté le 26-11-2005 à 03:57:41
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...
Marsh Posté le 26-11-2005 à 09:14:42
Un checkbox non coché n'envoie pas sa valeur à la page cible du formulaire.
Marsh Posté le 26-11-2005 à 13:31:11
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...
Marsh Posté le 26-11-2005 à 13:46:30
Code :
|
Marsh Posté le 26-11-2005 à 14:45:16
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 ?
Marsh Posté le 26-11-2005 à 14:46:33
Quel intérêt de récupérer une checkbox si elle n'a pas été coché ?
Marsh Posté le 26-11-2005 à 15:23:46
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...
Marsh Posté le 26-11-2005 à 20:15:21
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 !!!!!
Marsh Posté le 26-11-2005 à 20:32:52
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...
Marsh Posté le 27-11-2005 à 00:05:21
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 !!
Marsh Posté le 28-11-2005 à 22:42:17
Reply
Marsh Posté le 25-11-2005 à 23:24:51
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