Probleme avec mon code php et ma base de donnée mysql
Fermé
roland999
Messages postés
32
Date d'inscription
dimanche 27 octobre 2013
Statut
Membre
Dernière intervention
18 février 2014
-
27 oct. 2013 à 12:47
roland999 Messages postés 32 Date d'inscription dimanche 27 octobre 2013 Statut Membre Dernière intervention 18 février 2014 - 4 nov. 2013 à 18:04
roland999 Messages postés 32 Date d'inscription dimanche 27 octobre 2013 Statut Membre Dernière intervention 18 février 2014 - 4 nov. 2013 à 18:04
A voir également:
- Probleme avec mon code php et ma base de donnée mysql
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Formules excel de base - Guide
1 réponse
Atropa
Messages postés
1940
Date d'inscription
mercredi 25 juin 2008
Statut
Membre
Dernière intervention
11 mai 2014
274
27 oct. 2013 à 14:36
27 oct. 2013 à 14:36
bonjour,
ton erreur viens de ta requête sql, le problème c'est que tu n'as pas posté la structure de ta table.
pour insérer des données c'est plus verbeux mais il vaut mieux spécifier les champs :
sans spécifier les champs que tu ne veux pas remplir comme celui en auto-incrément par exemple
sinon ce n'est pas terrible de faire des exit par tout parce que ton site plante complètement à la moindre erreur. ça reviens à faire un blue screen de windows pour un upload qui à foiré.
Les fonction mysql sont obsolètes il faut utiliser pdo : https://www.php.net/pdo
et un exemple de fonction obsolète : https://www.php.net/manual/fr/function.mysql-connect.php
PDO à beaucoup d'avantage comme par exemple rendre impossible les injections sql avec les requêtes préparée.
Dans l'ensemble ton formulaire est mal contrôlé. Déjà ca ne sert strictement à rien de passer une variable post dans une variable normale de cette facon :
ensuite tu ne vérifies pas si le champs est vide ou non du coup il suffit de laisser le formulaire vide pour faire des entrées inutiles dans la base de données.
à la limite ce code serait plus pertinent :
il faut aussi éviter le développement procédurale comme ça et créer des fonctions qui suivent quelques principes comme être simple, si un code se répète plus d'une fois il doit être remplacé par une fonction par exemple
puis utilisé :
de cette manière le code est beaucoup plus court et plus facile à maintenir
par exemple là si tu veux remplacer les isset par des !empty tu doit le faire pleins de fois alors que sous forme de fonction tu n'as qu'une fois à le faire.
Le mieux c'est de développer en objet, en utilisant au moins les classes comme espace de nom, c'est à dire que plutôt que de faire par exemple pleins de fonctions formulaire_test par exemple pour la petite fonction juste au dessus (si tu veux tester différentes chose dans différents domaine il peu vite y avoir beaucoup de fonctions avec des nom à rallonge et le risque de nommer 2 fonction de la même façon.
avec les classes ce problème ne se pose plus.
par exemple :
dans ce cas la fonction test s'appelle de cette façon :
Bon je m'arrête là, il y a trop de chose à dire et je ne peux pas faire un cours complet ici, le net en regorge.
J'espère que ça pourra t'aider à avancer.
ton erreur viens de ta requête sql, le problème c'est que tu n'as pas posté la structure de ta table.
pour insérer des données c'est plus verbeux mais il vaut mieux spécifier les champs :
INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);
sans spécifier les champs que tu ne veux pas remplir comme celui en auto-incrément par exemple
sinon ce n'est pas terrible de faire des exit par tout parce que ton site plante complètement à la moindre erreur. ça reviens à faire un blue screen de windows pour un upload qui à foiré.
Les fonction mysql sont obsolètes il faut utiliser pdo : https://www.php.net/pdo
et un exemple de fonction obsolète : https://www.php.net/manual/fr/function.mysql-connect.php
PDO à beaucoup d'avantage comme par exemple rendre impossible les injections sql avec les requêtes préparée.
Dans l'ensemble ton formulaire est mal contrôlé. Déjà ca ne sert strictement à rien de passer une variable post dans une variable normale de cette facon :
if(isset($_POST['mois'])) $mois=$_POST['mois'];
else $mois="";
ensuite tu ne vérifies pas si le champs est vide ou non du coup il suffit de laisser le formulaire vide pour faire des entrées inutiles dans la base de données.
à la limite ce code serait plus pertinent :
$mois = (!empty($_POST['mois']))? $_POST['mois'] : '';mais avec le défaut de ne pas vérifier que tout les champs ont été transmit.
il faut aussi éviter le développement procédurale comme ça et créer des fonctions qui suivent quelques principes comme être simple, si un code se répète plus d'une fois il doit être remplacé par une fonction par exemple
function test($post) {
return (!empty($post))? $post : '';
}
puis utilisé :
$mois = test($_POST['mois']);
de cette manière le code est beaucoup plus court et plus facile à maintenir
par exemple là si tu veux remplacer les isset par des !empty tu doit le faire pleins de fois alors que sous forme de fonction tu n'as qu'une fois à le faire.
Le mieux c'est de développer en objet, en utilisant au moins les classes comme espace de nom, c'est à dire que plutôt que de faire par exemple pleins de fonctions formulaire_test par exemple pour la petite fonction juste au dessus (si tu veux tester différentes chose dans différents domaine il peu vite y avoir beaucoup de fonctions avec des nom à rallonge et le risque de nommer 2 fonction de la même façon.
avec les classes ce problème ne se pose plus.
par exemple :
class formulaire {
public static funtion test($post) {
return (!empty($post))? $post : '';
}
public static function upload() {
...
}
}
dans ce cas la fonction test s'appelle de cette façon :
$mois = formulaire::test($_POST[''mois]);
Bon je m'arrête là, il y a trop de chose à dire et je ne peux pas faire un cours complet ici, le net en regorge.
J'espère que ça pourra t'aider à avancer.
27 oct. 2013 à 15:34
c'est pas obligatoire si il compte inserer tout les champs, mais dns ce cas il sera obligé de fournir tout les données et remplcer ceux qu'il souhaite pas inserer avec ''
mysql_error columns count doesn't mutch signifie qu'il a oblié un champ lors de l'insertion,
27 oct. 2013 à 17:10
4 nov. 2013 à 18:04