venez tester ma page + conseils

venez tester ma page + conseils - PHP - Programmation

Marsh Posté le 28-06-2003 à 05:14:16    

je suis debutant en php/mysql (commence y a deux jours)
 
je mentriane a manipuler mysql dpeuis une page web, la j ai fais une insertion de donne, j essaierai le delete ect..
 
prob : comment faire pour que si il ny a rien dans les champs nom et prenom on ne puisse pas envoyer les donnees a la db.
 
et lorsque je rafraichie le prenom se met en double (vous pouvez tester) comment empecher ca ???
 
 
pour debuter je voudrai faire une gestion de sandwich
ex ue partie administration ou lutilsateur ajoute prix, produit
et une partie user, qui coche et choisi le nombre de sandwich jambon, ect et le prix se calcule automatiquement (sa devrai etre fesable)
 
 
 :hello:  
 
 
le lien :
http://lowouik.no-ip.com/test.php
 
le code  
 

Code :
  1. <html>
  2. <head>
  3. <title>test</title>
  4. </head>
  5. <body bgcolor="#537DA6">
  6. <?
  7. //variables
  8. $host="localhost";
  9. $user="root";
  10. $bdd="TEST";
  11. //connection
  12. @mysql_connect($host,$user) or die("Impossible de se connecter à la base de données" );
  13. @mysql_select_db("$bdd" ) or die("Impossible de se connecter à la base de données voulu" );
  14. ?>
  15. <form method="post" ><p>
  16. <FONT color="white" size="3"> prenom : </FONT>
  17. <input type="text" name="name" size="6" maxlength="20">
  18. <br>
  19. <FONT color="white" size="3">nom      :
  20. </FONT><input type="text" name="surname" size="6" maxlength="20"><br><br>
  21. <input type="submit" name="Submit" value="INSERT">
  22. </p>
  23. </form>
  24. <? if ($name=="" || $surname=="" ) {
  25. ?>
  26. <FONT color="white" size="3"><? echo "ERREUR" ?></FONT>
  27. <?
  28. exit;
  29. }
  30. //stockage dans la bdd
  31. $query = "INSERT INTO name(name,surname) VALUES('$name','$surname')";
  32. $result = mysql_query($query);
  33. $selectname = "SELECT name FROM name";
  34. $result = mysql_query($selectname);
  35. ?>
  36. <FONT color="white" size="3"><b><u>LISTE DES PRENOMS </FONT></u></b> <br><br>
  37. <table border="1" bgcolor="#FFFFFF" bordercolor="black" width="30%">
  38. <?
  39. while ($val = mysql_fetch_array($result)) {
  40. $name = $val["name"]; ?>
  41. <tr>
  42. <td><? echo "$name"; ?></td>
  43. </tr>
  44. <? } ?>
  45. </table>
  46. <br>
  47. <? mysql_close();?>
  48. </body>
  49. </html>


Message édité par xiluoc le 28-06-2003 à 12:18:18

---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 28-06-2003 à 05:14:16   

Reply

Marsh Posté le 28-06-2003 à 09:09:18    

autre question :
je veus que losque l on clic sur el bouton delete le code s execute , et rafraichisse automatiquement la page  
 
ex :  
 

Code :
  1. <form method="post" action="del.php">
  2. <input type="submit" value="DELETE TABLE NAME">
  3. </form>
  4. del.php
  5. <?
  6. $host="localhost";
  7. $user="root";
  8. $bdd="TEST";
  9. @mysql_connect($host,$user) or die("Impossible de se connecter à la base de données" );
  10. @mysql_select_db("$bdd" ) or die("Impossible de se connecter à la base de données voulu" );
  11. $del="DROP TABLE name";
  12. $recreate=" CREATE TABLE `name` (
  13. `USER_ID` INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  14. `name` VARCHAR(20) NOT NULL,
  15. `surname` VARCHAR(20) NOT NULL
  16. )";
  17. $a= mysql_query($del)
  18. or die ("ERREUR" );
  19. $b= mysql_query($recreate)
  20. or die ("ERREUR" );
  21. ?>

 
 
c la seul methode que j ai trouver masi c pas tellemtn ce que je veus vu que sa me renvoie a une autre page ...


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 28-06-2003 à 12:14:50    

jai resole le pb des espaces masi pas du refresh (f5) qui renvoie enfaite les donnees....
comment eviter ca ?
 
PS: nouveau code updater en post 1


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 28-06-2003 à 12:41:03    

