leger souci d' insertion dans mysql

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : leger souci d' insertion dans mysql

par graffx » 19 déc. 2008, 08:08

Hé ben en m' inscrivant, j' ai pu voir que mon mail etait deja inscrit, donc ben me revoila :D


Merci pour votre patience et vos réponses, malheureusement je dois aller au taf, je vous mettrai ce que j' ai fait ce soir, bonne journée les gens :)

par sadeq » 18 déc. 2008, 23:25

Bonjour,

Commence d'abord par t'inscrire comme ça on peux suivre tes messages et te reconnaitre. En suite, on pourra t'aider plus.

Bon, d'après ce que j'ai compris tu veux réaliser un affichage de produits selon un critère choisi par l'utilisateur et en même temps tu veux prévoir pour chaque ligne produit un bouton de suppression de ce produit.

Il faut organiser le débat et traiter chaque chose à part. D'accord?

On commence bien sûr par l'affichage des produits recherchés par critère choisi:

Ce que l'on veut faire, c'est un menu comme ça:
Mini-pelles - Dumpers - Rouleaux compresseurs - etc

Et sans changer de page, en cliquant sur par exemple "Dumpers", ça devrait afficher la liste des produits de catégorie "Dumpers".

Voici l'analyse:
1. Ecrire le code HTML qui présente le menu sous forme de liens hypertextes (pour l'instant) et qui permet de déclencher pour chaque lien une recherche des produits par la catégorie (représentée par le lien) L'url (href) de chaque lien doit être donc de la forme suivante:

Code : Tout sélectionner

<a href="chercher_produit.php?categorie=xxxxxxx">.....</a>
où les xxxxxxxx désignent le nom de la catégorie : mini-pelles, dumpers, rouleaux compresseurs, ... etc.

As-tu fais ça, déjà ? sinon fais-le et donnes-nous le script pour qu'on puisse continuer.

par encore_moi » 18 déc. 2008, 22:59

alors oui, si tu veux, j' ai bien compris le principe dans le sens ou je sais qu' il faut récupérer l' id de chaque ligne automatiquement, c' est le "automatiquement" qui m' embete, parce que je me vois pas rajouter l' id manuellement a chaque fois :roll:

Le truc c' est que je ne vois vraiment pas comment faire.

Je tiens a préciser que j' apprend le php depuis deux jours seulement j' ai deja reussi a faire presque la moitié de mon projet (le plus simple je crois).


Mon souci concernant la methode get n' est pour l' instant pas celui la, en fait si vous voulez j' ai un menu en header:

mini-pelles - dumpers - rouleaux compresseurs - etc


sans changer de page, en cliquant sur par exemple dumper, ca devrait m' afficher la liste des dumpers.


Alors j' ai bien la requete pour l' afficher, mais je ne vois pas trop le code pour mettre chaque requete en dessous des autres si vous voyez ce que je veux dire.


:roll:

par furiouslol » 17 déc. 2008, 22:39

Mouais mais y a une faille dans tout çà, il faut soit échapper varID soit forcer le type à int :
Tout a fait

Bon je donne des pistes a suivre, la solution du bouton sur chaque ligne pour envoyer l'ID a effacer via la variable GET est la plus simple pour qui commence, apres moi je ferais plutot des cases a cocher avec un seul bouton et dasn un formulaire pour faire du post

encoire_moi si t'as des questions sur le principe d'envoie de variables GET grace a un clic sur un lien je t'écoute :)

Sinon pour expliquer un peu, POST et GET sont tres similaires, tu peux tres bien faire du GET avec un formlulaire par exemple, en lui spécifiant, la seule différence alors sera que tes variables apparaitront dans l'url du navigateur, ce qui n'arrive pas avec le POST

Par contre si, au lieu du formulaire, c'est un lien qui envoie une URL avec des parametres dedans, alors ces parametres seront récupérable en GET, ce que je t'ai proposé dans mon exemple (qui n'etais qu'un exemple)

Quoi qu'il en soit, tu veux qu'a chaque ligne dans ta liste, l'utilisateur ai un bouton qui efface la ligne. Tu dois donc envoyer l'ID de ta base de donnée qui correspond a la ligen en question, dans une URL pour pouvoir la récupérer et la traiter par une requete SQL

Pour tes pages de catégories sinon, effectivement si toutes tes pages sont pareil, autant n'en faire qu'une, ou en tout cas qu'un seul fichier, si t'as envie d'avoir dans ton menu toutes tes catégories, tu peux envoyer le meme fichier mais avec un ID catégorie et donc afficher ce qu'il faut

par encoire_moi » 17 déc. 2008, 22:04

bon, ben je comprend a moitié comment faire mon code avec la methode get, surtout pour mettre des requetes en lien, quelqu' un aurait un tuto ou un conseil svp?

par luc@s » 17 déc. 2008, 20:41

Salut

Y a plein de facon de faire, si t'as une liste de choses a administrer, tu peux afficher la liste et mettre un bouton delete a coté de chaque lignes. Tu peux mettre un bouton update aussi, sui reverra sur l'écran d'update préalmablement remplit, et un bouton load qui t'affiche le détail :)

