[Php/MySql] Insert et Update
Résolu/Fermé
ZIG1
wagga - 30 mai 2008 à 11:31
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
wagga - 30 mai 2008 à 11:31
A voir également:
- Php insert or update
- Insert or update mysql php - Meilleures réponses
- Php mysql insert or update - Meilleures réponses
- [Php/MySql] Insert et Update ✓ - Forum - PHP
- [PHP - MySQL] INSERT INTO et UPDATE ? Aide ✓ - Forum - PHP
- Problème Php/Mysql "Insert into" ✓ - Forum - PHP
- Aide requette php/mysql insert into ✓ - Forum - PHP
- [PHP + MySQL] Problème d'UPDATE ✓ - Forum - PHP
17 réponses
kilian
28 nov. 2005 à 16:01
- Messages postés
- 8731
- Date d'inscription
- vendredi 19 septembre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 août 2016
28 nov. 2005 à 16:01
Tu ne fais que définir des fonctions (tu montres à php leur architecture, leur rôle...) mais tu ne les appelles pas (tu ne demandes pas à Php de les executer).
Ca devrait être comme ça en gros:
Sachant qu'en plus pour ta deuxième fonction tu avait utiliser des noms de variables qui n'existent pas dans la portée de la fonction.
Ex: Une fonction qui additionne de 2, avec deux variable globales $a et $b.
$a est le nombre à additionner, $b est le résultat:
Si j'avais fait :
$b sera égal à deux. Car $a n'existe pas dans la fonction plus_deux(), $a est une variable globale. Comme il ne la trouve pas dans sa portée, il remplacera $a par 0.
Ca devrait être comme ça en gros:
function insertion($nom,$email,$service) { mysql_query("INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '$email', '$service', '$nom')"); } function modification($email, $service, $nom) { mysql_query("UPDATE bd SET e-mail = $email, service = $service, nom = $nom WHERE id = $id"); } if ($tip == 'ins' && $nom != ''){ insertion($nom,$email,$service); } elseif ($tip == 'mod' && $nom != ''){ modification($email,$service,$nom); }
Sachant qu'en plus pour ta deuxième fonction tu avait utiliser des noms de variables qui n'existent pas dans la portée de la fonction.
Ex: Une fonction qui additionne de 2, avec deux variable globales $a et $b.
$a est le nombre à additionner, $b est le résultat:
function plus_deux($nombre){ return $nombre+2; } $a=3; $b=plus_deux($a); // $b sera égal à 5
Si j'avais fait :
$a=3; function plus_deux(){ return $a+2; } $b=plus_deux(); // $b sera égal à 2
$b sera égal à deux. Car $a n'existe pas dans la fonction plus_deux(), $a est une variable globale. Comme il ne la trouve pas dans sa portée, il remplacera $a par 0.
B@|-|@N
28 nov. 2005 à 16:34
- Messages postés
- 386
- Date d'inscription
- jeudi 15 janvier 2004
- Statut
- Membre
- Dernière intervention
- 7 décembre 2007
28 nov. 2005 à 16:34
function insertion($nom,$email,$service) { mysql_query(" INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '".$email."', '".$service."', '".$nom."') "); } function modification($nom,$email,$service,$id) { mysql_query(" UPDATE bd SET e-mail='".$email."', service= '".$service."', nom= '".$nom."' WHERE id='".$id."' "); } if ($tip== 'ins' && !empty($nom)){ insertion($nom,$email,$service); } elseif ($tip== 'mod' && !empty($nom)){ modification($email,$service,$nom,$id); }
J'ai juste changer un peu le code au niveau syntaxe dans les requêtes sql. SInon tu as bien ouvert la connexion a la database avant cette portion de code ?
Bahan
ZIG1
28 nov. 2005 à 16:37
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:37
ca ne fonctione pas non plus ...
Et ca ne génére pas d'erreur non plus :(
Je ne comprend pas :(
Et ca ne génére pas d'erreur non plus :(
Je ne comprend pas :(
kilian
28 nov. 2005 à 16:39
- Messages postés
- 8731
- Date d'inscription
- vendredi 19 septembre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 août 2016
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:39
C'est à dire? Tu as essayé avec quoi? PhpMyAdmin? Il t'a retourné un message?
ZIG1
28 nov. 2005 à 16:42
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:42
Je l'ai entrer dans mon code, si je ne fait sous phpMyAdmin j'ai des erreurs a cause des variables ...
kilian
28 nov. 2005 à 16:44
- Messages postés
- 8731
- Date d'inscription
- vendredi 19 septembre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 août 2016
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:44
Oui, mais si tu entres ce qui est affiché sur la page:
dans phpmyadmin.
Là ça donne quoi?
INSERT INTO bd (id, e-mail, service, nom) VALUES ('', 'tttttttttttttt', 'trett', 'tet')
dans phpmyadmin.
Là ça donne quoi?
ZIG1
28 nov. 2005 à 16:45
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:45
Même unique la requete insert toute seule sans variable ca ne passe pas
#1064 - Erreur de syntaxe pr�s de '-mail, service, nom)
VALUES ('', "' � la ligne 2
#1064 - Erreur de syntaxe pr�s de '-mail, service, nom)
VALUES ('', "' � la ligne 2
kilian
28 nov. 2005 à 16:04
- Messages postés
- 8731
- Date d'inscription
- vendredi 19 septembre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 août 2016
28 nov. 2005 à 16:04
D'ailleurs c'est bizzare que tu fasses de cette manière:
Tu es sûr que c'est correct? J'avais jamais vu comme ça.
if (bidule): //machin_chose endif;
Tu es sûr que c'est correct? J'avais jamais vu comme ça.
ZIG1
28 nov. 2005 à 16:09
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:09
en fait c'est parce que je fait des include et tous mes traitement sont dans le header.inc
Donc comme je fait l'insertion et la modification de données ....
Mais je passe tout de même dans les fonction avec ton système mais ca ne fait rien dans la base
Donc comme je fait l'insertion et la modification de données ....
Mais je passe tout de même dans les fonction avec ton système mais ca ne fait rien dans la base
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
kilian
28 nov. 2005 à 16:16
- Messages postés
- 8731
- Date d'inscription
- vendredi 19 septembre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 août 2016
28 nov. 2005 à 16:16
Est ce que tu es connecté?
Qu'est ce que ça donne si tu fais, tout en bas:
Qu'est ce que ça donne si tu fais, tout en bas:
echo "$email<br>$nom<br>$service";
ZIG1
28 nov. 2005 à 16:28
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:28
Ca montre les données ...
Oui, je suis connectée en haut de chaque page aussi dans le header.inc
Oui, je suis connectée en haut de chaque page aussi dans le header.inc
kilian
28 nov. 2005 à 16:30
- Messages postés
- 8731
- Date d'inscription
- vendredi 19 septembre 2003
- Statut
- Modérateur
- Dernière intervention
- 20 août 2016
28 nov. 2005 à 16:30
Ok maintenant remplace ta fonction insertion par:
Puis execute la requête affichée sur la page en passant par PhpMyAdmin ou ce que tu veux, pourvu que tu puisses voir d'ou vient l'erreur.
function insertion($nom,$email,$service) { mysql_query("INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '$email', '$service', '$nom')"); echo "INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '$email', '$service', '$nom')"; }
Puis execute la requête affichée sur la page en passant par PhpMyAdmin ou ce que tu veux, pourvu que tu puisses voir d'ou vient l'erreur.
ZIG1
28 nov. 2005 à 16:35
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:35
Je n'ai toujours aucune erreur
et ca renvoie
INSERT INTO bd (id, e-mail, service, nom) VALUES ('', 'tttttttttttttt', 'trett', 'tet')
Il n'y a pas d'erreur dans les log ...
et ca renvoie
INSERT INTO bd (id, e-mail, service, nom) VALUES ('', 'tttttttttttttt', 'trett', 'tet')
Il n'y a pas d'erreur dans les log ...
B@|-|@N
28 nov. 2005 à 16:51
- Messages postés
- 386
- Date d'inscription
- jeudi 15 janvier 2004
- Statut
- Membre
- Dernière intervention
- 7 décembre 2007
28 nov. 2005 à 16:51
Bon voilà une fonction que j'ai créé en php pour se conencter tranquillou a ta base :
Tu places ça dans une fichier .inc et tu fais un include pour pouvoir utiliser la fonction. Puis dans ta page où tu fais ta fonction :
Sachant qu'il vaut mieux quand même eviter certains caracteres coimme le "-" pour un nom de champ.
Bahan
/************************************** * Affichage des erreurs **************************************/ function print_erreur($erreur){ print("<CENTER><FONT color=red>".$erreur."</FONT></CENTER>"); } /************************************** * Connexion a une database **************************************/ function faire_requete($requete,$bdd){ $host="le nom d'hote"; $user="le nom du user"; $pass="le mot de passe"; if(!($id=mysql_connect($host,$user,$pass))){ print_erreur("Erreur de connexion à ".$host." pour l'utilisateur ".$user."."); exit(); } if(!(mysql_select_db($bdd,$id))){ print_erreur("Erreur ".mysql_errno($id)." : ".mysql_error($id)." : Erreur de sélection de ".$bdd."."); exit(); } if(!($result=mysql_query($requete,$id))){ print_erreur("Erreur ".mysql_errno($id)." : ".mysql_error($id).".<BR><BR>"); print_erreur("<DIV align=left>Votre requête est la suivante : <BR>".$requete."</DIV>"); exit(); } return $result; if(!(mysql_free_result($result))){ print_erreur("Erreur ".mysql_errno($id)." : ".mysql_error($id)." : Libération de la mémoire utilisée pour la requête ".$requete); exit(); } if(!(mysql_close($id))){ print_erreur("Erreur ".mysql_errno($id)." : ".mysql_error($id)." : Fermeture de la connexion<BR>"); exit(); } }
Tu places ça dans une fichier .inc et tu fais un include pour pouvoir utiliser la fonction. Puis dans ta page où tu fais ta fonction :
if ($tip== 'ins' && !empty($nom)){ $res_ins=faire_requete(" INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '".$email."', '".$service."', '".$nom."') ","nom_de_ta_base"); } elseif ($tip== 'mod' && !empty($nom)){ $res_up=faire_requete(" UPDATE bd SET e-mail='".$email."', service= '".$service."', nom= '".$nom."' WHERE id='".$id."' ","nom_de_ta_base"); }
Sachant qu'il vaut mieux quand même eviter certains caracteres coimme le "-" pour un nom de champ.
Bahan
ZIG1
28 nov. 2005 à 17:03
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 17:03
L'insertion fonctionne
Par contre je n'arrive plus a afficher ma liste qui me permet de modifier ...
Il dit ...
Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in d:\bd1\contenu.inc on line 7
Warning: mysql_query(): A link to the server could not be established in d:\bd1\contenu.inc on line 7
Warning: Missing argument 2 for faire_requete() in d:\bd1\head.inc on line 12
Erreur 1046 : Aucune base n'a été sélectionnée : Erreur de sélection de .
J'ai modifier mes requête pour être "compatible" en :
$QUERY = mysql_query("SELECT * FROM bd");
$question = faire_requete("$QUERY, bd1");
$RESULTat = mysql_num_rows($question);
Mais je ne suis pas sure que ce soit une bonne idée ...
Par contre je n'arrive plus a afficher ma liste qui me permet de modifier ...
Il dit ...
Warning: mysql_query(): Accès refusé pour l'utilisateur: 'ODBC'@'@localhost' (mot de passe: NON) in d:\bd1\contenu.inc on line 7
Warning: mysql_query(): A link to the server could not be established in d:\bd1\contenu.inc on line 7
Warning: Missing argument 2 for faire_requete() in d:\bd1\head.inc on line 12
Erreur 1046 : Aucune base n'a été sélectionnée : Erreur de sélection de .
J'ai modifier mes requête pour être "compatible" en :
$QUERY = mysql_query("SELECT * FROM bd");
$question = faire_requete("$QUERY, bd1");
$RESULTat = mysql_num_rows($question);
Mais je ne suis pas sure que ce soit une bonne idée ...
B@|-|@N
28 nov. 2005 à 17:07
- Messages postés
- 386
- Date d'inscription
- jeudi 15 janvier 2004
- Statut
- Membre
- Dernière intervention
- 7 décembre 2007
28 nov. 2005 à 17:07
$QUERY = mysql_query("SELECT * FROM bd"); $question = faire_requete("$QUERY, bd1"); $RESULTat = mysql_num_rows($question);
Non ^_^ ce n'est pas bon.
En fait le premier argument de ma fonction faire_requete() est une chaine de caractere qui est la requete.
Quand tu fais un mysql_query tu executes la requete.
Donc la bonne syntaxe :
$resultat_de_ta_requete=faire_requete("SELECT * FROM bd","bd1");
Fais attention aux " ^_^.
Bahan
ZIG1
28 nov. 2005 à 17:07
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 17:07
J'ai trouvé ....
Et Merci la modification fonctionne aussi
Merci à tous ...
Je peux afficher, inserer et modifier grâce à vous :D
Voilà un lundi qui termine bien :D
Et Merci la modification fonctionne aussi
Merci à tous ...
Je peux afficher, inserer et modifier grâce à vous :D
Voilà un lundi qui termine bien :D
ZIG1
28 nov. 2005 à 17:08
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 17:08
Il me faut du temps mais j'ai compris maintenant ... la fonction :D
Salut à tous!
J'ai un problème avec la requete sql INSERT... Voilà: la fonction marche comme elle le doit seulement je voudrais améliorer cela.
En fait je fais un générateur de news... Lorsque je supprime une news et que j'en crée une nouvelle, cette dernière se remet à la place de la supprimée même si j'ai pris soin de changer les identifiants de messages. Alors ça ne pose pas de problèmes si l'on supprime la dernière news mais si c'est une ancienne ça empêche l'affichage des news dans le bon ordre.
Donc ma question est la suivante: existe-t-il une fonction sql qui insère A LA FIN des autres insertions et pas en plein milieu là où il y a de la place?
Merci d'avance pour votre aide.
J'ai un problème avec la requete sql INSERT... Voilà: la fonction marche comme elle le doit seulement je voudrais améliorer cela.
En fait je fais un générateur de news... Lorsque je supprime une news et que j'en crée une nouvelle, cette dernière se remet à la place de la supprimée même si j'ai pris soin de changer les identifiants de messages. Alors ça ne pose pas de problèmes si l'on supprime la dernière news mais si c'est une ancienne ça empêche l'affichage des news dans le bon ordre.
Donc ma question est la suivante: existe-t-il une fonction sql qui insère A LA FIN des autres insertions et pas en plein milieu là où il y a de la place?
Merci d'avance pour votre aide.
Camthalion, >
Autant simplement faire UPDATE sur l'ancienne news. Cela remplacera tout comme il faut. ^^
Autant simplement faire UPDATE sur l'ancienne news. Cela remplacera tout comme il faut. ^^
ca vient du fait que tu n'utilises pas un cham id_news dans ta table avec l'extra : auto-increment !!!
comme ca, à chaque nouvelle insertion il créer une nouvelle ligne dans ta base ;)
comme ca, à chaque nouvelle insertion il créer une nouvelle ligne dans ta base ;)
ZIG1
28 nov. 2005 à 16:07
- Messages postés
- 1709
- Date d'inscription
- vendredi 7 juillet 2000
- Statut
- Membre
- Dernière intervention
- 24 mars 2009
28 nov. 2005 à 16:07
J'ai fait comme tu as dit ... mais le résultat est le même ...
function insertion($nom,$email,$service)
{
mysql_query("INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '$email', '$service', '$nom')");
}
function modification($nom,$email,$service,$id)
{
mysql_query("UPDATE bd SET e-mail = $email, service = $service, nom = $nom WHERE id = $id");
}
if ($tip == 'ins' && $nom != ''):
insertion($nom,$email,$service);
elseif ($tip == 'mod' && $nom != ''):
modification($email,$service,$nom,$id);
endif;
Je ne comprend pas ... ca ne fait rien
function insertion($nom,$email,$service)
{
mysql_query("INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '$email', '$service', '$nom')");
}
function modification($nom,$email,$service,$id)
{
mysql_query("UPDATE bd SET e-mail = $email, service = $service, nom = $nom WHERE id = $id");
}
if ($tip == 'ins' && $nom != ''):
insertion($nom,$email,$service);
elseif ($tip == 'mod' && $nom != ''):
modification($email,$service,$nom,$id);
endif;
Je ne comprend pas ... ca ne fait rien