Probléme INSERT INTO
jesonlemaitre
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je suis en terminal STMG option SIG et j'ai un projet a valider pour le bac. Mon projet et de permettre a une entreprise de livraison rapide de prendre les commandes sur leur site. J'utilise EASY PHP avec phpmyadmin pour ma base de données qui se compose de 2 tables (client, commande) les programmes que j'ai utilisés proviennent en parties des cours de cette années alors voila
Ce bout de code permet d'inscrire un client au site pour qu'il puisse par la suite prendre sa commande.
Le problème c'est que quand je lance ce programme sur Easy PHP, voici ce qui s'affiche.
Erreur sql !
Duplicata du champ '0' pour la clef 'PRIMARY'
Comment faire pour que ca marche
je suis en terminal STMG option SIG et j'ai un projet a valider pour le bac. Mon projet et de permettre a une entreprise de livraison rapide de prendre les commandes sur leur site. J'utilise EASY PHP avec phpmyadmin pour ma base de données qui se compose de 2 tables (client, commande) les programmes que j'ai utilisés proviennent en parties des cours de cette années alors voila
<?xml version="1.0" encoding="UTF-8"?>
<!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">
<head>
<title>Etudiants</title>
<link type="text/css" rel="stylesheet" href="style.css" />
</head>
<body>
<table>
<?php
// scripts de connexion au serveur et à la base de données
require ("connexion.php");
require ("info.php");
//appeler la fonction de connexion au serveur et à la base
connexion ($host, $user, $password, $base);
//sélectionner le contenu de la table etudiant en SQL
$rq="INSERT INTO client(numclient,adresse,ville,cp,pays,numtel,mail,ndc,mdp)
VALUES ('numclient','adresse','ville','cp','pays','numtel','mail','ndc','mdp')";
$rq = mysql_query($rq) or die ('Erreur sql !<br />'.$rq.'<br />'.mysql_error());
$nbchamps = mysql_num_fields($rq);
$ligne = mysql_fetch_array($rq);
if (mysql_num_rows($rq)>0)
{
// une boucle est faite pour lister les résultats
while ($ligne != false)
// Avec while la boucle s’exécute pour la première ligne du tableau, l’extrait et ainsi de suite Pour chaque ligne du tableau les balises <tr> </tr> sont utilisées et pour chaque cellule d’une ligne : <td></td>.
{
$i = 0;
while($i<$nbchamps)
{ echo $ligne[$i]."/";
$i++;}
echo"<br />";
$ligne = mysql_fetch_array($rq);
}
}
?>
</body>
</html>
Ce bout de code permet d'inscrire un client au site pour qu'il puisse par la suite prendre sa commande.
Le problème c'est que quand je lance ce programme sur Easy PHP, voici ce qui s'affiche.
Erreur sql !
Duplicata du champ '0' pour la clef 'PRIMARY'
Comment faire pour que ca marche
A voir également:
- Probléme INSERT INTO
- Touche insert - Guide
- Disk boot failure insert system disk and press enter - Guide
- Insert boot media in selected boot device and press a key ✓ - Forum Windows 10
- Activer touche insert sur ASUS UX32A - Forum Clavier
- Monitor will go into standby mode traduction français ✓ - Forum Matériel & Système
1 réponse
Bonjour !
Si des données sont déjà présentes en base, l'insertion d'une donnée ayant la même clé primaire qu'une autre donnée de la table sera refusée par le Système de Gestion de Bases de Données (SGBD)... et y aura raison ^^
Après, c'est du php, et je ne connais pas ce langage...
Première solution :
- Drop table puis insertion des données. C'est sale au possible.
Deuxième solution :
- Définir la clé primaire comme clé incrémentale, de sorte à ajouter les clients sans définir à la mano leur id. Puis retirer la colonne num-client du fichier de données (et du code ^^) avant l'insertion, de sorte de ne pas marcher sur les pieds de la clé primaire.
https://www.sqlfacile.com/apprendre_bases_de_donnees/champ_sql_auto_incremente
Bon courage !
Luc
Les 3 plus grands mensonges du dev : 1. La doc ? On la fera plus tard... 2. Le programme a été testé et ne comporte aucun bug... 3. Les spécifications techniques arrivent...
Si des données sont déjà présentes en base, l'insertion d'une donnée ayant la même clé primaire qu'une autre donnée de la table sera refusée par le Système de Gestion de Bases de Données (SGBD)... et y aura raison ^^
Après, c'est du php, et je ne connais pas ce langage...
Première solution :
- Drop table puis insertion des données. C'est sale au possible.
Deuxième solution :
- Définir la clé primaire comme clé incrémentale, de sorte à ajouter les clients sans définir à la mano leur id. Puis retirer la colonne num-client du fichier de données (et du code ^^) avant l'insertion, de sorte de ne pas marcher sur les pieds de la clé primaire.
https://www.sqlfacile.com/apprendre_bases_de_donnees/champ_sql_auto_incremente
Bon courage !
Luc
Les 3 plus grands mensonges du dev : 1. La doc ? On la fera plus tard... 2. Le programme a été testé et ne comporte aucun bug... 3. Les spécifications techniques arrivent...
la deuxième solution sera la bonne.
bonne soirée
@Jeson, Tu utilises l'ancienne extension MYSQL considérée comme obsolète.
Je t'invite à lire ceci : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top
Puis à passer rapidement à mysqli ou à la PDO.
Pour ce qui est du problème, il suffira juste de mettre ta clé primaire en AUTO-INCREMENT. rien de plus.