Ou avoir juste une case a cocher sur chaque ligne et faire du traitement de masse avec une rangée de bouton en bas, mais c'est un peu plus comlpliqué

Sinon pour passer les variables, le truc consiste a connaitre l'id que tu manipule au moment ou tu l'affiche, c'est a dire sur chaque ligne, cela te permet de définir ton bouton "delete" comme un lien contenant un parametre GET, que tu pourras récupérer et utiliser dans une requete delete

Code : Tout sélectionner

<a href='tapage.php?varID=tonId'><img scr='imageDelete'></a>
Ainsi, quand l'utilisateur clique dessus, tu peux récupérer $_GET["varID"] et l'effacer en faisant un
$query = sprintf( "DELETE FROM tatable WHERE ID='%s'; ", $_GET["varID"]); 
mysql_query($query); 
Pour le bouton d'update, ca pourrait etre la meme chose, mais en revoyant sur la page qui te sezrt a créer un enregistrement

Code : Tout sélectionner

<a href='formcréation.php?varID=tonId'><img scr='imageUpdate'></a>
En modifiant ta page de formulaire pour qu'il préremplisse celui ci, et deux ou trois autres petites choses mais je crois que je m'égare :)
Mouais mais y a une faille dans tout çà, il faut soit échapper varID soit forcer le type à int :
$var = (int) $var;
[/php]

par encore_moi » 17 déc. 2008, 20:35

visiblement l' ami me conseille la methode "get", ce que j' aime, c' est qu' il me conseille mais ne fais pas le boulot a ma place, je vais regarder ce qu' est ce "get", vos conseils sont toujours bon a prendre hein :D

par encore_moi » 17 déc. 2008, 20:16

Ben je pense avoir a peu prés compris, va juste falloir que je fasse des recherches sur le "fprint", je ne connais pas.


Par contre, je me suis fait chi**** a faire une page par catégorie, avec en haut de chaque page, les liens vers ces pages-categorie (mini_pelles.php, dumpers.php, outillage.php etc etc), et un ami pas trés con sur les bord (hihihoho) m' a dit que c' était stupide puisque le php devait éviter de faire 50 pages, mais plutot de pouvoir consulter visuellement chaque categorie sans vraiment changer de page, je me gausse, parce qu' en fait il a raison ( \o/ ). Quelqu' un pourrait m' expliquer un peu le schema de ceci, c' est a dire, au lieu d' avoir par exemple sur mini-pelles.php une requete:
mysql_query("SELECT id, nom, descriptif, tarifht, tarif FROM articles WHERE categorie='Mini-pelles'");
et de faire de meme, une page pour chaque catégories, pouvoir ajouter cette requete par catégorie sur une meme page, mais comme moi y' en a parler chinois, moi éspère que vous y' en a compris moi huhu :lol:

par encore_moi » 16 déc. 2008, 07:57

Hello :D

Bon, j' ai compris le principe, mais pas tout le code, il faut laisser le temps a mon cerveau de déchiffre tout ca. Je n' ai pas encore utilisé la méthode $_get , juste $post.


Je réfléchis a tout ca et je te tiens au courant si j' ai des questions :)




Merci encore :wink:

par furiouslol » 16 déc. 2008, 00:36

Eh bien comme je t'ai mis dans mon précédent message, tu peux mettre ca au bout de chacune de tes lignes
<a href='tapage.php?varID=tonId'><img scr='imageDelete'></a>
Adapté a ton exemple ca donne
printf ( "<a href='tapage.php?varID=%s><img scr='imageDelete'></a>", $donnees['id']; );
Je ne connais pas le nom de ta page php, j'ai donc mis "tapage.php", a toi de remplacer aussi le chemin pour avoir une image, si tu veux tu peux faire sans l'image au début pour piger le truc
printf ( "<a href='tapage.php?varID=%s>delete</a>", $donnees['id']; );
Et ce au bout de chaque ligne, pour chaque article. L'action de cliquer sur ce lien va envoyer une url avec dedasn l'id de l'objet que tu veux effacer. Ainsi un peu comme les variables de formulaire, tu vas pouvoir récupérer cet id grace au tableau de $_GET, en l'occurence ce sera $_GET["varID"] (j'ai mis varID dans l'url mais tu mets ce que tu veux, tant que ca correspond)

