choisir sa table lors de l'envoi du formulaire

choisir sa table lors de l'envoi du formulaire - PHP - Programmation

Marsh Posté le 13-01-2008 à 23:37:31    

En fonction de l'idclients, je voudrais que les données s'enregistrent dans telle ou telle table. Est-ce possible?
Voici ce que j'ai fait  dans ma page inserer.php (pour l'envoi du formulaire) et cela fonctionne à moitié. En effet, j'ai dans ma table "vendeurs" 3 vendeurs: (4,5,6). Je voudrais donc que chaque donnée s'enregistre soit dans table2 ou table3 en fonction de l'idvendeur. Et je ne sais pas pourquoi, cela ne s'enregistre que quand j'ai un id_vendeur=4. Quelqu'un y comprend quelque chose? Est-ce qu'au moins mon code a l'air correct?  

Code :
  1. <? 
  2. include("connexion.php" ); 
  3. $date=$_POST['date']; 
  4. $nomclient=$_POST['nomclient'];
  5. $prenomclient=$_POST['prenomclient']; 
  6. $lieu=$_POST['lieu']; 
  7. $tel=$_POST['tel']; 
  8. $capital=$_POST['capital']; 
  9. $newperso=$_POST['newperso']; 
  10. $conjoint=$_POST['conjoint'];   
  11. $req=mysql_query("select * from vendeur" ); 
  12. $result=mysql_fetch_array($req);
  13. if ($result['id_vendeur]==6)
  14. {
  15. mysql_query("insert into table2 values ('$idvendeur','$date','$nomclient','$prenomclient','$lieu','$tel','$capital','$newperso','$conjoint')" ) or die(mysql_error());
  16. }
  17. elseif ($result['id_vendeur]==4)
  18. {
  19. mysql_query("insert into table3 values ('$idvendeur','$date','$nomclient','$prenomclient','$lieu','$tel','$capital','$newperso','$conjoint')" ) or die(mysql_error());
  20. }
  21. ?>


Reply

Marsh Posté le 13-01-2008 à 23:37:31   

Reply

Marsh Posté le 14-01-2008 à 05:29:50    

Bah là déjà tu traites 4 et 6 mais pas 5 donc pour 5 c'est normal. Ensuite ton select de la ligne 13 te remonte tous les vendeurs dans l'ordre normal et tu récupères que le premier enregistrement à la ligne 14 (le 4 je suppose :whistle: ) Faut que tu mettes un where pour récupérer ce que tu veux ;)
 
Voilà pour ton problème. Maintenant je comprends pas pourquoi tu fais ça c'est archi crade à gérer et voilà le bordel dans le modèle... Pourquoi :??: Quelle est la répartition :??:
 
Sinon pour le vendeur si c'est bien le même à chaque coup, utilise plutot une session pour stocker sa table plutot que d'aller la chercher à chaque fois. Et pourquoi pas automatiser la chose mais ça dépend de comment tu comptes répartir.
 
Autre chose, essaye autant que faire se peut de récupérer que ce qui est intéressant avec tes select, en l'occurence uniquement le nom de la table le reste on s'en secoue sauf si t'en a besoin plus loin ;) => évite le * non nécessaire ;)
 

Reply

Marsh Posté le 14-01-2008 à 23:27:02    

Que de conseils judicieux, merci!!!  
Mais voilà, concrètement, je voudrais que, en fonction du vendeur (car il y en a plusieurs), les détails de ses clients s'enregistrent dans la table correspondant au vendeur. Pour ça, mon principe n'est pas correct?  
Pour ce qui est du WHERE, il devrait etre dans quelle ligne? Et que devrait-il contenir? (merci d'aider le débutant que je suis;) )
L'histoire du WHERE, c'est le plus important pour que je puisse continuer. SVP, sauvez-moi:)


Message édité par bingojm le 15-01-2008 à 00:21:56
Reply

Marsh Posté le 15-01-2008 à 05:28:41    

Le where c'est quoi :??: Ca te permet de donner une contrainte à ce que tu choisis, en l'occurence il faut que tu choisisse un vendeur donné, sinon tu réupères la liste de tous les vendeurs :spamafote: Donc faut restreindre et qu'est ce qui définit une ligne comme unique :??: L'identifiant unique ;) Donc faut s'en servir :D
 
Je te conseille d'installer phpmyadmin si c'est pas déjà fait ;) Joue avec les requêtes et regarde ce que ça te ramène y'a que comme ça que ça rentre ;)

Reply

Marsh Posté le 15-01-2008 à 09:32:29    

Et si, à la place de mettre une table différente par vendeur, tu mettais une seule table des vente, qui reprend avec une clef étrangère qui parmi les vendeurs a fait la vente ? (ou, si plusieurs vendeurs peuvent faire une même vente, alors une table croisée mais bon là je sens que tu ne vas pas suivre ;) )

 
Citation :

