Prob de requete sql

PoMmZz Messages postés 28 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 2 mai 2008 - 25 avril 2008 à 16:10
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010 - 2 mai 2008 à 12:59
Bonjour à tous,
Voila j'ai un petit prob de script
dans mon fichier client.php j'ai ca:
<?php//-----------------------------------------------------
// Vérification 1 : est-ce qu'on veut ajouter un client ?
//-----------------------------------------------------

if (isset($_POST['nom'])) //AND isset($_POST['prenom']))
{

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
// On vérifie si c'est une modification de client ou pas
if ($_POST['id_cli'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO client VALUES('', '" . $nom . "', '" . $prenom . "')");
}
else
{

// C'est une modification, on met juste à jour le nom et le prenom
mysql_query("UPDATE client SET nom='" . $nom . "', prenom='" . $prenom . "' WHERE id='" . $_POST['id_cli'] . "'");
}
}


//--------------------------------------------------------
// Vérification 2 : est-ce qu'on veut supprimer un client ?
//--------------------------------------------------------

if (isset($_GET['supprimer_client'])) // Si on demande de supprimer un client
{

mysql_query('DELETE FROM client WHERE id=\'' . $_GET['supprimer_client'] . '\'');
}
?>
Modifier |
Supprimer |
Num_client |
Nom |
Prenom |

<?php
$retour = mysql_query('SELECT * FROM client ORDER BY nom ASC');
while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les les clients
{
?>
----

<?php echo ''; ?>,
<?php echo ''; ?>,
<?php echo $donnees['id']; ?>,
<?php echo $donnees['nom']; ?>,
<?php echo $donnees['prenom']; ?>,

<?php
}// Fin de la boucle qui liste les clients
?>


dans un fichier add_client.php j'ai :

<?php
if (isset($_GET['modifier_client'])) // Si on demande de modifier un client
{
// On récupère les infos de la correspondante
$retour = mysql_query('SELECT * FROM client WHERE id=\'' . $_GET['modifier_client'] . '\'');
$donnees = mysql_fetch_array($retour);

// On place le nom et le prenom dans des variables simples
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$id_cli = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rajoute un nouveau client
{
// Les variables $nom et $prenom sont vides, puisque c'est une nouveau client
$nom = '';
$prenom = '';
$id_cli = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>

je ne comprend pas pourquoi qd je clique sur supprimer il ne supprime pas ma ligne dans le tableau alors qu'il me donne dans l'url clients.php?supprimer_client=2 et meme chose pour le modifer et ajouter il ne veux pas executer mes requetes... pourtant il veux bien afficher mes données de ma base....

Je susi peut etre pas clair mais c'est aps facile d'expliquer par forum :) desoler :)Si quelqu'un voit un erreur qu'il me le dise merci :)

ps: c'est juste un test biensur ma base client ne va pas contenir qu'un nom prenom et id :D

11 réponses

gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
25 avril 2008 à 16:47
Je ne vois pas les connexions à la db dans ton script. Puisque tu dis que les données du select sont affichées j'imagine que tu ne l'a pas posté mais que tu fais la connexion ?

Est ce que tu peux donner la structure de la table 'client' pour voir si les requêtes sont correctes ?

Grrrrrrrrrrr
0
PoMmZz Messages postés 28 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 2 mai 2008
25 avril 2008 à 17:39
-- Structure de la table `client`
--

CREATE TABLE `client` (
`id` int(11) NOT NULL auto_increment,
`nom` varchar(30) NOT NULL,
`prenom` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1001 ;

-- Contenu de la table `client`
--

INSERT INTO `client` (`id`, `nom`, `prenom`) VALUES
(1, 'hellin', 'laurent'),
(2, 'seb', 'patrick'),
(3, 'trx', 'vincent');

voila la structure, pour la connection à la base j'ai juste pas copier le <?php include('connexion.php');?> c'est pour :)

merci d'avoir repondu en totu cas :)
0
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
26 avril 2008 à 10:08
Pour ton premier fichier, le commentaire après le tag php gène :

<?php//-----------------------------------------------------

doit etre

<?php
//-----------------------------------------------------

sans séparateur entre le tag et le commentaire, php ne voit pas 2 éléments distinct mais 1 seul.

Pour ton 2eme fichier, je ne vois pas d'erreur particulière. Tu fais juste un select, ou est le problème ?

Grrrrrrrrrrr
0
PoMmZz Messages postés 28 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 2 mai 2008
28 avril 2008 à 14:09
salut,

merci pour ta réponse ca marche je peu supprimer et rajouter un nouveau client.

Par contre il ne veux pas modifier... il ne reprend pas les info du client pour les remettre dans les input.

Et je vois pas pourquoi :/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
1 mai 2008 à 11:45
Est ce que tu peux mettre le code de la partie modification ?

Grrrrrrrrrrr
0
PoMmZz Messages postés 28 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 2 mai 2008
1 mai 2008 à 14:52
<?php
if (isset($_GET['modifier_client'])) // Si on demande de modifier un client
{
// On récupère les infos de la correspondante
$retour = mysql_query('SELECT * FROM client WHERE id=\'' . $_GET['modifier_client'] . '\'');
$donnees = mysql_fetch_array($retour);

// On place le nom et le prenom dans des variables simples
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$id_cli = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification
}
else // C'est qu'on rajoute un nouveau client
{
// Les variables $nom et $prenom sont vides, puisque c'est une nouveau client
$nom = '';
$prenom = '';
$id_cli = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
}
?>


voila c'est ca :)
0
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
1 mai 2008 à 18:05
Ton code récupère des infos et initialise des variables. Il n'y a pas d'INSERT ou d'UPDATE. De plus tu parles d'input qui ne se remplissent pas et je ne vois pas d'input.

Il manque un morceau de code?

Grrrrrrrrrrr
0
PoMmZz Messages postés 28 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 2 mai 2008
1 mai 2008 à 19:15
Enfaite update est la

Vérification 1 : est-ce qu'on veut ajouter un client ?
//-----------------------------------------------------

if (isset($_POST['nom'])) //AND isset($_POST['prenom']))
{

$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
// On vérifie si c'est une modification de client ou pas
if ($_POST['id_cli'] == 0)
{
// Ce n'est pas une modification, on crée une nouvelle entrée dans la table
mysql_query("INSERT INTO client VALUES('', '" . $nom . "', '" . $prenom . "')");
}
else
{

// C'est une modification, on met juste à jour le nom et le prenom
mysql_query("UPDATE client SET nom='" . $nom . "', prenom='" . $prenom . "' WHERE id='" . $_POST['id_cli'] . "'");
}
}

il verifie si id_cli est a 1 si il est a 0 c'est un new enregistrement si pas c'est une update

les input je les ai pas mis en copiant le cade car l prob viens du php jpense :)

merci de rep aussi vite :)
0
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
1 mai 2008 à 19:32
J'ai un peu de mal à comprendre.

Dans le 1er fichier tu génère un lien :

[add_clients.php?modifier_client=' . $donnees['id'] .
' '; ?>]

Ce lien renvoi sur la page add_client.php en lui passant en paramètre l'id du client à modifier (et uniquement cet id).

Dans la page add_client tu récupère cet id, mais aussi des donées en POST (nom et prénom). D'ou viennent elles ?

Tu me dis que l'update (ou l'insert) est fait dans le 1er fichier (client.php). Comment le lien est fait entre ces deux pages ? Pourquoi add_client ne fait pas l'insert ou l'update ?

En fait j'ai du mal à voir à quoi te sert add_client.php. C'est une page intermédiaire dans laquelle tu affiche les inputs pour ajouter/modifier le client et qui repasse ces valeurs à client.php ?

