débutant avec de grande ambitions

Invité
Invité n'ayant pas de compte PHPfrance

23 avr. 2005, 20:00

bon alors si tu veux que je te dis ce que je comprend alors je vais te dire que id c'est pour mettre un numéro aux champs nom email dateheure

ensuite primary key je sais pas trop ce que c'est

j'ai déjà créer des tables avec d'autres tuto j'ai réussi, j'ai aussi réussi a en faire une moi même et a les afficher dans une page en arrivant a faire le même résultat qu'en html donc je pense que le pb de cette table c'est qu'il y a une erreur mais je vois pas ou elle est ou alors il y a quelque chose qui m'echape lors de la création de la table

Eléphant du PHP | 139 Messages

23 avr. 2005, 20:22

et bien on me dis qu'elle ne marche pas je comprend pas encore pourquoi
Sois plus précis quand tu postes...

As-tu des messages d'erreur, si oui lesquels ?

Invité
Invité n'ayant pas de compte PHPfrance

23 avr. 2005, 20:26

on me dis cela
MySQL a répondu:

#1067 - Valeur par d馡ut invalide pour 'id'

Eléphant du PHP | 139 Messages

23 avr. 2005, 20:44

A priori, certaines versions de mysql refusent le DEFAULT avec auto_increment !!! en tout cas avec MySQL 4.1

Enleve le.

Code : Tout sélectionner

CREATE TABLE test( id int( 11 ) NOT NULL AUTO_INCREMENT , nom varchar( 20 ) NOT NULL , email varchar( 50 ) , dateheure datetime, PRIMARY KEY ( id ) )

Invité
Invité n'ayant pas de compte PHPfrance

23 avr. 2005, 21:35

merci ca marche mais maintenant quand je lance le fichier php il me trouve une erreur "ligne 8"

Code : Tout sélectionner

<?php /* Date de création: 22/04/2005 */ ?> <html> <body> <?php switch($_POST['action']){ // INSERTION DANS LA BASE case "inserer": // déclaration de quelques variables $host = "localhost"; $user = "root"; $pass = ""; $bdd = "fpg2"; $table = "test"; // connection avec MySQL @mysql_connect($host, $user, $pass) or die("Impossible de se connecter à la base de données"); // Le @ indique à php de ne pas afficher de message d'erreur @mysql_select_db($bdd) or die("Impossible de se connecter à la base de données"); // affichage sélection echo '<p>Bonjour ' . htmlentities($_POST['nom']) . ', votre email est ' . htmlentities($_POST['email']) . '</p>'; // stockage dans la bdd $nom = $_POST['nom']; $email = $_POST['email']; if(!get_magic_quotes_gpc()) { // si php n'est pas configuré pour le faire automatiquement, on ajoute des \ devant les ' // deux raisons : autoriser d'ajouter des ', et sécuriser notre requete // on y reviendra dans un prochain tutorial $nom = addslashes($nom); $email = addslashes($email); } $sql = "INSERT INTO " . $table . "(nom, email, dateheure) VALUES('" . $nom . "','" . $email . "', NOW())"; $res = mysql_query($sql); // déconnection avec MySQL mysql_close(); break; // AFFICHAGE FORMULAIRE HTML default: ?> <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="hidden" name="action" value="inserer" /> <p>Votre nom : <input type="text" name="nom" /></p> <p>Votre email : <input type="text" name="email" /></p> <p><input type="submit" name="Submit" value="Ok" /></p> </form> <? break; } ?> </body> </html>
je comprend pas :s merci de l'aide quand même

Mammouth du PHP | 19672 Messages

23 avr. 2005, 21:43

Ha ben voilà un début :)
Il était temps :)

Ok, ligne 8 il te dit qu'il y a une erreur, mais en réalité, l'erreur est deux ligne au dessus : switch($_POST['action']) n'a à priori rien à faire là.