ze vais déjà te répondre pour ton code de delete, d'abord t'es pas obligé de mettre ton code dans une autre page, tu peux par exemple mettre dans le formulaire de la première page
 
action="1ère page.php?act=del"
 
et récup la variable act au début de ta 1ère page genre
if (act==del) {
le code de ta page del.php}
 
aussinon, tu peux renvoyer à ta première page à la fin du del.php avec la fonction header()
ce qui nous donnerait un truc comme:
 
header ('location: 1erepage.php');
 

Reply

Marsh Posté le 28-06-2003 à 12:45:06    

pour ton prob de refresh, je comprends po bien, j'ai été sur la page et ça m'a po avancé lol... tu pourrais l'expliquer autrement ;)?
 
et aussinon, je vois po pq tu mets des @ devant tes fonctions de connection... c un truc pour empêcher de voir les erreurs, je vois pas à quoi ça te sert ici...

Reply

Marsh Posté le 28-06-2003 à 12:49:09    

Psykolio a écrit :

pour ton prob de refresh, je comprends po bien, j'ai été sur la page et ça m'a po avancé lol... tu pourrais l'expliquer autrement ;)?
 
et aussinon, je vois po pq tu mets des @ devant tes fonctions de connection... c un truc pour empêcher de voir les erreurs, je vois pas à quoi ça te sert ici...


 [:alarmclock119] pour les @
 
test comme ca :
tape un nom et prenom valide (non nul)
envoie
et rafraichi ton navigateur il vas demander un truc gnere volez vous renvoyer blablabla
comment j empeche ca??


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 28-06-2003 à 13:09:01    

hum...
 
alors si tu veux mettre le formulaire et la page de résultat sur un même fichier, il faut que tu fasses de conditions qui gèrent l'affichage de ta page suivant le stade auquel est l'utilisateur (insertion ou consultation)
 
en pratique, ton formulaire, tu l'envoie vers $self?act=envoi par exemple (où $self = "tonfichier.php";)
 
alors au début de ta page, tu mets if ($act=="envoi" ) {
là tu récup les variables du form et tu les insères dans la db puis tu mets un header avec $self?act=consult}
 
ensuite tu mets un elseif {act==$consult) {
affichage des données }
 
et enfin else {
affichage de ton formulaire }
 
j'espère que c'est + ou - compréhensible, je te réponds vite, si tu veux je regarde en détail après lol ;)... là ça tient p-e même po debout mais au moins c une piste ;)
 
ps: comme ça, ça supprimera aussi le beau ERREUR que tu vois sur la page quand on arrive;)


Message édité par Psykolio le 28-06-2003 à 13:10:45
Reply

Marsh Posté le 28-06-2003 à 13:09:30    

Psykolio a écrit :

ze vais déjà te répondre pour ton code de delete, d'abord t'es pas obligé de mettre ton code dans une autre page, tu peux par exemple mettre dans le formulaire de la première page
 
action="1ère page.php?act=del"
 
et récup la variable act au début de ta 1ère page genre
if (act==del) {
le code de ta page del.php}
 
aussinon, tu peux renvoyer à ta première page à la fin du del.php avec la fonction header()
ce qui nous donnerait un truc comme:
 
header ('location: 1erepage.php');
 
 


la 2nd methode amrche meme si quand je reviens a la page test.php  
le code erreur apparait ....
 
la 1 er methode je comprend pas trop, sa marche comme ca??
et je fait le test if act==del apres ??
 
 
 

Code :
  1. <form method="post" action="action="test.php?act=del">
  2. <input type="submit" name="Submit" value="DELETE TABLE NAME">
  3. </form>

 
 :jap:


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 28-06-2003 à 13:20:52    

Psykolio a écrit :

hum...
 
alors si tu veux mettre le formulaire et la page de résultat sur un même fichier, il faut que tu fasses de conditions qui gèrent l'affichage de ta page suivant le stade auquel est l'utilisateur (insertion ou consultation)
 
en pratique, ton formulaire, tu l'envoie vers $self?act=envoi par exemple (où $self = "tonfichier.php";)
 
alors au début de ta page, tu mets if ($act=="envoi" ) {
là tu récup les variables du form et tu les insères dans la db puis tu mets un header avec $self?act=consult}
 
ensuite tu mets un elseif {act==$consult) {
affichage des données }
 
et enfin else {
affichage de ton formulaire }
 
j'espère que c'est + ou - compréhensible, je te réponds vite, si tu veux je regarde en détail après lol ;)... là ça tient p-e même po debout mais au moins c une piste ;)
 
