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 régulier
    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
    Points : 94
    Points
    94
    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 911
    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 911
    Points : 51 670
    Points
    51 670
    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 +

  3. #3
    Membre régulier
    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
    Points : 94
    Points
    94
    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 régulier
    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
    Points : 94
    Points
    94
    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 régulier
    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
    Points : 94
    Points
    94
    Par défaut
    Quelqu'un pourrai m'aider, je ne trouve pas

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    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 801
    Points : 34 063
    Points
    34 063
    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')

  7. #7
    Membre régulier
    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
    Points : 94
    Points
    94
    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