IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Corriger des enregistrements sans php


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut Corriger des enregistrements sans php
    Bonjour,

    J'ai une table ressemblant à cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
     
    CREATE TABLE jos_quiz_t_question (
      c_id int(10) unsigned NOT NULL auto_increment,
      c_quiz_id int(10) unsigned NOT NULL default '0',
      c_point tinyint(3) unsigned NOT NULL default '0',
      c_attempts tinyint(3) unsigned NOT NULL default '1',
      c_question text NOT NULL,
      c_image varchar(255) NOT NULL default '',
      c_type tinyint(4) NOT NULL default '0',
      ordering int(11) default '0',
      c_right_message text,
      c_wrong_message text,
      c_feedback int(11) NOT NULL default '0',
      cq_id int(11) NOT NULL default '0',
      c_ques_cat int(11) NOT NULL default '0',
      c_random char(1) NOT NULL default '0',
      PRIMARY KEY  (c_id),
      KEY c_quiz_id (c_quiz_id)
    ) ENGINE=MyISAM AUTO_INCREMENT=777 DEFAULT CHARSET=utf8;
     
     
    INSERT INTO jos_quiz_t_question VALUES (133, 0, 2, 0, '<div class="question"><span class="chiffre">1.10.3</span>A quelle distance d\'un véhicule immobile ou d\'un obstacle, faut il placer un sabot?</div>', '', 1, 0, '', '', 0, 0, 44, '1');
    Je voudrai modifier tous les enregistrement afin de leur ajouter un texte en fonction de la valeur c_ques_cat.

    En clair je veux remplacer
    - '<div class="question"><span class="chiffre">1.10.3</span>A quell...

    par
    - '<div class="question"><span class="chiffre">nouveau texte1.10.3</span>A quell...

    Mon but étant de faire cela sans php juste avec une requete sql. Une ame chritable peux elle me donner un exemple?

    Merci!

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 997
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 997
    Billets dans le blog
    6
    Par défaut
    S'il faut remplacer EXACTEMENT la chaine c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE jos_quiz_t_question
    SET    c_question text = '<div class="question"><span class="chiffre">nouveau texte1.10.3</span>A quell...   '
    WHERE  c_question text = '<div class="question"><span class="chiffre">1.10.3</span>A quell...   '
    Sinon (partiel) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE jos_quiz_t_question
    SET    c_question text = REPLACE(c_question text, '<div class="question"><span class="chiffre">1.10.3', '<div class="question"><span class="chiffre">nouveau texte1.10.3')
    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Merci c'est l'option partielle mais cela engendre encore un problème, c'est que la fin de la chaine change pour chaque record:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    UPDATE jos_quiz_t_question
    SET    c_question text = REPLACE(c_question text, 
    '<div class="question"><span class="chiffre">1.10.3 Texte 1',
     '<div class="question"><span class="chiffre">nouveau texte1.10.3 Texte 1')
    puis le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    UPDATE jos_quiz_t_question
    SET    c_question text = REPLACE(c_question text, 
    '<div class="question"><span class="chiffre">1.10.3 Texte 1',
     '<div class="question"><span class="chiffre">nouveau texte1.10.3 Texte 1')
    Pas facile a exlpiquer, mais pour ces deux enregistrements, comment les mettre à jours en une seule requete? (j'ai pluseurs 100aines de records).

    Merci cedric

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Je résume car j'ai pas été très clair et vous n'êtes pas dans ma tete!

    Donc je schématise ma table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ID ¦ TEXTE 
    --------------------------
    1 ¦ <balise>texte 1 hwrhwth thth rth [...]
    2 ¦ <balise>texte 2 hrhwrh wrt hwrt hwrth wt h [...]
    3 ¦ <balise>texte 3 hwhthwth t hwrh trwht thth [...]
    4 ¦ <balise>texte 4 wrhwh thwr hrth t[...]
    5 ¦ <balise>texte 5  fged h h hw hwth à[...]
    6 ¦ <balise>texte 6 erztzuzhihj h  h  u gutftuf tu zog [...]

    Et moi je désire remplacer le texte <balise> par <balise> Nouveau texte à tous les enregistrements, en sachant que le texte commence toujours par <balise> et que la suite et différente pour chaque ligne.

    Cela en une requete, si possible.

    Merci d'avance pour une éventuelle réponse.

    Cédric

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Quelqu'un pourrai m'aider, je ne trouve pas

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Quand tu dis :
    Citation Envoyé par pelloq1 Voir le message
    en sachant que le texte commence toujours par <balise> et que la suite et différente pour chaque ligne.
    Tu veux bien dire que le texte commence toujours par la même <balise> et pas de temps en temps par <u> ou <div> ou une autre balise ?

    Donc le REPLACE devrait fonctionner !
    Par contre un truc bizarre dans ta requête :
    Ne serait-ce pas plutôt ceci ?
    D'après la description de ta table, text est le type de la colonne c_question.

    Donc ceci devrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE jos_quiz_t_question
    SET    c_question = REPLACE(c_question text, 
    '<div class="question"><span class="chiffre">',
     '<div class="question"><span class="chiffre">nouveau texte')
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2007
    Messages : 162
    Par défaut
    Merci cela fonctionne.

    J'avais peut que le remplace ne compare la chaine complète, par la nouvelle, là en fait il remplace les occurences de ce texte.

    Merci, [RESOLU]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PDO] Affichage des enregistrement avec php 5 PDO
    Par walid kh dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 19/04/2015, 17h00
  2. Réponses: 7
    Dernier message: 16/12/2008, 15h36
  3. des enregistrement sans colonne
    Par Elwe31 dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/01/2008, 19h34
  4. Envoyer et récupérer des variables sans php
    Par goueg dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/08/2007, 10h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo