Erreur php Update

WRInaute discret
bonjour a tous,

Je me demandais s'il etait possible admettons que je mets ce code:
Code:
mysql_query("UPDATE kvd.products_description SET products_name='$descrip_e', products_description='$descrip_e' WHERE products_url = '$num_style' AND language_id = '1'");
Que si jamais le code plutot que de rien faire s'il ne trouve pas l'endroit ou products_url = '$num_style' AND language_id = '1' que je lui fasse faire un autre code facilement, ou dois je y allez absolument par faire un autre script avant?

Merci
 
WRInaute discret
jcaron a dit:
Je suppose que tu veux faire un INSERT si le UPDATE ne trouve rien?

En mysql (ce n'est pas du SQL standard) tu peux utiliser ça:

http://dev.mysql.com/doc/refman/5.1-maria/en/insert-on-duplicate.html

Si c'est autre chose, ben il va falloir préciser.

Jacques.

Jacques en plus d'etre bon en php tu lis dans mes pensées... :D Je veus en effet faire une Insert.

J'ai lu la page que tu m'a envoyé et voila les problemes que je crois que je vais avoir.
Ma base est fait comme ca:(juste un exemple c'est pas les vrai nom)
style === descrip === langue
25 ==== green === 1
25 ==== vert === 2
26 ==== red === 1
27 ==== blue === 1
27 ====bleu ===2

Donc c'est sur que des fois le numero de style est double et certaine couleurs aurait la meme couleur et donc je ne peus pas iniquer de primary key ou unique index.

J'ai aussi trouvé la fonction mysql_affected_rows...et ca serait bien, sauf que ca me donne toujours 0. Apres de longue recherche je me suis rendu compte que c'était du a que mysql_affected_rows ne compte pas une ligne comme affecter si les valeurs reste les meme.

mon bout de script était donc rendu comme ca:
Code:
mysql_query("UPDATE kvd.products_description SET products_name='$descrip', products_description='$descrip' WHERE products_url = '$num_style' AND language_id = '5'");
if(mysql_affected_rows() == 0){
echo "$num_style existe pas en francais donc ajouter<br>";
//mysql_query("INSERT INTO kvd.products_description (language_id, products_name, products_description, products_url ) VALUES ('5', '$descrip', '$descrip', '$num_style')");
}

Je crois que je n'aurrai pas le choix de faire un select avec un mysql_num_rows...mais ca allourdi le code pour rien je trouve..non? aucune suggestion?
 
WRInaute discret
Bon j'ai trouve cette fonction, sauf que elle ne marche pas dans une loop.

function mysql_modified_rows () {
$info_str = mysql_info();
$a_rows = mysql_affected_rows();
ereg("Rows matched: ([0-9]*)", $info_str, $r_matched);
return ($a_rows < 1)?($r_matched[1]?$r_matched[1]:0):$a_rows;
}

Je recois ce message d'erreur:
[Mon Apr 12 22:34:40 2010] [error] PHP Fatal error: Cannot redeclare mysql_modified_rows() (previously declared in /home/httpd/vhosts/nomdedomain.ca/httpdocs/everything2.php:36) in /home/httpd/vhosts/nomdedomain.ca/httpdocs/everything2.php on line 35

En plus je crois que cette fonction est aussi lourde que de faire un autre SELECT.
 
WRInaute accro
Mon humble avis est que dans ta table, la combinaison (style,langue) est forcément unique, non? Dans ce cas tu définis ces deux champs comme étant la clef primaire, et tu peux utiliser INSERT ... ON DUPLICATE :)

Jacques.
 
WRInaute accro
willpower, ton message semble dire que tu inclus deux fois le même fichier qui contient la définition de la variable. met cette fonction dans un fichier à part et fais un requiere_once pour ne pas l'inclure deux fois
 
Discussions similaires
Haut