Pour ce qui est du WHERE, il devrait etre dans quelle ligne? Et que devrait-il contenir? (merci d'aider le débutant que je suis;) )


Ligne 13. Ta requête là te montre absolument tous les vendeurs. Donc en faisant un fetch_array() sur ce resultat, tu ne prends que le premier row, quel qu'il soit. C'est dans cette requête que tu dois mettre un "where", mais la condition exacte (c'est-à-dire celle que tu mets dans le where) tu es la seule à la connaître ...  : QU'EST CE QUI qualifie ce vendeur par rapport à un autre, pour cette transaction ?


Message édité par ZeBix le 15-01-2008 à 09:33:20
Reply

Marsh Posté le 15-01-2008 à 16:41:53    

Au départ, je pensais faire une seule table des ventes, avec au début un id_vendeur. Mais après j'ai besoin d'avoir par ex la somme totale d'argent pour laquelle le vendeur aura vendu.
Je prends un exemple:
id_vendeur:   articles:   prix:
2                  pull         23
1                  chemise   46
1                  shirt        14
3                  pull          35
2                  bas          15
 
Si je ne fais qu'une table des ventes, il y a moyen que je puisse récupérer après le prix total des ventes pour le vendeur 2 par exemple? Donc je devrais avoir 23+15=38. (il n'y a que la réponse qui m'intéresse)
C'est là que je bloque, mais si cela est possible, ce sera certainement plus facile avec une seule table! Mais pour ca, j'ai besoin de votre confirmation avant... voire d'une bonne aide pour le code;)
 
En résumé, soit je crée une table des ventes et je sais en retirer ce que je veux après (les sommes des prix correspondant à chaque vendeur), soit il faut que les données du formulaire s'enregistrent dans la table correspondant au nom du vendeur.
 
merci d'avance!!


Message édité par bingojm le 15-01-2008 à 16:54:44
Reply

Marsh Posté le 15-01-2008 à 17:14:44    

Citation :

Si je ne fais qu'une table des ventes, il y a moyen que je puisse récupérer après le prix total des ventes pour le vendeur 2 par exemple? Donc je devrais avoir 23+15=38. (il n'y a que la réponse qui m'intéresse)

 

Bien sûr que tu peux :

 

SELECT id_vendeur, sum( prix )
FROM ventes
GROUP BY id_vendeur

 

Si tu ne connais pas ça, je te suggère fortement l'achat d'un livre tel que "SQL pour les Nuls" et je dis pas ça pour être taquin, car ce bouquin est très bien fait... ;)

Message cité 1 fois
Message édité par ZeBix le 15-01-2008 à 17:18:49
Reply

Marsh Posté le 15-01-2008 à 18:01:57    

ZeBix a écrit :

Citation :

Si je ne fais qu'une table des ventes, il y a moyen que je puisse récupérer après le prix total des ventes pour le vendeur 2 par exemple? Donc je devrais avoir 23+15=38. (il n'y a que la réponse qui m'intéresse)


 
Bien sûr que tu peux :  
 
SELECT id_vendeur, sum( prix )
FROM ventes
GROUP BY id_vendeur
 
Si tu ne connais pas ça, je te suggère fortement l'achat d'un livre tel que "SQL pour les Nuls" et je dis pas ça pour être taquin, car ce bouquin est très bien fait... ;)


