> 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
486,02 €Mini PC Beelink SER3 (Ryzen 7 3750H, 16 Go RAM, SSD 512Go) à 486,02 € avec le code BEEMINI4
Valable jusqu'au 30 Janvier

Geekbuying fait une promotion sur l'excellent mini PC Beelink SER3 qui passe à 486,02 € avec le code BEEMINI4. On le trouve habituellement autour de 640 €. Ce mini PC intègre un processeur AMD Ryzen 7 3750H (4 coeurs), 16 Go de RAM DDR4 et un SSD NVMe de 512 Go au format M.2 (un emplacement 2.5' libre est également disponible). Il possède un chip graphique RX Vega 10 qui fera tourner tous vos jeux. Il intègre le WiFi 5, le bluetooth 5.1, un port Ethernet Gigabit, 4 ports USB 3.0, un port USB-C et deux connecteurs HDMI. 

L'expédition se fait depuis un entrepôt en Allemagne et la TVA est comprise. Vous êtes ainsi certains d'être livré rapidement et de ne pas avoir de douane.

Une excellente affaire pour un PC très performant, silencieux et qui ne prendra pas de place ! 


> Voir l'offre
369 €PC Dell Optiplex 3060 SFF (Core i5, 16Go RAM, SSD 256Go+500Go HDD, Win10) reconditionné à 369 €
Valable jusqu'au 29 Janvier

AfB Shop fait une belle promotion sur l'ordinateur de bureau Dell Optiplex 3060 SFF reconditionné à neuf et garanti 1 an à 369 €. Le PC est équipé d'un processeur Intel Core i5 8400 à 2.80 GHz, de 16 Go de RAM, d'un SSD de 256 Go, d'un disque dur de 500 Go et tourne sous Windows 10.

Rajoutez un écran, un clavier et une souris et vous aurez un ordinateur à l'aise en bureautique, Internet et multimédia. 


> Voir l'offre
59,99€Pack Gaming Corsair (clavier K55 RGB + souris Harpoon RGB Pro) à 59,99 €
Valable jusqu'au 02 Février

La Fnac fait une belle promotion sur un pack Gaming Corsair comprenant un clavier K55 RGB Pro et une souris Harpoon RGB Pro à 59,99 € alors qu'on le trouve ailleurs à partir de 89 €. Un ensemble de qualité pour joueurs débutants ou confirmés.


> 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