Encore un problème de DELETE where id = get (une variable)

ViPHP
AB
ViPHP | 5818 Messages

17 janv. 2008, 18:48

if($submit2) ...

Elle est définie où cette variable $submit2, en tous cas elle a pas l'air d'être passée dans ton URL

Eléphanteau du PHP | 11 Messages

17 janv. 2008, 21:44

Et bien, je débute franchement en code...

Pour que les actions du if se déclenchent, j'ai mis le code suivant dans la partie html de la page :

Code : Tout sélectionner

<form method="post" action="afficheCv.php"> <input type="submit" name="submit2" value="Supprimer la fiche de l'annuaire !"> </form>

ViPHP
AB
ViPHP | 5818 Messages

17 janv. 2008, 22:01

Pour que l'on puisse t'aider il faut tout le code de ton formulaire ainsi que toute la requête que tu souhaites déclencher avec l'envoi de ce formulaire. (sans les paramètres de connexion à la bdd évidemment)

Eléphanteau du PHP | 11 Messages

17 janv. 2008, 22:12

Voilà tout le code de toute ma page...


Code : Tout sélectionner

<? error_reporting(E_ALL & ~E_NOTICE); $db = mysql_connect("mysql10.oxyd.fr","xxxx","xxxx"); mysql_select_db("xxxx",$db); $sql="SELECT * FROM etudiants WHERE idEtudiant='".$_GET["idEtudiant"]."'"; $result = mysql_query($sql) or die("Query Failed"); $row = mysql_fetch_array($result, MYSQL_ASSOC); $nbRows = mysql_num_rows($result); $idEtudiant=$row["idEtudiant"]; $promo=$row["promo"]; $civilite=$row["civilite"]; $nom=$row["nom"]; $prenom=$row["prenom"]; $epouse=$row["epouse"]; $adressePerso=$row["adressePerso"]; $diversAdressePerso=$row["diversAdressePerso"]; $cpPerso=$row["cpPerso"]; $villePerso=$row["villePerso"]; $mailPerso=$row["mailPerso"]; $telephonePerso=$row["telephonePerso"]; $societe=$row["societe"]; $fonction=$row["fonction"]; $descriptionFonction=$row["descriptionFonction"]; $adresseProf=$row["adresseProf"]; $diversAdresseProf=$row["diversAdresseProf"]; $cpProf=$row["cpProf"]; $villeProf=$row["villeProf"]; $mailProf=$row["mailProf"]; $telephoneProf=$row["telephoneProf"]; $dateMaj=$row["dateMaj"]; mysql_free_result($result); mysql_close($db); if($submit2){ //connection avec affichage des erreurs SQL $db = mysql_connect("mysql10.oxyd.fr","XXX","XXX") or die('connection echoue : '.mysql_error()); mysql_select_db("XXX",$db); $sql="SELECT * FROM etudiants WHERE idEtudiant='".$_GET["idEtudiant"]."'"; //selection avec affichage des erreurs SQL $result = mysql_query($sql) or die("Query Failed: ".mysql_error()); //effacement avec de la requete et des erreurs SQL $requete_effacement = "DELETE FROM etudiants WHERE idEtudiant=".$_GET["idEtudiant"]; echo $requete_effacement; mysql_query($requete_effacement) or die('effacement echoue : '.mysql_error()); mysql_close($db); } ?> <table width="778" border="0" cellspacing="0" cellpadding="0"> <tr valign="top"> <td width="522"> <table width="522" border="0" cellspacing="0" cellpadding="0"> <tr> <style> .top{font-style: italic;text-align: center;background-color: #FFFFCC;background-color:#00a0ff;color:#FFFFFF;} .top2{font-size:10pt; vertical-align:center;text-align:center;border:1px solid;border-color:black;font-style: bold;background-color: #FFFFCC;background-color:#00a0ff;color:#FFFFFF;} .titi{font-size:10pt; vertical-align:center;text-align:center;border:1px solid;border-color:black;} </Style> <FORM action="modifierCv.php" method="POST"> <TABLE width="522"> <TR> <TD colspan="2" align="center" class="top"> Promotion <?php echo " ".$promo ?> </TD> </TR> <TR> <TD class="titi" width="20%" rowspan="2"> <FORM action="modifierCv.php" method="POST"> Données Personnelles : <BR> <input type="submit" value="Modifier"> <input type="hidden" name="idEtudiant" value="<?php echo $idEtudiant ?>"> <input type="hidden" name="provenance" value="afficheCv"> </FORM> <TD align="center" class="titi"> <b> <?php echo $civilite." "; echo $prenom." "; echo $nom; if ($epouse<>"") echo " epouse ".$epouse; ?> </b> </TD> </TR> <TR> <TD class="titi"> <?php echo $adressePerso; if($diversAdressePerso<>"") echo "<BR>"; echo $diversAdressePerso; if($cpPerso<>"" || $villePerso<>"") echo "<BR>"; echo $cpPerso." ".$villePerso; echo "<BR><BR>"; echo $telephonePerso; echo "<BR><BR>"; echo $mailPerso ?> </TD> </TR> <TR> <TD class="titi"> <FORM action="modifierCv.php" method="POST"> Données Professionnelles <BR> <input type="submit" value="Modifier"> <input type="hidden" name="idEtudiant" value="<?php echo $idEtudiant ?>"> <input type="hidden" name="provenance" value="afficheCv"> </FORM> </TD> <TD class="titi"> <?php echo $societe; echo "<BR><BR>"; echo $fonction; echo "<BR>"; echo $descriptionFonction; echo "<BR><BR>"; echo $adresseProf; if ($diversAdresseProf<>"") echo "<BR>"; echo $diversAdresseProf; if($cpProf<>"" || $villeProf<>"") echo "<BR>"; echo $cpProf." ".$villeProf; echo "<BR><BR>"; echo $mailProf; echo "<BR>"; echo $telephoneProf; ?> </TD> </TR> <TR> <TD width="20%" class="titi"> <FORM action="cursus.php" method="GET"> Formations : <BR> <input type="submit" value="Modifier"> <input type="hidden" name="idEtudiant" value="<?php echo $idEtudiant ?>"> <input type="hidden" name="provenance" value="afficheCv"> </FORM> </TD> <TD class="titi"> <BR> <?php $db = mysql_connect("mysql10.oxyd.fr","xxxx","xxxx"); mysql_select_db("xxxx",$db); $sql="SELECT * FROM cursus WHERE idEtudiant=".$idEtudiant." ORDER BY idCursus"; $result = mysql_query($sql) or die("Query Failed"); if(mysql_num_rows($result)>0) { echo '<table width="100%">'; echo '<TR>';; echo '<TD class=top2>'; echo'Intitulé de la formation'; echo '</TD>'; echo '<TD class=top2>'; echo 'Etablissement'; echo '</TD>'; echo '</TR>'; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "<TR>"; echo '<TD class="titi">'; echo $row["intitule"]."&nbsp;"; echo "</TD>"; echo '<TD class="titi">'; echo $row["etablissement"]."&nbsp;"; echo "</TD>"; echo "</TR>"; } echo "</TABLE>"; } ?> <BR> </TD> </TR> <TR> <TD width="20%" class="titi" > <FORM action="travail.php" method="GET"> Expériences Professionnelles : <BR> <input type="submit" value="Modifier"> <input type="hidden" name="idEtudiant" value="<?php echo $idEtudiant ?>"> <input type="hidden" name="provenance" value="afficheCv"> </FORM> </TD> <TD class="titi"> <BR> <?php $db = mysql_connect("mysql10.oxyd.fr","xxx","xxxx"); mysql_select_db("xxxx",$db); $sql="SELECT * FROM travail WHERE idEtudiant=".$idEtudiant." ORDER BY idTravail"; $result = mysql_query($sql) or die("Query Failed"); if(mysql_num_rows($result)>0) { echo '<table width="100%">'; echo '<TR>';; /* echo '<TD class=top2>'; echo'Fonction occupée'; echo '</TD>'; */ echo '<TD class=top2>'; echo 'Société'; echo '</TD>'; echo '</TR>'; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "<TR>"; /* echo '<TD class="titi">'; echo $row["fonction"]; echo "</TD>"; */ echo '<TD class="titi">'; echo $row["societe"]; echo "</TD>"; echo "</TR>"; } echo "</TABLE>"; } ?> <BR> </TD> </TR> <TR> <TD colspan="2" class="titi"> <p><BR> Date de Mise à jour : <?php if($dateMaj<>"0000-00-00") echo substr($dateMaj,8,2)."-".substr($dateMaj,5,2)."-".substr($dateMaj,0,4); else echo " Aucune"; ?> <BR> <BR> </p></TD> </TR></table> <TABLE width="521"> <td width="255"> <FORM method="POST" action="listeCv.php"> <input type="submit" value="Retour"> </FORM> </td> <td width="254"> <form method="post" action="afficheCv.php"> <input type="submit" name="submit2" value="Supprimer la fiche de l'annuaire !"> </form> </td> </table> <hr>

ViPHP
AB
ViPHP | 5818 Messages

18 janv. 2008, 00:15

Hum ... faut tout revoir.

Indiques nous en détail ce que tu veux comme fonctionnement de ta page.

Que doit-elle afficher lors du premier affichage (au chargement).

Et que souhaites-tu faire ensuite.

Avec ton code j'ai une vague idée mais c'est très brouillon dans ma tête.

Eléphanteau du PHP | 11 Messages

18 janv. 2008, 12:27

Je souhaite afficher une page qui irait chercher dans la base Mysql les infos de l’étudiant en question, repéré par sa valeur de idEtudiant. La page afficherait donc son nom, son adresse, son numéro de téléphone, sa fonction etc.

Avec des boutons « Modifier », on accède à une autre page qui permet de procéder à des modifications des champs et de sauvegarder.

En bas de ma page, un bouton « supprimer la fiche » permet d’effacer purement et simplement la ligne dans la table étudiant.

Le problème ne viendrait-t-il pas de mon bouton « supprimer la fiche », qui ne fait pas appel à get idEtudiant ? Cela expliquerait pourquoi la requête marche en dehors de if (submit) ( blabla) mais pas en dedans…

Encore merci de votre aide et à bientôt !

ViPHP
AB
ViPHP | 5818 Messages

18 janv. 2008, 21:38

Bah j'aurai pas le temps de regarder ça ce week end. Si personne ne répond d'ici là, je verrai ça lundi :wink:

Eléphanteau du PHP | 27 Messages

19 janv. 2008, 00:12

Alors, il y a plusieurs problèmes :
<form method="post" action="afficheCv.php">
<input type="submit" name="submit2" value="Supprimer la fiche de l'annuaire !">
</form> 
- tu affiches un bouton pour supprimer la fiche mais sans son identifiant ?!
- ton "formulaire" est en mode "post" et tu essayes de récupérer l'identifiant de la fiche (qui est nulle part) dans $_GET[] ??

Pour faire simple, tu peux juste faire un lien qui te renvoi vers cette même page avec en paramètre l'identifiant de la fiche :
echo '<a href="afficheCv.php?id_fiche_suppr='.$id.'" title="supprimer la fiche">Supprimer</a>';
ensuite tu n'a plus qu'a tester si $_GET['id_fiche_suppr'] existe :
if(isset($_GET['id_fiche_suppr']) && !empty($_GET['id_fiche_suppr'])){
$id=intval($_GET['id_fiche_suppr']); //on verifie le type pour un minimum de sécurité
$query='DELETE FROM latable WHERE id='.$id;//la requete
mysql_query($query);
}
IMPORTANT : pense à vérifier et à protéger le contenu de chaque variable utilisée dans tes requêtes sql, en particulier le $_GET et $_POST (les fonctions intval(), addslashes(), mysql_real_escape_string() sont la pour ça), c'est un minimum en matière de sécurité. La documentation à propos de ça ne manque pas, n'hésite pas à y jeter un oeil. :roll: