> Tous les forums > Forum des Webmasters
 delete base mysql, les droits ??? (RESOLU)
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
t671
  Posté le 26/12/2004 @ 14:56 
Aller en bas de la page 
Astucien
Bonjour, J'ai une base mysql. J'ai commencé à faire un site pour gérer cette base (en local, uniquement, pour l'instant). Ds un menu, je peux choisir de supprimer un élément de la base. Je fais donc une rech de cet élément, qui est affiché, et ensuite je choisi en cliquanrdessus de le supprimer. Mais à ce moment, j'ai ce msg : You don't have permission to access /php/formulaire/DELETE * FROM hdd where nom like HUMBERTAND prenom like Thierry AND date_naissance like 27.12.1963>Suppression</a><td bgcolor= on this server. Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.[pleurer] Je me connecte en tant que root sur ma base ....... donc avec ts les droits !!!!???? Qqun peut-il m'aider ???? [smile] Merci

Modifié par t671 le 03/01/2005 13:23
Publicité
STAR*PC
 Posté le 26/12/2004 à 22:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, Il n'y a aucun probleme de droits MySQL ici. Ta requete MySQL ne doit pas se trouver dans un lien comme elle l'est dans ton bout de code ! Tu peux procéder de la sorte : <a href="./action.php?mode=suppression">Suppression</a> un lien vers le fichier qui sera chargé de supprimer les enregistrements. et dans ce fichier [action.php dans mon lien du dessus] (je procede comme si tu utilise le PHP comme language) <?php mysql_connect('', '', ''); //connexion, à completer mysql_select_db(''); //base de donnée, à completer if($HTTP_GET_VARS['mode'] == 'suppression') //si le parametre entré est la suppression, alors ... { mysql_query('DELETE * FROM hdd where nom like HUMBERTAND prenom like Thierry AND date_naissance like 27.12.1963'); //ta requete de suppresion } mysql_close(); //fermeture de la connexion ?> J'espere t'avoir éclairé ... @++

Modifié par STAR*PC le 26/12/2004 22:52
t671
 Posté le 30/12/2004 à 18:05 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Merci beaucoup STAR*PC pour ton aide. Je répond un peu en retard car très pris cesderniers temps .......!!! J'ai fait ce que tu m'as dit, mais le résultat ne fonctionne pas. Quand je sélectionne (clic) l'élément à supprimer, j'obtient une page blanche (ce qui peut-être normal), mais l'élément est tjrs présent ds ma base. Voici ce que j'ai écrit : 1°) formulaire afficher suite à une recherche sur nom, prénom et datede naissance : // Affichage des résultats dans un tableau. if($total) { // début du tableau echo '<table bgcolor="#FFFFFF">'."\n"; // première ligne on affiche les titres Nom et Prénom dans 3 colonnes echo '<tr>'; echo '<td bgcolor="#669999" width="156"><center><b><u>Nom</u></b></td>'; echo '<td bgcolor="#669999" width="200"><b><u>Prénom</u></b></td>'; echo '<td bgcolor="#669999" width="89"><b><u>Né le</u></b></td>'; echo '</tr>'."\n"; // lecture et affichage des résultats sur 3 colonne. while($row = mysql_fetch_array($result)) { echo '<td bgcolor="#CCCCCC" width="156"><a href="./suppression.php?mode=suppression">'.$row['nom'].'</a></td>'; echo '<td bgcolor="#CCCCCC" width="200">'.$row['prenom'].'</td>'; echo '<td bgcolor="#CCCCCC" width="89">'.$row['date_naissance'].'</td>'; echo '</tr>'."\n"; } 2°) Suppression de l'élément après sélection (clic)- suppression.php : <?php // information pour la connection à le DB $host = 'localhost'; $user = 'thhu'; $pass = ''; $db = 'base_gedcom'; // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); // suppression if($HTTP_GET_VARS['mode'] == 'suppression') //si le parametre entré est la suppression, alors ... { mysql_query('DELETE * FROM hdd where nom like .$row['nom'].'); } mysql_close(); //fermeture de la connexion ?> J'ai essayé plusieurs manière d'indiquer le $row ds le mysql_query(delete), sans succès. Et comme je t'ai dit, je n'ai pô de msg d'erreur .... !!!??? Tu en penses quoi ?