Si c'est bien ça, il est possible que tu n'arrive pas à afficher les noms et prénoms parce que tu essaye de lire en POST des données qui, apparement, n'y sont pas. Puisque tu fais un select, essaye de lire les données depuis le resultat de ta requête pour afficher les infos dans tes inputs.

Grrrrrrrrrrr
0
PoMmZz Messages postés 28 Date d'inscription jeudi 9 février 2006 Statut Membre Dernière intervention 2 mai 2008
2 mai 2008 à 11:09
Enfaite c'est pas compliquer dans le add_client add client y'a les input.
et dans le clients.php y'a un tableau avec tout les clients... Sur la drotie du tableau j'ai mis des images a chaque ligne un e pour supprimer et l'autre pour editer.

Qd je clique sur surpprimer, ben il execute le

if (isset($_GET['supprimer_client'])) // Si on demande de supprimer un client
{

mysql_query('DELETE FROM client WHERE id=\'' . $_GET['supprimer_client'] . '\'');
}

quand je clique sur modifier, il verifie si id cli existe a ce moment la si il exite
<td class="imgtab2"><?php echo '[add_clients.php?modifier_client=' . $donnees['id'] . ' '; ?>]</td>

lui dit d'executer le
if (isset($_GET['modifier_client'])) // Si on demande de modifier un client ...

et qd je clique sur mon input submit ma form execute action="client.php"

et la il sais si c'est un modifier ou un nouveau client par rapport à l id si il est a 1 ou pas.

et dans mon add client si je clique juste sur le lien ajouter client la il devrait executer le insert into car c'est un nouveau client.

j'espere t'avoir eclairer.

En te remerciant pour tes reponses :)
0
gibozsec Messages postés 318 Date d'inscription mardi 27 mai 2003 Statut Membre Dernière intervention 11 mars 2010
2 mai 2008 à 12:59
Donc si j'ai bien compris  (corrige moi si je me trompe) :

Le lien "modifier" redirige vers le fichier add_client.php.

Ce fichier ne reçoit que l'id du client en paramètre (href="add_clients.php?modifier_client=' . $donnees['id'] . '), récupère les infos du client en base de données (SELECT * FROM client WHERE id=\'' . $_GET['modifier_client']) et affiche un formulaire pour modifier les infos.

Ce formulaire utilise client.php pour faire la modification en base de données. Client.php modifie le client puis affiche la liste de tous les clients.
---------------------------------

Ce qui semble étrange, comme je l'ai déjà dis, c'est que dans add_client.php tu essaye de récupèrer les nom et prénom en POST :

$nom = $_POST['nom']; 
$prenom = $_POST['prenom']; 
$id_cli = $donnees['id'];

Or, puisque tu arrive via un lien, POST ne contiendra rien (POST ne se rempli que lorsque tu valide un formulaire utilisant la méthode POST).

Tu devrais donc initialiser tes variables avec le résultat de la base de données :

$nom = $donnees['nom']; 
$prenom = $donnees['prenom']; 
$id_cli = $donnees['id'];

ou alors les passer via le lien de modification et les récupèrer dans $_GET

href="add_clients.php?modifier_client=' . $donnees['id'] . '&nom=' . $donnees['nom'] . '&prenom='. $donnees['prenom'] . '

et ensuite créer tes input en leur donnant comme value, les variables nom, prénom, id_cli (ce que tu fais déjà j'imagine).

--------------------

Au passage, tu peux jetter un oeil à la syntaxe sql :

INSERT INTO table (liste_des_champs) VALUES (liste_des_valeurs)
ON DUPLICATE KEY UPDATE champ1=valeur1, champ2=valeur2...

Ca permet de faire un ajout et, si les données qu'on essaye d'entrer existent déjà, de faire une modification. En utilisant ça, tu peux te passer de vérifier s'il s'agit d'un ajout ou d'une modification.

Grrrrrrrrrrr
0
Rejoignez-nous