Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2007, 11h37   #1
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
Par défaut [Conception] pas d'affichage dans un tableau

Bonjour, j'ai créer une table de donnée pour afficher la liste des clients apres une inscription dans un formulaire d'inscription.

Dans ce formulaire il est question de plusieurs champs a remplir sauf un seul: le code de la catégorie client.

Par exemple le client est UN MAGASIN détaillant je veux lui attribuer un code ("MAG" dans mon cas).

A défaut que le client remplisse dans le formulaire a quel code il appartient, j'aimerais savoir comment implanté celui dans un tableau. (les autres champs sotn affichés dans mon tableau sauf celui-ci donc...)

J'ai créer par ailleurs, en plus de la table Client, la table categclient qui va attribuer le code (en clé étrangère a codecatcl de la table client...mais bizzarement celui-ci ne s'affiche pas aussi dans la table client.)

Voila mes différents codes:

Inscription:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<html>
 <body>
  <?php
 
	// Affectation des valeurs saisies dans des variables
 
		        $login=$_POST['login'];
                        $Nom=$_POST['Nomcl'];
                        $Prenom=$_POST['Prenomcl'];
			$Adresse=$_POST['Adrescl'];
			$codepostale=$_POST['cpcl'];
                        $ville=$_POST['villecl'];
                        $pass=$_POST['pwd'];
	                $type=$_POST['TypeCl'];
			$code=$_POST['codeCatCl'];				
 
        // Connexion au serveur MySQL
			$db=mysql_connect("localhost","root","root") or die("erreur de connexion".mysql_error());
 
	// Ouverture de la base VPC2
			mysql_select_db("fringues",$db) or die("erreur de connexion à la base fringues");
 
	// Requête d'insertion des valeurs dans la table CLIENT
			$reqC="INSERT INTO client
                        VALUES('','$login','$Nom','$Prenom','$Adresse','$codepostale','$ville','$pass','$code', '$type')";
 
                        mysql_query($reqC) or die("erreur".mysql_error());
 
        // Requête d'insertion des valeurs dans la table USER
			$reqC="INSERT INTO USER
                        VALUES('','$login','$pass')";
 
 
       // Exécution de la requête
			mysql_query($reqC) or die("erreur".mysql_error());
			echo "Vos coordonnées ont été enregistrées.<br /><br />";
 
	// Fermeture de la connexion à MySQL
			mysql_close();
 
	?>
 </body>
</html>
l'erreur apres l'isncription:

Notice: Undefined index: codeCatCl in inscription.php on line 15

Formualire HTML:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html><title> formulaire simplifié FS</title>
<body>
<form method="POST" action="http://127.0.0.1//ADMINISTRATION/INSCRIPTION/inscription.php">
<h4>FORMULAIRE D'inscription</h4>
Nom :
<input type="text" name="Nomcl">
<br>
Prénom :
<input type="text" name="Prenomcl">
<br>
Login :
<input type="text" name="login">
<br>
Adresse de livraison :
<input type="text" name="Adrescl">
<br>
Type entreprise:
<select name="TypeCl">
<option value="Magasin détaillant">Magasin détaillant</option>
<option value="Revendeurs">Revendeurs</option>
<option value="Collectivités locales">Collectivités locales</option>
<option value="Particuliers">Particuliers</option>
</select> 
</br>
Code Postale:
<input type="text" name="cpcl">
<br>
Ville:
<input type="text" name="villecl">
<br>
password:
<input type="password" name="pwd">
<br><br>
<input type="submit" value="Envoyer">
Tableau informations clients:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<body bgcolor="silver">
<br>
<br>
<br>
<center><font size=36>Informations des clients</font></center>
<br>
<br>
<title>Liste des Clients</title>
<body>
<?
// information pour la connection à le DB
$host = 'localhost';
$user = '***';
$pass = '***';
$db = 'fringues';
 
// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());
 
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT * FROM Client';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
 
 
// si on a récupéré un résultat on l'affiche.
if($total) {
    // debut du tableau
    echo '<table bgcolor="#FFFFFF">'."\n";
        // première ligne on affiche les titres prénom et surnom dans 2 colonnes
        echo '<tr>';
        echo '<td bgcolor="#669999"><b><u>Numéro Client</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Nom</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Prénom</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>login</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Type Client</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Code Type Client</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Adresse de Livraison</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Code postale</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Ville</u></b></td>';
        echo '<td bgcolor="#669999"><b><u>Password</u></b></td>';
       echo '</tr>'."\n";
    // lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.    
    while($row = mysql_fetch_array($result)) {
        echo '<tr>';
        echo '<td bgcolor="#CCCCCC">'.$row["numcl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["nomcl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["prenomcl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["login"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["TypeCl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["codecatCl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["adrescl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["cpcl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["villecl"].'</td>';
        echo '<td bgcolor="#CCCCCC">'.$row["pwd"].'</td>';
        echo '</tr>'."\n";
    }
    echo '</table>'."\n";
    // fin du tableau.
}
else echo 'Pas d\'enregistrements dans cette table...';
 
// on libère le résultat
mysql_free_result($result);
 
?>
Voila !
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h01   #2
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Bonjour

Le message d'erreur indique que l'index codeCatCl n'existe pas
Tu essayes de récupérer la valeur $_POST['codeCatCl'] alors qu'il n'existe aucun champ de ce nom dans le formulaire. D'où erreur.
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h16   #3
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
Justement, je veux que le codeCategCl ne soit pas visible lors de l'inscription.
Je veux que lorsque qu'on choisit dans la liste découlante: Magasin détaillant par exemple, le code attribué se mette dans le tableau.
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 13h37   #4
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Autant pour moi, j'avais mal lu ton explication
Je résume : il ya une table client et une table catégorie de client. C'est cette table qui contient les codes de catégorie.
Ce que tu veux faire, c'est qu'en fonction du type de client (entré dans le formulaire) la table catégorie remplisse le champ codeCat de la table client.
Est-ce bien ça ? ou est-ce que je suis encore à côté de la plaque ?

Si c'est bien ça, je suppose que la table catégorie doit avoir 2 champs du genre type et code. Mais dans ce cas, à quoi sert le champ type dans la table client ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h10   #5
Membre habitué
 
Avatar de Shinji62
 
Inscription : novembre 2006
Messages : 135
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 135
Points : 133
Points : 133
Bonjour,
Peux tu rexpliquer ce que tu cherches exactement à faire, parce que là je suis un peu comme Celira je ne pige rien à ton explication.
Shinji62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h16   #6
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
Citation:
Envoyé par Celira
Autant pour moi, j'avais mal lu ton explication
Je résume : il ya une table client et une table catégorie de client. C'est cette table qui contient les codes de catégorie.
Ce que tu veux faire, c'est qu'en fonction du type de client (entré dans le formulaire) la table catégorie remplisse le champ codeCat de la table client.
Est-ce bien ça ? ou est-ce que je suis encore à côté de la plaque ?

Si c'est bien ça, je suppose que la table catégorie doit avoir 2 champs du genre type et code. Mais dans ce cas, à quoi sert le champ type dans la table client ?
Voila c'est exactement ça. le champ type c'est pour avoir un aperçu mansucrit.
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 14h25   #7
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Dans ce cas, il faut faire une requête qui récupère le code dans la table categorie et le stocke dans ta variable $code, avant l'insertion.
Code ceci n'est pas du code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
//recuperation des variables sauf code
// de la forme $variable=$_POST['index'];
 
//connexion à la base de donnee
//mysql_connect...
 
//recuperation du code
$sql="SELECT code FROM categorie WHERE type='$type'";
$res=mysql_query($sql) or die(mysql_error());
$data=mysql_fetch_assoc($res);
$code=$data['code'];
 
//insertions....
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h00   #8
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
merci je vais tester ça mais j'ai pas compris pourquoi t'a mis ça:

//recuperation des variables sauf code
$var=$_POST['var'];
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h09   #9
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
Bon, ça l'air d'etre ça mais maintenant il me met une erreur de syntaxe

erreurErreur de syntaxe près de 'Magasin détaillant')' à la ligne 2
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h16   #10
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
ça risque d'être un problème de ' et ", mais d'ici j'ai un peu du mal à voir laquelle est la ligne 2 C'est celle de l'insert ou de select code ?
Ajoute un echo $code après la récupération de la variable, ça peut aussi venir de là...
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h27   #11
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
l>
	<head>
		<title>Validation de l'inscription</title>
	</head>
<body>
        <?
 
	// Affectation des valeurs saisies dans des variables
 
		        $login=$_POST['login'];
                        $Nom=$_POST['nomcl'];
                        $Prenom=$_POST['prenomcl'];
			$Adresse=$_POST['adrescl'];
			$codepostale=$_POST['cpcl'];
                        $ville=$_POST['villecl'];
                        $pass=$_POST['pwd'];
	                $type=$_POST['TypeCl'];
 
 
        // Connexion au serveur MySQL
			$db=mysql_connect("localhost","root","root") or die("erreur de connexion".mysql_error());
 
	// Ouverture de la base fringues
			mysql_select_db("fringues",$db) or die("erreur de connexion à la base fringues");
 
       //recuperation du code
                        $sql="SELECT codeCatCl FROM categCl WHERE libelcl='$type'";
                        $res=mysql_query($sql) or die(mysql_error());
                        $data=mysql_fetch_assoc($res);
                        $code=$data['codeCatCl'];
 
       // Requête d'insertion des valeurs dans la table CLIENT
			$reqC="INSERT INTO client (numclient, nomcl, prenomcl, adrescl, cpcl, villecl, pwd, TypeCl)
                        VALUES('','$login,'$Nom','$Prenom','$Adresse','$codepostale','$ville','$pass','$type')";
 
                        mysql_query($reqC) or die("erreur".mysql_error());
 
        // Requête d'insertion des valeurs dans la table USER
			$reqC="INSERT INTO USER
                        VALUES('','$login','$pass')";
 
 
        // Exécution de la requête
			mysql_query($reqC) or die("erreur".mysql_error());
			echo "Vos coordonnées ont été enregistrées.<br /><br />";
 
	// Fermeture de la connexion à MySQL
			mysql_close();
 
	?>
</body>
</html>
je remet mon code modifié mais la je vois pas vraiment..
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h38   #12
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Question : où est l'insertion du code ? m'est avis que c'est ça qui plante. Il y a peut-être eu une légère confusion : le bout de code que je t'ai donnée tout à l'heure permet de récupérer le bon code de catégorie. Mais il faut toujours l'insérer à la main.
D'où requête :
Code php :
1
2
3
// Requête d'insertion des valeurs dans la table CLIENT
$reqC="INSERT INTO client
              VALUES('','$login','$Nom','$Prenom','$Adresse','$codepostale','$ville','$pass','$code', '$type')";
Et rajoutes le echo $code; à la fin de mon bout de code, histoire de vérifier qu'il n'ya pas de problèmes...
Code php :
1
2
3
4
5
$sql="SELECT codeCatCl FROM categCl WHERE libelcl='$type'";
$res=mysql_query($sql) or die(mysql_error());
$data=mysql_fetch_assoc($res);
$code=$data['codeCatCl'];
echo "code : ".$code;
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 15h54   #13
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
:S

code : MAGerreurColumn count doesn't match value count at row 1

le MAG étant le code du type du client (magasin détaillant) au moins il le reconnait, mais la je vois pas ce que c'est comme erreur, j'ai pas vu d'erreur de virgules ou autres.


EDIT:

erreurCannot add or update a child row: a foreign key constraint fails (`fringues/client`, CONSTRAINT `client_ibfk_1` FOREIGN KEY (`codeCatCl`) REFERENCES `categcl` (`codeCatCl`))

bon la je comprend plus lol
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 16h10   #14
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Citation:
Cannot add or update a child row: a foreign key constraint fails (`fringues/client`, CONSTRAINT `client_ibfk_1` FOREIGN KEY (`codeCatCl`) REFERENCES `categcl` (`codeCatCl`))
A priori, si je traduis bien, ça veut dire qu'on ne respecte pas le fait que codeCatCl doive être une clé étrangère...
Donc c'est qu'il doit y avoir une façon particulière d'utiliser ces ***** de clés étrangères Mais là, j'atteins mes limites...
Je vais chercher quand même

EDIT : il semblerait que l'utilisation des contraintes comme Foreign Key avec mysql dépende du type de la base de données (InnoDB) Avec quoi as-tu créé ta base de données ? et de quelle type est-elle ?
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2007, 16h17   #15
Invité de passage
 
Inscription : mai 2007
Messages : 26
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 26
Points : 2
Points : 2
Bon ça marche je sais pas comment j'ai laisser une case vide dans la table categcl et j'a plus de problème. C'est quand même étrange surtout que je peux pas modifier les champs codecatecl des tables clients et categcl.

Enfin le principal est que ça marche, merci pour ta patience en tout cas

ls 2 étaient crée en InnoDB
klue_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2007, 09h12   #16
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 686
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 686
Points : 5 451
Points : 5 451
Juste pour précision : d'après ce que j'ai pu comprendre, lorsque tu rentres une donnée dans un champ déclaré comme foreign key, le système vérifie s'il y a un champ de même valeur dans la tabe de référence...

Il y avait peut-être un problème de définition de tes clés étrangères...
En tout cas, si ça marche, c'est l'essentiel
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h40.


 
 
 
 
Partenaires

Hébergement Web