à ce stade du programme, tu dois vérifier si le bouton de type submit a été cliqué : donc, au lieu de switch, tu peux faire :
if(isset($_POST['Submit']))
{
    // etc..
suis bien ton ptrogramme, tu es bien lancé: il y aura sans doute d'autre petits accrocs, mais c'est bien parti.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 139 Messages

23 avr. 2005, 22:19

Essaie déjà de faire des copier-coller comme il faut :?
 // INSERTION DANS LA BASE 
case "inserer":
 // déclaration de quelques variables
case "inserer"; a été repris dans le commentaire.

tu vas voir afficher ceci:
Notice: Undefined index: action in ...php on line X

Ce n'est pas une erreur, mais une alerte comme quoi la variable action n'existe pas.

pour ne plus avoir ce message :
if (isset($_POST['action']))
{
   $action=$_POST['action'];
}else{
   $action="";
}
switch($action){
Si tu ne le comprends pas,demande, on t'expliquera.

Edit: message d'erreur

Invité
Invité n'ayant pas de compte PHPfrance

24 avr. 2005, 09:53

ok merci pour vos conseil, et maintenant ce que je cherche depuis la nuit des temps c'est comment mettre dans notre formulaire la donnée précédement rentrée. que mettre dans la case value= ?

je vous remerci encore de ce que vous m'apprenez et si vous avez des difficultées en html je suis la :lol: :D

Mammouth du PHP | 19672 Messages

24 avr. 2005, 10:14

Si tu as regardé mon script de formulaire, tu as du le lire rapidement. Il est complet à ce détail près qu'il ne fait comme traitement que l'affichage de ce que l'internaute a inscrit. Mais comme je l'ai noté dans les commentaires, le traitement peut très bien être différent et effectuer par exemple une insertion dans une base de données.

Ceci dit, si tu fais le test en ne remplissant pas certaines parties définies comme obligatoire, le formulaire va être affiché à nouveau, mais les données inscrites ne sont pas perdues pour autant et sont inscrites dans leurs cases, en d'autres termes, l'attribut "value" est alimenté par les valeurs inscrites par l'internaute : comment ? mon script est en principe très facile à suivre. À la première ouverture du formulaire, celui-ci est vide, c'est normal. Lorsqu'on clique sur le bouton d'envoi, la page est rechargée et on teste si ce bouton [envoyer] a été cliqué, auquel cas on initialise des variables avec ce que contient la Super-globale $_POST. Ainsi, si dans le formulaire j'ai un champ qui a pour attribut "name" la valeur "nom", je crée une variable $nom = $_POST['nom']
Si tu as bien suivi jusque là, on continue, sinon, fais une petite pause et ouvre à nouveau mon script pour suivre et bien assimiler. La validation du script vérifie que certaines cases sont bien remplies et/ou valides puis si nécessaire on affiche à nouveau le formulaire. Pour remettre les valeurs dans les cases on ajoute :
<?php
/* En haut de la page, on initialise les variables */
$nom = $_POST['nom'];

/* Plus loin lorsqu'on affiche à nouveau le formulaire, on peut utiliser cette variable */
?>
<input type="text" name="nom" value="<?php echo($nom); ?>" />
Voilà, exerce toi là-dessus, ce n'est pas compliqué. Mais attention: d'après le script que tu as affiché, le formulaire n'est présent qu'une fois dans ta page. Si tu l'utilises tel quel en ajoutant simplement ce que je viens d'illuster dans les attributs "value", lors de la première ouverture, tu auras une erreur parce que les variables ne sont pas initialisées. Il faudra donc les tester :
<input type="text" name="nom" value="<?php if(isset($_POST['nom'])){echo($_POST['nom']);} ?>" />
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 19672 Messages

24 avr. 2005, 11:28

Helub, pas de message privé pour du support s'il te plait tant que je t'y invite pas.

Ceci dit, je ne vois pas quel est le problème. j'ai édité tes deux fichiers. Après quelques corrections mineures que je qualifierais de "cosmétiques", ça ne me dit pas ce qui ne fonctionne pas dans ton système.
Ton premier fichier est donc :
<html>
<!-- Date de création: 22/04/2005 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
</head>
<body>
<form method="post" action="index.php" target="_blank">
Ligne 1 colone 1 du tableau
<input type="text" name="unun"><br>
Ligne 1 colone 2 du tableau
<input type="text" name="undeux"><br>
Ligne 1 colone 3 du tableau
<input type="text" name="untrois"><br>
Ligne 2 colone 1 du tableau (1)
<input type="text" name="deuxun"><br>
Ligne 2 colone 1 du tableau (2)
<input type="text" name="deuxdeux"><br>
Ligne 2 colone 1 du tableau (3)
<input type="text" name="deuxtrois"><br>
Ligne 2 colone 3 du tableau
<input type="text" name="deuxquatre"><br>
Ligne 2 colone 2 du tableau
<input type="text" name="deuxcinq"><br>
troisun
<input type="text" name="troisun"><br>
troisdeux
<input type="text" name="troisdeux"><br>
quatreun
<input type="text" name="quatreun"><br>
quatredeux
<input type="text" name="quatredeux"><br>
quatretrois
<input type="text" name="quatretrois"><br>
<input type="submit" name="submit" value="Envoyer">
</form>

</body>
</html>
À ce stade là, je ne vois pas de problème particulier si ce n'est un petit point mineur : le nom de ton bouton submit : je ne recommande jamais d'utiliser un mot clé: "submit" est un mot clé et l'utiliser comme nom peut devenir source d'erreur : tu peux le nommer différemment. Mais c'est sans importance.
D'autre part, dans la balise form, tu as ajouté un [target="_blank"] : pour quoi faire ?

Le second fichier par contre a subi des changements plus importants et voici ce que ça devrait donner :
<?php /* Date de création: 22/04/2005 */ ?>
<html>
<body bgcolor="#000000">
<div align=center><table size=750 cellspacing=0 cellpadding=0>
  <tr>
    <td><img src=entete.jpg><br>
      <img src=nomteam.jpg><br>
    </td>
  </tr>
</table>
</div>
<br>
<?php
// connexion à la base de données
$db = mysql_connect('localhost', 'root', '')
or die('connexion impossible');

// sélection de la base
mysql_select_db('fpg',$db);
//J'identifie les variables
$unun = $_POST["unun"];
$undeux = $_POST["undeux"];
$untrois = $_POST["untrois"];
$deuxun = $_POST["deuxun"];
$deuxtrois = $_POST["deuxtrois"];
$troisun = $_POST["troisun"];
$troisdeux = $_POST["troisdeux"];
$quatreun = $_POST["quatreun"];
$quatredeux = $_POST["quatredeux"];
$quatretrois = $_POST["quatretrois"];
$deuxdeux = $_POST["deuxdeux"];
$deuxquatre = $_POST["deuxquatre"];
$deuxcinq = $_POST["deuxcinq"];
//J'envoie la requête d'insertion des données
mysql_query("INSERT INTO indextexte VALUES(' ','". $unun ."','". $undeux ."','". $untrois ."','". $deuxun ."','". $deuxtrois ."','". $troisun ."','". $troisdeux ."','". $quatreun ."','". $quatredeux ."','". $quatretrois ."','". $deuxdeux ."','". $deuxquatre ."')");

//Je recupere les données
?>
<div align=center>
<table border=1solid#FFFFFF size=750 cellspacing=0 cellpadding=0>
  <tr>
    <td width=200><font face=Arial color=#FFFFFF><div align=center><?php echo($unun); ?></div></font></td>
    <td width=350><font face=Arial color=#00FF00><div align=center><?php echo($undeux); ?></div></font></td>
    <td width=200><div align=center><font face=Arial color=#FFFFFF><?php echo($untrois); ?></font></div></td>
  </tr>
  <tr>
    <td width=200>
      <div align=center><font face=Arial color=#FF0000><?php echo($deuxun); ?></font><br>
      <font face=Arial color=#555555><?php echo($deuxdeux); ?><br>
      <?php echo($deuxtrois); ?></font></div></td>
    <td width=350><font face=Arial color=00FF00><?php echo($deuxcinq); ?></font></td>
    <td width=200><font face=Arial color=#0000CC><div align=center><?php echo($deuxquatre); ?></div></font></td>
  </tr>
</table>
<br>
<table width=750 border=1solid#FFFFFF cellpadding=0 cellspacing=0>
  <tr>
    <td>
      <div align=center><font face=Arial color=#FFFFFF><?php echo($deuxcinq); ?></font></div>
    </td>
  </tr>
</table>
<?php
// fin de la connexion
mysql_close();
?>
</div>
</body>
</html>
Bon, ok, où est le problème ? Tu ne me dis pas ce qui ne marche pas, alors je ne vois pas ce qui cloche. Les modification que j'ai effectuées sont, tu le vois au niveau de l'affichage du code HTML (que j'ai corrigé, tu devrais utiliser Ctrl+F9 dans WebExpert, c'est un raccourci intéressant) Et j,ai également apporté quelques correction dans l'écriture de la requête d'insertion: c'est une discipline que je recommande à qui veut bien l'entendre , séparer soigneusement le code PHP des chaines de caractères.

Maintenant, essaye de formuler ta question en me disant ce qui se passe quand tu lances l'exécution de tout ça: ce qui ne fonctionne pas, les messages d'erreurs que tu obtiens. Je ne peux pas tout deviner.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

24 avr. 2005, 11:52

tout fonctionne dans ce que je t'ai donné mais ce que je veux compredre c'est comment insérer le code pour que les champs du formulaire restent remplis quand ils ont déjà été remplis auparavant et si il n'a pas été rempli evidemment il est blanc merci

Mammouth du PHP | 19672 Messages

24 avr. 2005, 17:16

Me poser cette question revient à me dire très clairement : "Non, je n'ai pas regardé ton script de formulaire, je m'en fous, ce que je veux, c'est comprendre comment ça marche!"

Continue comme ça, et tu n'auras plus de réponses de personne ici. Tu as tout dans ce formulaire, je l'ai écrit exprès pour ça en le commentant largement. Si un point reste difficile à comprendre dedans, je suis disponible pour y répondre. Mais prends au minimum le temps de lire et d'assimiler les réponses qu'on t'envoie et essaye d'apprendre, n'attends pas que ça se fasse tout seul. On est à bientôt 4 pages pour ce post et ça devient lassant, je crois que pour l'instant, ça frise le record.

Personne n'a dit que c'est facile d'apprendre le PHP, et personne ne peut apprendre à ta place. Sois patient et avant de sauter tout de suite sur le clavier quand l'évidence ne te saute pas dessus, prends le temps de bien faire le tour des réponses une par une. une chose à la fois, un pas après l'autre et tu avanceras: si tu essayes d'aller p^lus vite que la musique, tu vas te casser la figure.

Allez, relis un peu tout ce qui précède, toutes les réponses à tes questions sont là.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

24 avr. 2005, 19:23

mais bien sur que si je l'ai lu ton truc sur le formulaire, je l'ai lu si tot que tu me las passé, et je ne comprend tjs pas j'y peux rien

Mammouth du PHP | 19672 Messages

24 avr. 2005, 19:33

Alors je ne vois qu'une explication, ce qui serait rassurant : tu es à saturation pour le moment. Lâche le clavier, éteinds ton ordinateur et prends l'air, va jouer au foot, va au cinéma voir quelque chose de bien insignifiant, change-toi les idées: tu es plongé dans le code depuis trop longtemps en continu et avec la meilleure volonté du monde, tu ne pourras plus avancer.

Respire donc de temps en temps, ça fait du bien. Quand tu te seras bien oxygéné le cerveau (pas juste dix minute hein? 24 heures minimum), tu reprendras plus sereinement et tu auras eu le temps de décanter un peu tout ça.

Allez, @+
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 5 Messages

24 avr. 2005, 20:54

je ne suis pas constament sur le pc je sort détrompe toi, et j'ai pas compris ya qqchose qui m'échappe donc explique moi :s