Il ne te restera plus qu'a balancer la requete de DELETE

Code : Tout sélectionner

$query = sprintf( "DELETE FROM tatable WHERE ID='%s'; ", $_GET["varID"]); mysql_query($query);

par encore_moi » 16 déc. 2008, 00:07

lol desolé j' ai pas compris :roll:


Pour mettre en exemple un bouton delete a coté, ce que je ne comprend pas, c' est quel peu-etre le code a mettre pour que le bouton connaisse automatiquement l'id de la ligne (la fiche)?

par furiouslol » 15 déc. 2008, 23:26

Salut

Y a plein de facon de faire, si t'as une liste de choses a administrer, tu peux afficher la liste et mettre un bouton delete a coté de chaque lignes. Tu peux mettre un bouton update aussi, sui reverra sur l'écran d'update préalmablement remplit, et un bouton load qui t'affiche le détail :)

Ou avoir juste une case a cocher sur chaque ligne et faire du traitement de masse avec une rangée de bouton en bas, mais c'est un peu plus comlpliqué

Sinon pour passer les variables, le truc consiste a connaitre l'id que tu manipule au moment ou tu l'affiche, c'est a dire sur chaque ligne, cela te permet de définir ton bouton "delete" comme un lien contenant un parametre GET, que tu pourras récupérer et utiliser dans une requete delete

Code : Tout sélectionner

<a href='tapage.php?varID=tonId'><img scr='imageDelete'></a>
Ainsi, quand l'utilisateur clique dessus, tu peux récupérer $_GET["varID"] et l'effacer en faisant un
$query = sprintf( "DELETE FROM tatable WHERE ID='%s'; ", $_GET["varID"]); 
mysql_query($query); 
Pour le bouton d'update, ca pourrait etre la meme chose, mais en revoyant sur la page qui te sezrt a créer un enregistrement

Code : Tout sélectionner

<a href='formcréation.php?varID=tonId'><img scr='imageUpdate'></a>
En modifiant ta page de formulaire pour qu'il préremplisse celui ci, et deux ou trois autres petites choses mais je crois que je m'égare :)

par Invité » 15 déc. 2008, 23:08

j' avance au fur et a mesure et je vosu tiens au courant ^^


alors j' ai bien ma liste qui s' affiche si je choisi comme categorie mini-pelles:
$reponse = mysql_query("SELECT id, nom, descriptif, tarif FROM articles WHERE categorie='Mini-pelles'");

while ($donnees = mysql_fetch_array($reponse) )
{
?>


<?php echo $donnees['id']; ?>&nbsp;<?php echo $donnees['nom']; ?>&nbsp;<?php echo $donnees['descriptif']; ?>&nbsp;<?php echo $donnees['tarif']; ?>

Le hic, c' est que:

1 - je ne vois pas comment faire pour qu' il y ai un bouton automatiquement a coté de chaque ligne pour supprimer cette fiche.

2 - c' est moche, est-ce possible d' afficher les ligne mais séparées par plus d' espace entre elles, a la limite dans un tableau ou chaque ligne serait separée par une cellule?


Merci d' avance les gens :)

par Invité » 15 déc. 2008, 22:47

héhé ca alors c' est exactement ce que j' ai testé :P , je commence a me débrouiller ^^, du coup j' avais une variable pas a sa place (bla bla row 1).


Mon script fonctionne, merci de ta réponse, car si j' avais pas trouvé, tu m' aurais grandement aidé ^^


Deuxieme question un poil plus dur.

J' ai donc un formulaire pour ajouter des fiches et qui fonctionne. Comment faire pour que si je crée un formulaire de suppréssion de fiche, il y ai une liste des fiches disponible?

Est ce que je fais simplement:
<?php
$reponse = mysql_query("SELECT * FROM famille 1");
?>

<?php
$reponse = mysql_query("SELECT * FROM famille2");
?>

Et une fois que la liste s' affiche avec les fiches les unes en dessous des autres, créer un petit bouton a coté de chaquefiche pour la supprimer avec un :

heu, la je seche!

par @rthur » 15 déc. 2008, 21:52

Bonjour,

Fais un print de ta requète SQL et teste là dans PHPmyAdmin, cela t'aidera à débuguer et à trouver le problème.

Un "truc" que je te conseille fortement également, c'est d'utiliser toujours mysql_query() avec un affichage des erreurs au cas où.
Concrètement, cela revient à remplacer ta ligne:
mysql_query("INSERT INTO articles VALUES('', '$categorie', '$nom', '$descriptif', '$categorie', '$tarif')"); 
par
mysql_query("INSERT INTO articles VALUES('', '$categorie', '$nom', '$descriptif', '$categorie', '$tarif')") or die("Erreur MySQL : ".mysql_error());