différente action avec INSERT/UPDATE

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : différente action avec INSERT/UPDATE

par zeus » 27 avr. 2006, 16:52

INSERT ? :?

par freepopo » 27 avr. 2006, 16:18

Finalement c est bon, vu qu on reste sur le meme serveur on peut faire ses requetes comme je l ai precedemment écrit, c est cool.

Question subsidiare : y a t il moyen dajouter des données a une table sans changer le contenu qui y est deja ?

par zeus » 27 avr. 2006, 15:49

normalement, tu doit pouvoir spécifier le nom de la base. Sinon, tu peut te connecter sur les 2 bases à la fois (fait bien attention au 4eme argument de mysql_connect() )

par Xanax_Now » 27 avr. 2006, 15:41

Petit Update :

Code : Tout sélectionner

UPDATE BDD_NEW.TABLE_NEW SET CHAMP_NEW = $var1;
Je cours m'inscrire, c'est chiant de pas pouvoir updater.

par Xanax_Now » 27 avr. 2006, 15:36

Oui, c'est sa le probleme, la je suis en train de galérer car j'essaye maintenant d'insérer les variables sauvegardées dans ma table a chaque passage dans ma boucle.

Je pense qu'il faut utiliser ce genre de requête :
UPDATE TABLE_NEW SET CHAMP_NEW = $var1;

Mais peut on passer dans une autre BDD avec ce genre de requête ?
Du genre :
UPDATE BDD_NEW.TABLE_NEW SET CHAMP_NEW = TABLE_OLD.CHAMP_OLD;

Ou alors il faut que me deconnecte de l'autre base et que je me connecte sur la BDD_NEW et ceci a chaque passage dans la boucle pour insérer donc les données récupérés de la BDD_OLD et les balancer dans l'autre base ?

par zeus » 27 avr. 2006, 15:29

Tu ne fait aucune modification dans ton code :-k

par Invité » 27 avr. 2006, 15:12

Apres un brainstrorming intense, je crois avoir trouvé le truc :
$query_select_all="SELECT * from objet";
$resultat_select_all=mysql_query($query_select_all);


echo 'debut de la reuperation des données de la base de données ougarit_excel';

while ( $ligne = mysql_fetch_array($resultat_select_all) )
{
  $num_inventaire = $ligne['NI'];
}
Merci bien !

par zeus » 27 avr. 2006, 14:52

:? pas cool

Donc, pour te donner la méthodologie :
1/ tu fait un SELECT sur tes données
2/ tu parcours ces résultats en faisant les traitements et en construisant une requete INSERT/UPDATE
3/ tu executes la requete INSERT/UPDATE

par Xanax_Now » 27 avr. 2006, 14:49

Il semblerais que je me sois carrément chié dessus...

Il faut en fait que je sauvegarde chaque ligne de ma table dans des variables PHP et qu'ensuite je fasse des traitements et des vérifications dessus.

Ensuite, je fais mon insert...

Et la je ne sais pas du tout mais alors pas du tout comment qu'on fait...

par zeus » 27 avr. 2006, 14:42

Est-ce qu'on peut dire que ton problème est [RESOLU] ? ;)

par Invité » 27 avr. 2006, 14:22

Merci Zeus !

par zeus » 27 avr. 2006, 14:18

Sans te garantir le résultat, je pense que la fonction CONCAT arrive à gérer les champs NULL :-k

par Xanax_Now » 27 avr. 2006, 14:14

Merci, je ne connaissais pas la fonction CONCAT, c'est vrai que c'est assez pratique.

En ce qui concerne les champs a NULL, ce que je voulais dire par la c'est si je fait par exemple :
CONCAT (champ1, champ2, champ3) et qu'a chaque ligne, il y a deux champs a NULL et un TEXT, est-ce que MySQL va arriver a concaténer ces 3 champs ?

En fait il faudrais que je teste a chaque ligne quel champ n'est pas a NULL mais comme je fais tout dans un seul INSERT, je ne peux pas donc tout concaténer me semple la meilleur solution.

Mille merci pour l'aide apportée !

par zeus » 27 avr. 2006, 14:08

Quand tu fait une requete de ce style là :

Code : Tout sélectionner

INSERT INTO ch1, ch2 SELECT val1, val2 FROM table
Tu indique au SGBD qu'il faut qu'il mette val1 dans ch1 et val2 dans ch2

Ensuite, val1 et val2 peuvent être une conbinaison de champs

Par exemple (j'espère que les noms de champs seront parlant)

Code : Tout sélectionner

INSERT INTO (id_contact, nom_complet) SELECT id_personne, CONCAT(nom_personne, prenom_personne) FROM personne
Si tu veux qu'un champs reste à null, il suffit de ne pas le donner dans la liste des champs à remplir du INSERT (à condition, bien sûr, qu'il ne soit pas obligatoire)

NB : tout ce que je viens de dire est possible pour un update

par Xanax_Now » 27 avr. 2006, 14:03

Derniere chose : tu parles de concaténer plusieurs champs dans un seul et c'est exactement ce dont j'ai besoin !!
Tout d'abord, sachant que j'ai 2 champs a NULL et 1 champ remplit a chaque fois, est-ce-que la concaténation marchera bien ou faut-il que je remplace le NULL par rien du tout ("").

Ensuite, avec quelle requete puis-je faire cela ?

J'imagine que cette requete va concaténer dans le champs1_bis :
INSERT
INTO ougarit.objet (champ1, champ2, champ3)
SELECT champ1_bis
FROM ougarit_excel.objet

Mais quid quand il y plusieurs champs, mysql ne sait pas quel champs concaténer et ou :
INSERT
INTO ougarit.objet (champ1, champ2, champ3)
SELECT champ1_bis, champ2_bis
FROM ougarit_excel.objet

La, a priori, il va copier champ1 dans champ1_bis et concaténer champ2 ainsi que champ3 dans champ2_bis non ?

Merci beaucoup pour toute aide apportée.