Ben voilà un bon conseil, merci pour la référence! Ca risque de bien m'aider, ca ne fait que quelques jours que je m'y mets dans ce domaine...
En attendant, comment puis-je arriver à afficher ce résultat?(eh oui c'est à ce point-là, mais faut bien commencer hein:) )
Comme ça?

Code :
  1. $sommeperso=mysql_query("SELECT id_vendeur, sum( prix ) FROM ventes GROUP BY id_vendeur" );
  2. echo $sommeperso;


ou je dois faire une boucle comme ça ? (en espérant que j'aie bien compris ca)

Code :
  1. $sommeperso=mysql_query("SELECT id_vendeur, sum(prix) FROM ventes as perso_total GROUP BY id_vendeur" );
  2. $affiche=mysql_fetch_array($sommeperso); 
  3. do
  4. echo $affiche['perso_total'];
  5. while ($affiche=mysql_fetch_array($sommeperso));


Merci encore...

Reply

Marsh Posté le 15-01-2008 à 18:57:59    

Je te donne le copier/coller d'une petite fonction bien pratique que j'utilise tout le temps en développement pour voir si mes requêtes sont bonnes :)
 

Code :
  1. function resultab($result)
  2. {
  3. echo "<table border=\"1\">";
  4.         echo "<thead><tr>";
  5.         for ($i=0;$i<mysql_num_fields($result);$i++) {
  6.           echo ("<th>".mysql_field_name($result,$i)."</th>" );
  7.         }
  8. echo "</tr></thead><tbody>";
  9.         for ($i=0;$i<mysql_num_rows($result);$i++)
  10.         {
  11.         $tbl=mysql_fetch_row($result);
  12.         echo "<tr>";
  13.         for ($j=0;$j<mysql_num_fields($result);$j++)
  14.            {echo "<td>&nbsp;".$tbl[$j]."&nbsp;";}
  15.         }
  16. echo "</tr></tbody></table>";
  17. }


 
tu mets ça au haut de ton fichier php ou, mieux, dans un include, et ensuite après ta requête mysql tu tapes :
resultab($sommeperso);
 
Il faut bien sûr que tes tables aient la nouvelle structure dont on parle ici, c'est-à-dire avec le id_vendeur en regard de chaque vente, etc.

Reply

Marsh Posté le 15-01-2008 à 19:02:40    

C'est bien gentil, mais je dois avouer que c'est un niveau un peu trop haut pour moi ca, tant que maintenant j'espère.
Si je reprends ce que disait "zebix", que dois-je mettre avec le SELECT pour afficher correctement le résultat?
Y a-t-il une des 2 propositions que j'avais mises qui se rapproche? Je dois avoir une erreur qqpart pcq rien ne s'affiche comme ca.
Sauvez-moi svp, je suis coincé!!!;)


Message édité par bingojm le 15-01-2008 à 19:03:14
Reply

Marsh Posté le 15-01-2008 à 19:02:40   

Reply

Marsh Posté le 16-01-2008 à 05:28:35    

Installe phpmyadmin! Ca te permettra de manipuler tes tables facilement pour ce que tu veux en faire et te tester tes requêtes  avec un affichage clair ;)
 
Presque tout est possible en sql. Quand ça se corse ça peut être à s'arracher les cheveux mais au pire suffit de rajouter un peu de traitement php.
 
C'est le but même d'un SGBD de manipuler les données, cherche toujours à le faire via sql plutot qu'en php si tu peux ;)
 
Donc pour ce qui est de la gestion de ventes, de stocks, de comptes tu peux tout faire avec quelques tables si elles sont bien faites ;)
 
N'hésites pas à faire un tour sur la catégorie sql si tu as un soucis ;)

Reply

Marsh Posté le 17-01-2008 à 20:14:25    

Salut à tous, petite question... pour ne pas recréer un nouveau post.
J'apprends bcp avec phpmyadmin, mais!!!
Le code suivant fonctionne super bien dans ma table:

Code :
  1. SELECT id_vendeur, sum( prix )
  2. FROM ventes
  3. GROUP BY id_vendeur


Mais je voudrais bien arriver à cela en créant mon site.
Comment puis-je afficher ce résultat avec php?
Vous voulez bien me transformer ca pour que je puisse le mettre dans mon code?
J'ai besoin que l'on me montre une fois pour faire de même par la suite, alors merci d'avance!!!

Reply

Marsh Posté le 17-01-2008 à 23:15:12    

Mais tu vas le transformer tout seul!
 
T'as la requête, t'as plusieurs 'lignes', tu éxécutes ta requête, tu récupères le tableau des données et tu boucles sur le tableau pour afficher :spamafote:
 
Rien de dur, y'a plus qu'à y aller ;)

Reply

Marsh Posté le 17-01-2008 à 23:26:14    

c'est très gentil, mais sincèrement, je débute... tu ne veux pas me donner un exemple, voire la réponse? Ce serait bien sympa....
J'ai bien su enregistrer la requête dans ma base, mais je ne sais pas comment sélectionner cette requete. je ne l'ai jamais fait. un exemple svp.....


Message édité par bingojm le 17-01-2008 à 23:28:54
Reply

Marsh Posté le 18-01-2008 à 09:40:39    

Personne pour m'aider? Je suis sûr que c'est simple, mais là, j'ai vraiment besoin d'un petit coup de pouce...
Svp...

Reply

Marsh Posté le 18-01-2008 à 10:31:17    

Reply

Marsh Posté le 18-01-2008 à 11:04:43    

merci, mais ca c'est ce que j'utilise en général, mais chez Lycos, j'ai la possibilité d'enregistrer ma requête. Je l'ai appelée 'somme'.
Je peux en enregistrer autant que je veux.
Actuellement j'ai, dans "Requêtes bookmarquées": 1 - somme.
Mais comment puis faire lancer et afficher le résultat de cette fameuse requête depuis ma page php??? Vu que la requête n'est pas enregistrée dans ma page php, comment puis-je l'appeler et l'exécuter? C'est ca que je ne comprends pas. Merci de m'aider...

Reply

Marsh Posté le 18-01-2008 à 11:14:34    

Reply

Marsh Posté le 18-01-2008 à 11:20:08    

ben c'est toujours la même chose. Ca c'est pour créer la requête! Moi elle est déjà créée mais bookmarquée sur l'hébergeur.  
je voudrais juste savoir comment on fait pour l'appeler depuis une page php pour arriver à en afficher le résultat.
une idée ou c'est impossible et je m'y prends mal?

Reply

Marsh Posté le 18-01-2008 à 11:50:12    

En espérant que cela réponde à ta question :

Code :
  1. <?php
  2. //Pour plus de clarté, on stocke le sql dans une variable (on utilise "AS" pour renommer le champ)
  3. $sql = "SELECT id_vendeur, sum(prix) AS sum_prix FROM ventes GROUP BY id_vendeur";
  4. //On exécute le sql et , en même temps, on met en place une gestion d'erreur à l'aide de "die"
  5. $sommeperso = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
  6. // on fait une boucle qui va faire un tour pour chaque enregistrement  
  7. while($data = mysql_fetch_assoc($sommeperso))
  8.     {
  9.     // on affiche les informations de l'enregistrement en cours  
  10.     echo $data['id_vendeur'].' : '.$data['sum_prix'].'<br>';
  11.     }
  12. //on libère la ressource
  13. mysql_close($sommeperso );
  14. ?>


Message édité par babasss le 18-01-2008 à 11:50:33

---------------
Feedback : http://forum.hardware.fr/hfr/Achat [...] 2666_1.htm
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed