Mise à jour de PHP insert else

  • seularts
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Jan 02, 2007
  • Messages: 147
  • Loc: Romania
  • Status: Offline

Message Mai 29th, 2011, 9:37 am

Salut

J'ai un petit problème avec mon code. Je ne sais pas comment modifier le code pour insérer mes valeurs de la DB, si elles ne peuvent pas être mis à jour (si elles n'existent pas dans la table de la DB).

Code: [ Select ]
    $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE bid_class='Bid_1'";
    $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE bid_class='Bid_2'";
    $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE bid_class='Bid_3'";
    $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE bid_class='Bid_4'";
    $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE bid_class='Bid_5'";
    $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE bid_class='Bid_6'";
    $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE bid_class='Bid_7'";

$result1 = mysql_query($SQL1);
$result2 = mysql_query($SQL2);
$result3 = mysql_query($SQL3);
$result4 = mysql_query($SQL4);
$result5 = mysql_query($SQL5);
$result6 = mysql_query($SQL6);
$result7 = mysql_query($SQL7);
  1.     $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE bid_class='Bid_1'";
  2.     $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE bid_class='Bid_2'";
  3.     $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE bid_class='Bid_3'";
  4.     $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE bid_class='Bid_4'";
  5.     $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE bid_class='Bid_5'";
  6.     $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE bid_class='Bid_6'";
  7.     $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE bid_class='Bid_7'";
  8. $result1 = mysql_query($SQL1);
  9. $result2 = mysql_query($SQL2);
  10. $result3 = mysql_query($SQL3);
  11. $result4 = mysql_query($SQL4);
  12. $result5 = mysql_query($SQL5);
  13. $result6 = mysql_query($SQL6);
  14. $result7 = mysql_query($SQL7);


Ainsi, par exemple, si l'attribut Bid_1 dans bid_value, n'existe pas dans la table je veux insérer la ligne entière comme ceci :

Code: [ Select ]
$SQL1_insert = "INSERT INTO tdp_base (bid_class,bid_value) VALUES ('Bid_1','$val1')";
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Mai 29th, 2011, 9:37 am

  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8925
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Mai 29th, 2011, 12:40 pm

Assurez-vous tout d'abord que vous avez vous avez une installation index primaire ou unique sur quelle valeur vous sont vouloir être unique afin que MySQL sache qu'il devrait exister seulement une entrée par une valeur unique. Une fois que vous vérifiez qu'est définie, alors vous pouvez généralement faire cela (en supposant que votre field1 est la clé unique) :

SQL Code: [ Select ]
INSERT INTO some_table (field1, field2) VALUES ('value1', 'value2')
ON DUPLICATE KEY UPDATE field2 = 'value2'
  1. INSERT INTO some_table (field1, field2) VALUES ('value1', 'value2')
  2. ON DUPLICATE KEY UPDATE field2 = 'value2'


Donc ce qui se passe ici est il va insérer les nouvelles valeurs dans votre base de données, mais si votre clé unique existe déjà, alors au lieu d'insérer il sera plutôt jour où cette clé existe déjà.
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • seularts
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Jan 02, 2007
  • Messages: 147
  • Loc: Romania
  • Status: Offline

Message Mai 29th, 2011, 2:45 pm

OK, cela fonctionne grille pour une seule valeur, mais la chose, c'est que j'aurai à utilisateurs multiples, l'insertion et la mise à jour leurs valeurs dans ce tableau, et la clé primaire sera ajoutez simplement sur le chemin. La chose est que je veux entrer des 7 valeurs dans la DB tout à la fois, mais si elles n'existent pas, je devrais être capable de créer toutes les 7 lignes pour chaque qui soumet les utilisateurs individuels.

Il est évident que le nom de l'utilisateur sera inséré dans un index dans le tableau pour chaque ligne, la valeur insérée/mise à jour, à ses 7 valeurs se distingue des autres utilisateurs.
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8925
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Juin 4th, 2011, 11:38 am

J'espère que je suis comprendre correctement, fondamentalement vous dites vous pouvez insérer plusieurs valeurs à la fois et s'il existe déjà puis mettez-le à jour. Très semblable à ce que j'ai écrit ci-dessus sauf avec plusieurs valeurs. Voici un exemple de comment vous ferait que :

SQL Code: [ Select ]
INSERT INTO some_table (field1, field2)
VALUES ('value1', 'value2'), ('anothervalue1', 'anothervalue2'), ('morestuff1', 'morestuff2')
ON DUPLICATE KEY UPDATE field2 = VALUES(field2)
  1. INSERT INTO some_table (field1, field2)
  2. VALUES ('value1', 'value2'), ('anothervalue1', 'anothervalue2'), ('morestuff1', 'morestuff2')
  3. ON DUPLICATE KEY UPDATE field2 = VALUES(field2)


Les domaines que j'ai écrit field2, qui serait avec quel que soit le nom du second champ est, avec vos exemples ci-dessus vous mettriez exactement « bid_value » pour field2. Logique ?
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • seularts
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Jan 02, 2007
  • Messages: 147
  • Loc: Romania
  • Status: Offline

Message Juin 4th, 2011, 11:55 am

Eh bien oui, sorte de, mais j'ai trouvé une façon plus simple. Parce que je ne pouvais pas définir l'utilisateur comme clé primaire, j'ai fait un filtre comme ceci :

