Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Mots clés Nom d'utilisateur
Messages sans réponse

[Php/MySql] Insert et Update

ZIG1, le lundi 28 novembre 2005 à 15:50:48 
 Signaler ce message aux modérateurs

Bonjour encore ...

Cette fois ci j'ai fais gaffe au nom de ma base ... il ne devrait pas avoir d'erreur de ce coté là ... parce que je n'ai pas d'erreur ...

Par contre j'ai mes requête d'insert et d'update comme suit:

if ($tip == 'ins' && $nom != ''):
function insertion($nom,$email,$service)
{
mysql_query("INSERT INTO bd (id, e-mail, service, nom) VALUES ('', '$email', '$service', '$nom')");
}

elseif ($tip == 'mod' && $nom != ''):
function modification()
{
mysql_query("UPDATE bd SET e-mail = $email, service = $service, nom = $nom WHERE id = $id");
}
endif;

Mais il ne se passe rien ... je suis en Get, il reçoit bien les données ... mais c'est tout comme si ca n'envoyait rien à MySql ...
Je me demande si il n'y aurait pas un pb de configuration ... est ce possible ?
Ou est ce mon code qui n'est pas bon ??
Je suis sur EasyPhp, la dernière version

Merci d'avance pour votre aide ..:::ZIG1:::..

2

kilian, le lundi 28 novembre 2005 à 16:01:32

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:

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.

Répondre à kilian

3

kilian, le lundi 28 novembre 2005 à 16:04:17

D'ailleurs c'est bizzare que tu fasses de cette manière:

if (bidule):
           //machin_chose
endif;


Tu es sûr que c'est correct? J'avais jamais vu comme ça.

Répondre à kilian

4

ZIG1, le lundi 28 novembre 2005 à 16:07:04

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 ..:::ZIG1:::..

Répondre à ZIG1

5

ZIG1, le lundi 28 novembre 2005 à 16:09:14

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
..:::ZIG1:::..

Répondre à ZIG1

6

kilian, le lundi 28 novembre 2005 à 16:16:57

Est ce que tu es connecté?

Qu'est ce que ça donne si tu fais, tout en bas:

echo "$email<br>$nom<br>$service";

Répondre à kilian

7

ZIG1, le lundi 28 novembre 2005 à 16:28:34

Ca montre les données ...

Oui, je suis connectée en haut de chaque page aussi dans le header.inc

..:::ZIG1:::..

Répondre à ZIG1

8

kilian, le lundi 28 novembre 2005 à 16:30:54

Ok maintenant remplace ta fonction insertion par:

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.

Répondre à kilian

9

B@|-|@N, le lundi 28 novembre 2005 à 16:34:56

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 Close the world.||.txen eht nepO

Répondre à B@|-|@N

11

ZIG1, le lundi 28 novembre 2005 à 16:37:58

Ca ne fonctione pas non plus ...
Et ca ne génére pas d'erreur non plus :(


Je ne comprend pas :( ..:::ZIG1:::..

Répondre à ZIG1

12

kilian, le lundi 28 novembre 2005 à 16:39:16

C'est à dire? Tu as essayé avec quoi? PhpMyAdmin? Il t'a retourné un message?

Répondre à kilian

13

ZIG1, le lundi 28 novembre 2005 à 16:42:20

Je l'ai entrer dans mon code, si je ne fait sous phpMyAdmin j'ai des erreurs a cause des variables ... ..:::ZIG1:::..

Répondre à ZIG1

14

kilian, le lundi 28 novembre 2005 à 16:44:54

Oui, mais si tu entres ce qui est affiché sur la page:

INSERT INTO bd (id, e-mail, service, nom) VALUES ('', 'tttttttttttttt', 'trett', 'tet')

dans phpmyadmin.

Là ça donne quoi?

Répondre à kilian

15

ZIG1, le lundi 28 novembre 2005 à 16:45: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 ..:::ZIG1:::..

Répondre à ZIG1

16

ZIG1, le lundi 28 novembre 2005 à 16:46:38

#1064 - Erreur de syntaxe pr�s de '-mail, service, nom) VALUES ('', 'tttttttttttttt', 'trett', 'tet' � la ligne 1 ..:::ZIG1:::..

Répondre à ZIG1

17

ZIG1, le lundi 28 novembre 2005 à 16:51:16

J'ai renommer le champs e-mail par email ...
Du coups y a plus d'erreur sous PhpMyAdmin Mais ca n'a pas résolut le problème depuis mon "application" ..:::ZIG1:::..

Répondre à ZIG1

10

ZIG1, le lundi 28 novembre 2005 à 16:35:43

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 ...


..:::ZIG1:::..

Répondre à ZIG1

18

B@|-|@N, le lundi 28 novembre 2005 à 16:51:28

Bon voilà une fonction que j'ai créé en php pour se conencter tranquillou a ta base :

/**************************************
*   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 Close the world.||.txen eht nepO

Répondre à B@|-|@N

19

ZIG1, le lundi 28 novembre 2005 à 17:03:36

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 ... ..:::ZIG1:::..

Répondre à ZIG1

20

B@|-|@N, le lundi 28 novembre 2005 à 17:07:23

$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 Close the world.||.txen eht nepO

Répondre à B@|-|@N

ZIG1, le lundi 28 novembre 2005 à 17:07:32

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 ..:::ZIG1:::..

Répondre à ZIG1

21

ZIG1, le lundi 28 novembre 2005 à 17:08:57

Il me faut du temps mais j'ai compris maintenant ... la fonction :D ..:::ZIG1:::..

Répondre à ZIG1

22

Camthalion, le mercredi 7 février 2007 à 17:00:44

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.

Répondre à Camthalion

23

Artis, le vendredi 31 août 2007 à 04:53:47

Camthalion, >
Autant simplement faire UPDATE sur l'ancienne news. Cela remplacera tout comme il faut. ^^

Configuration: Linux
Firefox 2.0.0.6

Répondre à Artis

24

 wagga, le vendredi 30 mai 2008 à 11:31:47

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 ;)

Répondre à wagga
PHP mysql_query INSERT/UPDATE valeur NULL Bonjour, j'ai un petit soucis avec un script PHP qui utilise mysql_query pour fair un INSERT/UPDATE dans une base MySQL. Je cherche à inserer une valeur NULL et je n'y parviens pas. Y a-t-il une astuce ? Dasn l'exemple ci-dessous je test si ma... www.commentcamarche.net/forum/affich-3340006-php-mysql-query-insert-update-valeur-null
[access] [php] probléme INSERT/UPDATE Bonjour tout le monde et sutout toi, là, qui posséde la solution Probléme simple (comme toujours) : EasyPHP sous windows 2000, pour insérer/modifier des données dans access (j'ai pas eu le choix). Donc tout se passe bien sauf quand on insére des... www.commentcamarche.net/forum/affich-2757898-access-php-probleme-insert-update
[PHP/MySql]: foreach et insert into Bonjour, j'ai posté il y'a quelques jours concernant le même script, mais le problème étant à un autre niveau, je poste un nouveau message. Je tente d'insérer 3 éléments dans une table MySql, mais les données ne sont pas insérées; il n'ya aucune... www.commentcamarche.net/forum/affich-3341518-php-mysql-foreach-et-insert-into
MySQL - Update avec jointureSi vous avez deux tables possédant une clé commune (dans le cas ci-dessous il s'agit de la clé primaire "id"), il est possible de mettre à jour un champ d'une des deux tables (update_table) grâce aux données de la seconde (reference_table) à l'aide... www.commentcamarche.net/faq/sujet-10426-mysql-update-avec-jointure
Mysql: INSERT IF NOT EXISTS (Résolu)Bonjour, J'ai mysql version 2.9.1.1, phpmyadmin, php5 et j'ai besoin d'insérer une lignes de deux valeurs dans une table sachant que ces deux valeurs n'existent pas dans la même ligne, INSERT INTO `listedemachoix` ( `index_listechoix` , `index_gens` ,... www.commentcamarche.net/forum/affich-4770322-mysql-insert-if-not-exists
Php mysql (login - mot de passe)Bonjour tout le monde , voila pour une partie d'un site web , j'esseye de donner acces a l'utilisateur par un login et mot de passe, pour cela j ai cree une table user,j'y insere un login et mot de passe(easyphp,php mysql ) mais impossible de se... www.commentcamarche.net/forum/affich-3260396-php-mysql-login-mot-de-passe
[PHP/MySQL] Valeur d'un auto increment (Résolu)Hello !! J'ai une page où j'effectue une requête telle que celle ci-dessous : $req=mysql_query("INSERT INTO table VALUES('',$var1,$var2)"); Le premier champ, je ne lui donne pas de valeur parce qu'il est en auto-increment. Or, plus loin dans ma page,... www.commentcamarche.net/forum/affich-145351-php-mysql-valeur-d-un-auto-increment