ps: comme ça, ça supprimera aussi le beau ERREUR que tu vois sur la page quand on arrive;)


je test ca tt de suite


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 28-06-2003 à 13:37:58    

pourle problème du refresh, deux solutions :
 
1) tu déclares des champs uniques (notamment une clé, ça peut être utile). A ce moment, si tu insère un doublon dedans, proutch, ça plante, donc tu trappes l'erreur et tu peux pas inserrer de doublons.
 
2) avant de faire le insert, tu vérifies avec un select qu'il n'y a rien dedans. c'est solution est moins propre que la 1, parceque si deux personnes sont bien synchro comme il faut, il est possible qu'elle passent au travers (bon, ok, c'est dans un laps de temps de quelques ms). Donc tu devrais pas avoir de souci. Mais disons que dans le domaine où je bosse (ERP) ce risque est trop impostant parceque quand t'as 2000 personnes qui utilisent un même serveur, ben t'as pas mal de gens qui font des traîtements dans la même ms :) Donc il ne faut pas retenir cette méthode comme propre, car elle est affreuse ;)

Reply

Marsh Posté le 28-06-2003 à 13:37:58   

Reply

Marsh Posté le 28-06-2003 à 13:41:35    

regarde un peu ce que ça donne plus ou moins... et là, en suivant le même schéma, tu peux ajouter une condition $act==del et y intégrer ton script de suppression

Code :
  1. <?
  2. $self = "test.php";
  3. if (!empty($act)) { //si la variable  act est renseignée, c'est qu'on a besoin de la connection à la db
  4. $host="localhost";
  5. $user="root";
  6. $bdd="TEST";
  7. mysql_connect($host,$user) or die("Impossible de se connecter à la base de données" );
  8. mysql_select_db("$bdd" ) or die("Impossible de se connecter à la base de données voulu" );
  9. }
  10. elseif (empty($act)) { //si la variable act est vide, on affiche le formulaire bêtement
  11. if ($warn=="pobon" ) {//si les champs n'étaient pas renseignés
  12. print "il faut renseigner tous les champs"; }
  13. else {
  14. echo "<form method=".$self."?act=insert><p>";
  15. echo '<FONT color="white" size="3"> prenom : </FONT>';
  16. echo '<input type="text" name="name" size="6" maxlength="20">';
  17. echo '<br>';
  18. echo '<FONT color="white" size="3">nom      : ';
  19. echo '</FONT><input type="text" name="surname" size="6" maxlength="20"><br><br>';
  20. echo '<input type="submit" name="Submit" value="INSERT">';
  21. echo '</p>';
  22. echo '</form>';
  23. }
  24. }
  25. if ($act==insert) { //si on en est à l'envoi du formulaire, on insère les données
  26. if ($name=="" || $surname=="" ) {
  27. header ('location: '.$self.'?warn=pobon');}
  28. else {
  29. $query = "INSERT INTO name(name,surname) VALUES ('$name','$surname')";}
  30. header ('location: '.$self.'?act=consult');
  31. }
  32. elseif ($act==consult) {
  33. $selectname = "SELECT name FROM name";
  34. $result = mysql_query($selectname);
  35. echo '<FONT color="white" size="3"><b><u>LISTE DES PRENOMS </FONT></u></b> <br><br>';
  36. echo '<table border="1" bgcolor="#FFFFFF" bordercolor="black" width="30%">';
  37. while ($val = mysql_fetch_array($result)) {
  38. $name = $val["name"];
  39. echo "<tr><td>";
  40. echo $name;
  41. echo "</td></tr>";
  42. echo "</table><br>";
  43. mysql_close();
  44. }
  45. }
  46. ?>

Reply

Marsh Posté le 28-06-2003 à 16:27:11    

Psykolio a écrit :

regarde un peu ce que ça donne plus ou moins... et là, en suivant le même schéma, tu peux ajouter une condition $act==del et y intégrer ton script de suppression

Code :
  1. <?
  2. $self = "test.php";
  3. if (!empty($act)) { //si la variable  act est renseignée, c'est qu'on a besoin de la connection à la db
  4. $host="localhost";
  5. $user="root";
  6. $bdd="TEST";
  7. mysql_connect($host,$user) or die("Impossible de se connecter à la base de données" );
  8. mysql_select_db("$bdd" ) or die("Impossible de se connecter à la base de données voulu" );
  9. }
  10. elseif (empty($act)) { //si la variable act est vide, on affiche le formulaire bêtement
  11. if ($warn=="pobon" ) {//si les champs n'étaient pas renseignés
  12. print "il faut renseigner tous les champs"; }
  13. else {
  14. echo "<form method=".$self."?act=insert><p>";
  15. echo '<FONT color="white" size="3"> prenom : </FONT>';
  16. echo '<input type="text" name="name" size="6" maxlength="20">';
  17. echo '<br>';
  18. echo '<FONT color="white" size="3">nom      : ';
  19. echo '</FONT><input type="text" name="surname" size="6" maxlength="20"><br><br>';
  20. echo '<input type="submit" name="Submit" value="INSERT">';
  21. echo '</p>';
  22. echo '</form>';
  23. }
  24. }
  25. if ($act==insert) { //si on en est à l'envoi du formulaire, on insère les données
  26. if ($name=="" || $surname=="" ) {
  27. header ('location: '.$self.'?warn=pobon');}
  28. else {
  29. $query = "INSERT INTO name(name,surname) VALUES ('$name','$surname')";}
  30. header ('location: '.$self.'?act=consult');
  31. }
  32. elseif ($act==consult) {
  33. $selectname = "SELECT name FROM name";
  34. $result = mysql_query($selectname);
  35. echo '<FONT color="white" size="3"><b><u>LISTE DES PRENOMS </FONT></u></b> <br><br>';
  36. echo '<table border="1" bgcolor="#FFFFFF" bordercolor="black" width="30%">';
  37. while ($val = mysql_fetch_array($result)) {
  38. $name = $val["name"];
  39. echo "<tr><td>";
  40. echo $name;
  41. echo "</td></tr>";
  42. echo "</table><br>";
  43. mysql_close();
  44. }
  45. }
  46. ?>




 
j ai essayer plein d emmodif masi j y arrive pas  :cry:  
ca a l air logique ce que tu as fait mais y des trucs que je comprend pas :
 
 

Code :
  1. echo "<form method=".$self."?act=insert><p>";

 
method=".test.php." a quoi sa sert les .***. ??
quand tu ecrit ?act=insert sa veus dire que $act="insert" ?
pourtant que je modifie le code  pour voire $act il ne lui trouve aucuen valeur .
 
mysql me sort des erreurs la dessus :
header ('location: '.$self.'?act=consult');
 
enfaitc uen sorte de loop, ca renvoi au debut de la page + $act="consult".
 
 
 

Code :
  1. Warning: Cannot add header information - headers already sent by (output started at c:\program files\easyphp\www\test.php:14) in c:\program files\easyphp\www\test.php on line **

 


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 28-06-2003 à 23:47:59    

les .***. servent ici à intégrer la variable à interpréter dans l'echo (p-e que ça marche sans, faut tester, mais en tt cas je suis sur que ça marche avec :D)
pour le ?var=contenu , oui, ça veut dire que $var = contenu et c'est transmis dans l'url, t'as qu'à faire une page simple php avec  
echo $var;
et aller à cette page en mettant dans l'adresse
tapage.php?var=contenu
 
et tu verras s'afficher "contenu"..
 
pour les header, j'ai mis ça passque ça me semblait logique, mais c'est possible qu'il te fasse cette erreur... je regarde demain ;)

Reply

Marsh Posté le 29-06-2003 à 01:22:37    

Psykolio a écrit :

les .***. servent ici à intégrer la variable à interpréter dans l'echo (p-e que ça marche sans, faut tester, mais en tt cas je suis sur que ça marche avec :D)
pour le ?var=contenu , oui, ça veut dire que $var = contenu et c'est transmis dans l'url, t'as qu'à faire une page simple php avec  
echo $var;
et aller à cette page en mettant dans l'adresse
tapage.php?var=contenu
 
et tu verras s'afficher "contenu"..
 
pour les header, j'ai mis ça passque ça me semblait logique, mais c'est possible qu'il te fasse cette erreur... je regarde demain ;)


 
ok je vais ressayer merci beaucoup pour le temps passer  :jap:


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Marsh Posté le 29-06-2003 à 13:22:15    

j yarrive toujours pas, comemnt lui dire a la fin de al aprtie insert par exemple avec le headrer de recharger la page avec la variable $var=show  :cry:  
ton code semble ok (header blabla )
 
 :cry:


---------------
jeunes con de la derniere averse, vieux con des neiges d'antant.
Reply

Sujets relatifs:

Leave a Replay

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