[mysql+php] Insert....select et modifications au passage

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par fraid26, 18 Août 2009.

  1. fraid26
    fraid26 WRInaute discret
    Inscrit:
    3 Octobre 2008
    Messages:
    123
    J'aime reçus:
    0
    Bonsoir tout le monde.

    Voila déjà quelques heures que je cherche une solution à mon problème mais je ne trouve pas.

    Je veux proposer aux utilisateurs la possibilité de copier un enregistrement d'une table.
    Cependant je dois changer deux paramètres au passage...

    Code:
    $re = mysql_query("SELECT id_facture FROM n_factures where id_societe='$id_societe' and scenario='$scenario'") or die(mysql_error());
    while ($ro = mysql_fetch_array($re, MYSQL_NUM))
    {
    $id_facture=$ro[0];
    mysql_query("INSERT INTO n_factures ??modification du nouveau id_facture='$new_id_facture' et scenario='$new_scenario'?? SELECT ???? FROM n_factures WHERE id_facture='$id_facture'");
    } 
    mais je ne connais pas du tout la syntaxe, et les recherches ne donnent rien de pertinent...

    merci !

    Fred
     
  2. jcaron
    jcaron WRInaute accro
    Inscrit:
    13 Février 2004
    Messages:
    2 579
    J'aime reçus:
    0
    INSERT INTO table (nom_colonne_1,nom_colonne_2...) SELECT nouvelle_valeur_pour_colonne_1,nouvelle_valeur_pour_colonne_2... FROM table WHERE conditions

    nouvelle_valeur pouvant être le nom de la colonne (on reprend alors sa valeur), ou une expression quelconque.

    http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

    Jacques.
     
  3. fraid26
    fraid26 WRInaute discret
    Inscrit:
    3 Octobre 2008
    Messages:
    123
    J'aime reçus:
    0
    Bonjour,

    j'ai essayé INSERT INTO table (table.*) SELECT table.* FROM table WHERE conditions

    mais j'ai le message d'erreur suivant :

    Column count doesn't match value count at row 1

    J'aimerais éviter de recopier les colonnes à la main, car c'est possible que j'en rajoute lorsque je met à jour le script, et cela m'éviterai de mettre à jour cette page (peur d'oublier !)

    une idée ?

    merci.
     
  4. fraid26
    fraid26 WRInaute discret
    Inscrit:
    3 Octobre 2008
    Messages:
    123
    J'aime reçus:
    0
    Bon étant un peu pressé, j'ai bidouillé une solution qui a l'air de marcher sans soucis :

    Code:
    	
    // on récupère le nom des colonnes de la table
    $colonnes_factures="";
    	$req_structure = "SHOW COLUMNS FROM n_factures ";
    	$re = mysql_query($req_structure) or die(mysql_error());  
    	while ($ro = mysql_fetch_array($re, MYSQL_NUM)) 
    	{
    	$colonnes_factures.="$ro[0],";
    	}
    // on supprime la dernière virgule, et la colonne 'id' qui est en auto_increment
    	$colonnes_factures	=str_replace('id,', "", substr($colonnes_factures, 0, strlen($colonnes_factures)-1));
    
    // on sélectionne les enregistrements à copier	
    $re = mysql_query("SELECT id FROM n_factures where id_societe='$id_societe' and scenario='$scenario'") or die(mysql_error());  
    	while ($ro = mysql_fetch_array($re, MYSQL_NUM)) 
    	{
    	$id=$ro[0];
    	$id_facture_courant++;
    // on modifie les deux champs que je voulais modifier (on peut passer par un tableau si bcp de champs...)
    	$colonnes_factures_new	=str_replace('id_facture', "'$id_facture_courant'", $colonnes_factures);
    	$colonnes_factures_new	=str_replace('scenario', "'$id_scenario'", $colonnes_factures_new);
    	mysql_query("INSERT INTO n_factures ($colonnes_factures) SELECT $colonnes_factures_new FROM n_factures WHERE id_societe='$id_societe' and scenario='$scenario' and id='$id'") or die(mysql_error());
    	}
    Voilà, si ça peut aider !

    Frederic
     
Chargement...
Similar Threads - [mysql+php] Insert select Forum Date
Plugin Wordpress Insertion Date du Jour via Shortcodes Développement d'un site Web ou d'une appli mobile 7 Mars 2018
wordpress insert lien catégorie dans article Développement d'un site Web ou d'une appli mobile 10 Octobre 2017
Page créée (permalien) suite insertion Media sous Wordpress Problèmes de référencement spécifiques à vos sites 16 Juillet 2017
Question théorique à propos de l'insertion d'accent dans la base Développement d'un site Web ou d'une appli mobile 7 Mars 2017
Insertion d'un megamenu : quelles sont les bonnes pratiques pour le référencement ? Débuter en référencement 8 Janvier 2015
Insertion script HTML5 responsive design Développement d'un site Web ou d'une appli mobile 15 Septembre 2014
[MySQL] Requête SELECT et INSERT entre 3 tables liées+Aide Développement d'un site Web ou d'une appli mobile 30 Avril 2014
éditeur tinymce et insertion de code Développement d'un site Web ou d'une appli mobile 23 Août 2013
Lettre pour offre insertion publicitaire Monétisation d'un site web 16 Juillet 2013
Insertion d'un bouton google+1, échec... Développement d'un site Web ou d'une appli mobile 28 Mai 2013
Problème insert MYSQL avec accent Développement d'un site Web ou d'une appli mobile 24 Mai 2013
INSERT SQL Développement d'un site Web ou d'une appli mobile 27 Octobre 2012
script permettant l'insertion automatique de vidéos sur son site Développement d'un site Web ou d'une appli mobile 22 Septembre 2012
Google Shopping problème Insertion article Google : l'entreprise, les sites web, les services 18 Février 2012
Nettoyer un numéro de téléphone avant INSERT Développement d'un site Web ou d'une appli mobile 17 Février 2012
Liens devenant in-cliquable après insertion d'un encart connexion... Développement d'un site Web ou d'une appli mobile 13 Septembre 2011
Probleme bizzare d'insertion dans une base de donnée Développement d'un site Web ou d'une appli mobile 18 Août 2011
Problème d'insertion d'une balise DIV Développement d'un site Web ou d'une appli mobile 8 Juin 2011
Requete sql INSERT INTO + SELECT (php) Développement d'un site Web ou d'une appli mobile 13 Avril 2011
[MySQL] INSERT / UPDATE conditionnel Développement d'un site Web ou d'une appli mobile 1 Février 2011