STAR*PC
 Posté le 30/12/2004 à 18:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, Tout est bon, seulement la variable $row n'est pas définie dans le fichier suppression.php ! Donc il te faut trouver une alternative en passant des parametres en URL ou dans un formulaire. Moi j'aurais crée une autre colonne dans ta table, afin de définir chaque enregistrement par un numéro. Il suffit ensuite de passer ce numéro dans l'URL, de le récuperer dans le fichier de suppression ... Dans ton cas, tu peux faire avec le nom+prénom mais attention certains caractères peuvent etre problématiques. Ca ferais donc : 1°) formulaire afficher suite à une recherche sur nom, prénom et datede naissance : // Affichage des résultats dans un tableau. if($total) { // début du tableau echo '<table bgcolor="#FFFFFF">'."\n"; // première ligne on affiche les titres Nom et Prénom dans 3 colonnes echo '<tr>'; echo '<td bgcolor="#669999" width="156"><center><b><u>Nom</u></b></td>'; echo '<td bgcolor="#669999" width="200"><b><u>Prénom</u></b></td>'; echo '<td bgcolor="#669999" width="89"><b><u>Né le</u></b></td>'; echo '</tr>'."\n"; // lecture et affichage des résultats sur 3 colonne. while($row = mysql_fetch_array($result)) { echo '<td bgcolor="#CCCCCC" width="156"><a href="./suppression.php?nom='.$row['nom'].'&prenom='.$row['prenom'].'">'.$row['nom'].'</a></td>'; echo '<td bgcolor="#CCCCCC" width="200">'.$row['prenom'].'</td>'; echo '<td bgcolor="#CCCCCC" width="89">'.$row['date_naissance'].'</td>'; echo '</tr>'."\n"; } 2°) Suppression de l'élément après sélection (clic)- suppression.php : <?php // information pour la connection à le DB $host = 'localhost'; $user = 'thhu'; $pass = ''; $db = 'base_gedcom'; $nom = $HTTP_GET_VARS['nom']; $prenom = $HTTP_GET_VARS['prenom']; if(!$nom OR !$prenom) // on vérifie que l'on a bien le nom ET le prenom { echo '<b>Erreur:</b> un parametre est manquant, nom ou prenom.'; break; } // connection à la DB mysql_connect ($host,$user,$pass); mysql_select_db($db); // suppression $suppression = mysql_query('DELETE * FROM hdd WHERE nom='.$nom.' AND prenom='.$prenom); if($suppression) { echo '<b>Suppression effectuée</b>'; } else { echo '<b>Erreur:</b> '.mysql_error(); } mysql_close(); //fermeture de la connexion ?> Après tu peux améliorer en protegeant un peu tout ça (vérifications & demandes de confirmations de suppression) ... @++

Modifié par STAR*PC le 30/12/2004 18:35
t671
 Posté le 01/01/2005 à 15:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Bonjour STAR*PC. Et tout d'abord, meilleurs voeux de bonheur à toi, ainsi qu'à toute l'équipe de PC Astuces et à ses adhérents ....!!! Pour en revenir à ma programmation en php, j'ai finalement créer une colonne numéroté en "auto-incrémente" ds ma base mysql. Qui me permettra à repérer mes éléments plus facilement. Et voici ce que j'ai écrit ds mon script : 1) Sélection de l'élément à supprimer : .... <form method="post" action="suppression.php"> <center> <?php // information pour la connection à le DB $host = 'localhost'; $user = 'thhu'; $pass = ''; $db = 'base_gedcom'; // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); $nom = $_POST['nom']; $prenom = $_POST['prenom']; // requête SQL qui compte le nombre total d'enregistrements ($total) dans la table et qui //récupère tous les enregistrements + tri ascendant des noms ($select) $select = "SELECT numero,nom,prenom,date_naissance FROM hdd where nom like '$nom' AND prenom like '$prenom%'"; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); $total = mysql_num_rows($result); //affichage du nb d'enregistrements trouvés echo '<b>'; echo "Il y a $total individus proposé à la suppression.<br>Faites votre choix\n"; echo '</b><p>'; // Affichage des résultats dans un tableau. if($total) { // début du tableau echo '<table bgcolor="#FFFFFF">'."\n"; // première ligne on affiche les titres Nom et Prénom echo '<tr>'; echo '<td bgcolor="#669999" width="89"><b><u>Numéro</u></b></td>'; echo '<td bgcolor="#669999" width="156"><center><b><u>Nom</u></b></td>'; echo '<td bgcolor="#669999" width="200"><b><u>Prénom</u></b></td>'; echo '<td bgcolor="#669999" width="89"><b><u>Né le</u></b></td>'; echo '</tr>'."\n"; // lecture et affichage des résultats while($row = mysql_fetch_array($result)) { echo '<td bgcolor="#CCCCCC" width="200"><a href="./suppression.php?mode=suppression">'.$row['numero'].'</a></td>'; echo '<td bgcolor="#CCCCCC" width="156">'.$row['nom'].'</td>'; echo '<td bgcolor="#CCCCCC" width="200">'.$row['prenom'].'</td>'; echo '<td bgcolor="#CCCCCC" width="89">'.$row['date_naissance'].'</td>'; echo '</tr>'."\n"; } } mysql_free_result($result); ?> ..... 2) suppression de l'élément (suppression.php) <?php // information pour la connection à la DB $host = 'localhost'; $user = 'thhu'; $pass = ''; $db = 'base_gedcom'; // connection à la DB $link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() ); mysql_select_db($db) or die ('Erreur :'.mysql_error()); $numero = $_POST['numero']; // suppression if($HTTP_GET_VARS['mode'] == 'suppression') //si le parametre entré est la suppression, alors ... mysql_query("DELETE * FROM hdd where numero='$numero'"); if($suppression) { echo '<b>Suppression effectuée</b>'; } else { echo '<b>Erreur:</b> '.mysql_error(); } mysql_close(); //fermeture de la connexion ?> Et avec ceci, j'obient le msg d'erreur : Erreur: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM hdd where numero=''' at line 1 En fait, ma variable $numero ne passe pas d'un programme à l'autre (je l'ai testé pour qu'elle s'affiche, mais rien ne s'affiche ....). Comment pourrais-je faire pour la récupérer ??? Merci !!!!
STAR*PC
 Posté le 01/01/2005 à 15:57 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, tous mes meilleurs voeux également, En effet la variable numéro ne passe pas, puisque tu ne l'a fait pas passer. Tu as 2 solutions pour la faire passer d'une page à l'autre, - par POST - par URL par post, ça consiste à créer un champ invisible contenant le numéro, ce champ est ensuite envoyer à l'autre page par un bouton POST par URL, simplement passer le numéro dans un parametres dans l'URL. Je pense que c'est ce second cas qui est préférable ici. Donc, voici les modifs : ------------------- echo '<td bgcolor="#CCCCCC" width="200"><a href="./suppression.php?mode=suppression">'.$row['numero'].'</a></td>'; remplacer par : echo '<td bgcolor="#CCCCCC" width="200"><a href="./suppression.php?mode=suppression&numero='.$row['numero'].'">'.$row['numero'].'</a></td>'; ------------------- $numero = $_POST['numero']; remplacer par : $numero = $_GET['numero']; OU $numero = $HTTP_GET_VARS['numero']; (c'est la même chose) ------------------- mysql_query("DELETE * FROM hdd where numero='$numero'"); remplacer par : $suppression = mysql_query("DELETE * FROM hdd where numero='$numero'"); (car après j'ai mis une vérification de la requete (if($suppression) ...) ------------------- Voilà, j'ai pas tout (re)regarder, mais je pense que là ça sera bon ;) @++ Edit: je vois un début de formulaire en haut, je ne vois pas son utilité ici ...

Modifié par STAR*PC le 01/01/2005 15:59
t671
 Posté le 01/01/2005 à 19:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Merci STAR*PC ......... ça fonctionne !!!!!![happy] J'ai justeenlevé l'* dans la requête après le DELETE, et c'est ok !!!!! Merci bcp de m'avoir aidé !!!!!! [cool] Quand tu me parles de formulaire, je suppose que tu fais référence à "<form method="post" action="suppression.php">" ??? Je pensais que cette cmde permettait de passer une donnée d'un prog à un autre .......
STAR*PC
 Posté le 01/01/2005 à 20:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
t671 a écrit :
Quand tu me parles de formulaire, je suppose que tu fais référence à "<form method="post" action="suppression.php">" ??? Je pensais que cette cmde permettait de passer une donnée d'un prog à un autre .......
oui mais dans ton cas, c'est un lien hypertexte qui permet de passer à la page suppression.php ... donc tu peux supprimer la premiere ligne @++
t671
 Posté le 02/01/2005 à 11:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
STAR*PC a écrit :
t671 a écrit :
Quand tu me parles de formulaire, je suppose que tu fais référence à "<form method="post" action="suppression.php">" ??? Je pensais que cette cmde permettait de passer une donnée d'un prog à un autre .......
oui mais dans ton cas, c'est un lien hypertexte qui permet de passer à la page suppression.php ... donc tu peux supprimer la premiere ligne @++
OK !!!! Merci pour tout ........ [clindoeil]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
24,68 €Carte mémoire Samsung 256 Go MicroSDXC Evo Select U3 (130 Mo/s) à 24,68 € livrée
Valable jusqu'au 23 Mai

Amazon Allemagne fait une promotion sur la carte mémoire Samsung 256 Go MicroSDXC Evo Select U3 qui passe à 20,16 € (avec la TVA ajustée). Comptez 4,52 € pour la livraison en France soit un total de 24,68 € livrée

Une bonne affaire pour cette carte que l'on trouve ailleurs à partir de 50 € et qui offre des vitesses de 130 Mo/s en lecture et 110 Mo/s en écriture.  Elle est idéale pour les téléphones, caméras et appareils photo 4K. Elle est étanche, anti-choc et résiste aux rayons X et aux champs magnétiques. Elle est garantie 10 ans.


> Voir l'offre
38,99 €Outil rotatif multifonction TECCPO + 80 accessoires à 38,99 €
Valable jusqu'au 22 Mai

Amazon fait une promotion sur l'outil rotatif multifonction TECCPO avec ses 80 accessoires qui passe à 38,99 € au lieu de 49,99 €. Cet outil va vous permettre de découper, poncer, percer, nettoyer. L'outil possède un mandrin universel autoserrant qui accepte tous tous les accessoires ayant un diamètre de 0,8mm à 3,2mm. Il est compatible avec tous les outils de Dremel.


> Voir l'offre
13,99 €Switch Gigabit TP-Link 5 ports métal à 13,99 €
Valable jusqu'au 22 Mai

Amazon propose actuellement  le switch Gigabit TP-Link TL-SG105 5 ports (10/100/1000) dans un boîtier métal à 13,99 €. On le trouve habituellement à partir de 17,99 €. 


> Voir l'offre

Sujets relatifs
Échec connection base mysql
Créer une base de donnée MySQL
update texte dans base mysql
Mysql sur le nouveau EasyPhp pas de base
test champs base mysql
Accés impossible a ma base mysql
Votre base de donnée Mysql / PostgreSQL
Conexion à une base de donnée mySql via JDBC
Récupérer mot de passe dans base mysql
Wrong parameter count for mysql ==> resolu
Plus de sujets relatifs à delete base mysql, les droits ??? (RESOLU)
 > Tous les forums > Forum Forum des Webmasters