Code: [ Select ]

        if($find['user']!=$the_name){
            $SQL1 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_1', '1', '$val1', 'Carcasa', '$the_name')";
            $SQL2 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_2', '2', '$val2', 'Carcasa', '$the_name')";
            $SQL3 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_3', '3', '$val3', 'Carcasa', '$the_name')";
            $SQL4 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_4', '4', '$val4', 'Carcasa', '$the_name')";
            $SQL5 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_5', '5', '$val5', 'Carcasa', '$the_name')";
            $SQL6 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_6', '6', '$val6', 'Carcasa', '$the_name')";
            $SQL7 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_7', '7', '$val7', 'Carcasa', '$the_name')";
        }else{
            $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE prod_class='Carcasa' AND bid_class='Bid_1' AND user='$the_name'";
            $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE prod_class='Carcasa' AND bid_class='Bid_2' AND user='$the_name'";
            $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE prod_class='Carcasa' AND bid_class='Bid_3' AND user='$the_name'";
            $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE prod_class='Carcasa' AND bid_class='Bid_4' AND user='$the_name'";
            $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE prod_class='Carcasa' AND bid_class='Bid_5' AND user='$the_name'";
            $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE prod_class='Carcasa' AND bid_class='Bid_6' AND user='$the_name'";
            $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE prod_class='Carcasa' AND bid_class='Bid_7' AND user='$the_name'";
        }
        $result1 = mysql_query($SQL1);
        $result2 = mysql_query($SQL2);
        $result3 = mysql_query($SQL3);
        $result4 = mysql_query($SQL4);
        $result5 = mysql_query($SQL5);
        $result6 = mysql_query($SQL6);
        $result7 = mysql_query($SQL7);
  1.         if($find['user']!=$the_name){
  2.             $SQL1 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_1', '1', '$val1', 'Carcasa', '$the_name')";
  3.             $SQL2 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_2', '2', '$val2', 'Carcasa', '$the_name')";
  4.             $SQL3 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_3', '3', '$val3', 'Carcasa', '$the_name')";
  5.             $SQL4 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_4', '4', '$val4', 'Carcasa', '$the_name')";
  6.             $SQL5 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_5', '5', '$val5', 'Carcasa', '$the_name')";
  7.             $SQL6 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_6', '6', '$val6', 'Carcasa', '$the_name')";
  8.             $SQL7 = "INSERT INTO tdp_base (bid_class, bid_no, bid_value, prod_class, user) VALUES ('Bid_7', '7', '$val7', 'Carcasa', '$the_name')";
  9.         }else{
  10.             $SQL1 = "UPDATE tdp_base SET bid_value='$val1' WHERE prod_class='Carcasa' AND bid_class='Bid_1' AND user='$the_name'";
  11.             $SQL2 = "UPDATE tdp_base SET bid_value='$val2' WHERE prod_class='Carcasa' AND bid_class='Bid_2' AND user='$the_name'";
  12.             $SQL3 = "UPDATE tdp_base SET bid_value='$val3' WHERE prod_class='Carcasa' AND bid_class='Bid_3' AND user='$the_name'";
  13.             $SQL4 = "UPDATE tdp_base SET bid_value='$val4' WHERE prod_class='Carcasa' AND bid_class='Bid_4' AND user='$the_name'";
  14.             $SQL5 = "UPDATE tdp_base SET bid_value='$val5' WHERE prod_class='Carcasa' AND bid_class='Bid_5' AND user='$the_name'";
  15.             $SQL6 = "UPDATE tdp_base SET bid_value='$val6' WHERE prod_class='Carcasa' AND bid_class='Bid_6' AND user='$the_name'";
  16.             $SQL7 = "UPDATE tdp_base SET bid_value='$val7' WHERE prod_class='Carcasa' AND bid_class='Bid_7' AND user='$the_name'";
  17.         }
  18.         $result1 = mysql_query($SQL1);
  19.         $result2 = mysql_query($SQL2);
  20.         $result3 = mysql_query($SQL3);
  21.         $result4 = mysql_query($SQL4);
  22.         $result5 = mysql_query($SQL5);
  23.         $result6 = mysql_query($SQL6);
  24.         $result7 = mysql_query($SQL7);


Donc, fondamentalement si l'utilisateur ne se trouve pas dans le tableau, je crée les lignes, si elle existe alors elle met à jour les valeurs où l'utilisateur est défini. Il semble laid, je le sais, mais il fonctionne comme un charme.:)
  • Bigwebmaster
  • Site Admin
  • Site Admin
  • Avatar de l’utilisateur
  • Inscription: Déc 20, 2002
  • Messages: 8925
  • Loc: Seattle, WA & Phoenix, AZ
  • Status: Offline

Message Juin 4th, 2011, 12:01 pm

Heureux que vous avez trouvé une solution qui fonctionne pour vous. Je suis curieux de pourquoi vous ne peut pas définir le champ utilisateur comme une clé primaire ou unique ?
Ozzu Hosting - Want your website on a fast server like Ozzu?
  • Bogey
  • Bogey
  • Genius
  • Avatar de l’utilisateur
  • Inscription: Juil 14, 2005
  • Messages: 8211
  • Loc: USA
  • Status: Offline

Message Juin 4th, 2011, 12:37 pm

PHP Code: [ Select ]
$sql = array('INSERT INTO...', 'INSERT INTO...', 'INSERT INTO...');
$result = array();
foreach($sql as $query)
{
    $result[] = mysql_query($query);
}
  1. $sql = array('INSERT INTO...', 'INSERT INTO...', 'INSERT INTO...');
  2. $result = array();
  3. foreach($sql as $query)
  4. {
  5.     $result[] = mysql_query($query);
  6. }

J'espère que logique pour quelle Im suggérant.
"Bring forth therefore fruits meet for repentance:" Matthew 3:8

Afficher de l'information

  • Total des messages de ce sujet: 7 messages
  • Utilisateurs parcourant ce forum: Kurthead+1 et 230 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC