Multiple Update MySQL [Résolu]

Messages postés
8
Date d'inscription
lundi 10 avril 2006
Dernière intervention
22 juin 2006
- 20 juin 2006 à 20:06 - Dernière réponse :
Messages postés
8
Date d'inscription
lundi 10 avril 2006
Dernière intervention
22 juin 2006
- 22 juin 2006 à 12:05
Bon, comme je ne sais pas trop comment poser la question, voila le contexte.

Depuis une page en php me servant à requeter dans la base MySQL, je peux faire des inserts sur plusieurs lignes et plusieurs champs en une passe. Ok. C'est bien pratique.

'INSERT IGNORE INTO `admin` (`id`, `nom`, `titre`, `numero`, `administrateur`, `id_level`, `valeur`) VALUES ' ; ?><?php $text = stripslashes($textfield) ;?><?php echo trim($text, ",").";"; ?>
ensuite la liste des valeurs. 3, 5, 10, 100, lignes d'un coup ça roule

Tout ça c'est ok

Question : Je tente de réaliser la meme démarche depuis une page en php me servant à requeter (je me répète) et là, non plus en INSERT mais en UPDATE et ben ça veut pas. Je suis pas balaise ça fait que 7 heures que je bosse sur la commande et que je cherche un exemple , mais bon jusqu'à présent, rien de concluant.

L'UPDATE ressemble à ça

UPDATE `table_1`
SET
`nom` = 'blabla',
`titre` = 1 ,
`numero` = 2 ,
`administrateur` = 'blablabla' ,
`id_level` = 1 ,
`valeur` = 2 ,
 WHERE
`id` =34;


UPDATE `table_1`
SET
`nom` = 'boubou',
`titre` = 1 ,
`numero` = 3 ,
`administrateur` = 'blablabla' ,
`id_level` = 1 ,
`valeur` = 2 ,
 WHERE
`id` =35;

ça copier dans mon formulaire ça passe pas erreur MySQL, ça donne
UPDATE `table_1` SET `nom` 'blabla', `titre` 1 , `numero` = 2 , `administrateur` = 'blablabla' , `id_level` = 1 , `valeur` = 2  WHERE `id` =34; UPDATE `table_1` SET `nom` = 'boubou', `titre` = 1 , `numero` = 3 , `administrateur` = 'blablabla' , `id_level` = 1 , `valeur` = 2  WHERE `id` =35;Erreur 1064 : You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '; UPDATE `table_1` SET `nom` 'blabla', `titre` 1 , `nu

Mais la meme chose copier dans le SQL TEXTAREA de phpmyadmin passe comme une lettre à la poste 'quand elle est pas en grève' lol

Voili voilou
Je continue à chercher et je reviens dès que j'ai du news.

Si y'en à un ou une qui aurait déjà rencontrer ce contexte je suis preneur d'infos à++ 

paulo
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Dernière intervention
28 août 2007
20 juin 2006 à 22:41
3
Merci
Ben dis, pour 7 heures de MySQL, t'es plutôt sur la bonne voix !

Bon, il y'aurit une virgule de trop avant chaque WHERE
`valeur` = 2 ,
 WHERE
`id` =34;

Sinon, ça à l'air correct...

Je te laisse regarder la doc MySQL pour les histoire de version (et autre) :

13.1.10. Syntaxe de
UPDATE


Bonne chance.

Merci J_G 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de J_G
Meilleure réponse
Messages postés
12336
Date d'inscription
mardi 10 février 2004
Dernière intervention
30 juillet 2012
20 juin 2006 à 23:55
3
Merci
Salut,

cette erreur suffit...

en php, une seule requette par mysql_query... c'est la règle...

In a dream, I saw me, drop dead... U was there, U cried... It was just a dream, if I die, U won't cry, maybe, U'll be happy

Merci coucou747 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de coucou747
Meilleure réponse
Messages postés
316
Date d'inscription
jeudi 9 janvier 2003
Dernière intervention
1 février 2010
21 juin 2006 à 02:00
3
Merci
coucou747 à tout a fait raison :D, je me suis heurté aux même problème y'a pas longtemps mais sur des insertions dans la base ...

au final j'ai créé un tableau contenant toute mes requetes et j'ai lancé un foreach sur le tableau pour récup les requetes une a une et les executer les unes arpres les autres ... :D

--=Capoueidiablo=--

Merci capoueidiablo 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de capoueidiablo
Meilleure réponse
Messages postés
1406
Date d'inscription
mercredi 17 août 2005
Dernière intervention
28 août 2007
21 juin 2006 à 10:34
3
Merci
<dd>



</dd>
<dt>

<var class="parameter">query</var>

</dt>
<dd>


Une requête SQL





La chaîne de requête ne doit pas se terminer par un point-virgule.



</dd>Voilà ce que je lis dans la doc de mysql_query... C'est hallucinant car j'ai toujours terminé mes requètes par un point virgule !?! Pensant bien faire. et j'ai jamais eu de problème.<dt>Etonnant !
</dt>

Merci J_G 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de J_G
Meilleure réponse
Messages postés
8
Date d'inscription
lundi 10 avril 2006
Dernière intervention
22 juin 2006
21 juin 2006 à 15:20
3
Merci
Merci de chercher avec moi une solussastuce à ce malin souci.

Réponse à J_G, bien vu pour la virgule mais afin d'ecourter la liste des champs à mettre à jour j'en ai virer quelques uns et j'ai pas virer la derniere virgule avant where. Ceci fait et verifier ça n'a pas résolu le probleme.


Concernant le point virgule en fin de chaine de requete c'est vrai et enchainer deux requetes update dans le SQL TEXTAREA de phpmyadmin fonctionne. Evidemment après avoir testé dans le TEXTAREA de ma page ça bug.

D'accord aussi avec coucou747 et capoueidiablo une seule requete par mysql_query mais une requete peut 'entre guillemet' englober un ensemble ou sous ensemble d'action. Par exemple un INSERT peut permettre d'entrer en une passe 1, 10 100 10000 lignes, de plusieurs champs, dans MySQL, je le sais je le fais, par une methode pas très orthodoxe, peut etre au yeux des puristes mais ça fonctionne. Je fais plusieurs action dans un formulaire ensuite je génère mais lignes avec While et ensuite je met en forme et j'envoie la requete INSERT.

Bon et bien pourquoi ça semble moins facile avec UPDATE certainement que je m'y prend pas très bien alors je vais chercher. Mais j'insiste sur le fait que copier, coller dans le SQL TEXTAREA de phpmyadmin fonctionne mais pas dans le TEXTAREA de ma page qui lui peut fonctionner en collant un ensemble INSERT. > leschamps > lesvaleurs.

Bon à part ça j'ai trouver ceci


//select query


while ($row = mysql_fetch_array ($result, MYSQL_ASSOC)) {

$id = $row[id];
$pref = $row[pref];

//you'll need to write the code for the rest of the table, the important bit is below

print "<td> </tr></td>

//include submit button here
}

// Then above all this I would have my conditional for the submit


if (isset($_POST[submit])) {

foreach ($_POST as $key) {
$id=$key[id];
$pref=$key[pref];


$query = "UPDATE table set pref= $pref where id = $id";

}
}
Je vais tenter et voir. Si de votre coté vous avez une voie, je prends.
A++

Paulo

Merci cs_paul13 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_paul13
Meilleure réponse
Messages postés
8
Date d'inscription
lundi 10 avril 2006
Dernière intervention
22 juin 2006
22 juin 2006 à 12:01
3
Merci
Bon Ben voilà

après moultes recherches par dela les horizons des forums lointains j'ai fini par trouver mon bonheur et
l'adapter à mes besoins
ça tiens en ceci

<form>
<?php
//préparation des valeurs à modifier
while (){
//édition de la liste
echo ....
}
//submit
?>
</form>

<?php
for ($i = 0; $i < count($_REQUEST['id'])+1; $i++) {
$admin = $_REQUEST['admin][$i];
$level = $_REQUEST['level'][$i];
$nom  = $_REQUEST['nom'][$i];
$titre = $_REQUEST['titre'][$i];
$id = $_REQUEST['id'][$i];
$query = "UPDATE stock SET admin='".$admin."',level='".$level."',nom='".$nom."',titre='".$titre."' WHERE id='".$id."'";
$result = mysql_query($query);
}
?>

c'était pas difficile, encore fallait il le savoir.

A++

Merci cs_paul13 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_paul13
Meilleure réponse
Messages postés
8
Date d'inscription
lundi 10 avril 2006
Dernière intervention
22 juin 2006
22 juin 2006 à 12:05
3
Merci
Au fait Merci beaucoup à ceux qui se sont pencher avec moi sur ce probleme

Paulo

Merci cs_paul13 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de cs_paul13

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.