Se connecter / S'enregistrer

Résolu [PHP] Remplacer nombre par une lettre (fonction str_replace?)

Solutions (10)
Tags :
  • Script
  • Programmation
|
Bonjour,

J'essaye de créer un script afin de mettre certain caractères a jour dans une base de données sql.

Tout d'abord je récupère le contenu à modifier, j'utilise ensuite la fonction str_replace pour ce faire. Puis je renvoie le tout sur ma base.

Je dois modifier un certain chiffre qui est passé pas l'url et le remplacer par la lettre X. Le tout dans un tableau html contenu dans ma base. Cependant, si le chiffre passé par l'url est 1 par exemple, avec la fonction str_replace je vais également modifier tous les nombres qui contiennent le chiffre 1 (21 devient 2X, 31 devient 3X) !! Alors que je ne souhaite que seulement 1 devienne X.

Merci d'avance,

Cordialement
Contenus similaires
Meilleure solution
partage
, Modérateur |
Ah oui c'est de ma faute, en PHP la concaténation c'est pas "+", c'est "."
Désolé, je ne fais plus trop de PHP :) 

Remplace les + par des . dans les str_replace et ça devrait être mieux.
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par bboyhades38.
  • Commenter cette réponse |
Score
0
òh
òi
|
Euh enfaite j'ai encore un problème, le code que vous m'avez suggéré remplace les chiffres non pas par 'X' mais pas '0'...

:??: 

Comme si $newStr = 0;

En plus ca ne prend pas en compte ce qu'il y avait avant.
Comme au départ, tous les chiffres sont remplacés :s (Maintenant 21 devient 20 c'est tout ><)

^^
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
J'avais édité... mais je me rend compte que t'as répondu entre temps.
Donc je le redis:
pourquoi tu stockes de telles données HTML dans une base de données ? Ca serait pas plus simple de n'avoir que des numéros de 0 à 5 et de générer un tableau à partir de ces données ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Merci beaucoup!

Oui, j'imagine que les expressions régulières seraient la bienvenue ici ^^ mais j'y connais absolument rien :p 
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Plusieurs possibilités...

En voilà une:
  1. oldStr = "1";
  2. newStr = "X";
  3. str_replace("case=" + oldStr + "&", "case=" + newStr + "&", chaine);
  4. str_replace(">" + oldStr + "</a>", ">" + newStr + "</a>", chaine);


Une solution plus propre serait d'utiliser une expression régulière à la place.

Edit: et pourquoi tu stockes de telles données HTML dans une base de données ? Ca serait pas plus simple de n'avoir que des numéros de 0 à 5 et de générer un tableau à partir de ces données ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Alors j'ai un tableau comme cela qui est généré par une fonction :

  1. <table >
  2. <tr>
  3.  
  4. <th>
  5. <a href="grille.php?case=0&grille=grille1"> 0 </a>
  6. </th>
  7.  
  8. <th><a href="grille.php?case=1&grille=grille1"> 1 </a></th>
  9.  
  10. <th><a href="grille.php?case=2&grille=grille1"> 2 </a></th>
  11.  
  12. <th><a href="grille.php?case=3&grille=grille1"> 3 </a></th>
  13.  
  14. <th><a href="grille.php?case=4&grille=grille1"> 4 </a></th>
  15.  
  16. <th><a href="grille.php?case=5&grille=grille1"> 5 </a></th>
  17.  
  18. </tr>
  19. </table>


Je veux ici changer tous les chiffres mis a part 'grille1'.

Je cherche donc a avoir comme resultat par exemple (en changeant le 1 et uniquement le 1):

  1. <table >
  2. <tr>
  3.  
  4. <th><a href="grille.php?case=X&grille=grille1"> X </a></th>
  5.  
  6.  
  7. <th><a href="grille.php?case=21&grille=grille1"> 21 </a></th>
  8.  
  9. </tr>
  10. </table>
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Il faudrait donner un exemple de ton contenu HTML alors.
Donne nous ce que tu as autour de ton 1. Parce qu'il va falloir prendre en compte ce que tu as autour pour ne pas remplacer les 21 et autres nombres contenant 1.
  • Commenter cette réponse |
Score
0
òh
òi
|
Ca je sais faire :p 

Mais enfaite j'ai tout un tableau html qui est contenu dans une seule colonne... et ce même tableau contient des chiffres que je veux modifier.
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Tu ne devrais même pas avoir besoin de faire un traitement via PHP, une seule requête UPDATE sql devrait te suffire.
Exemple:
  1. UPDATE taTable SET Colonne = X WHERE Colonne = 1


A condition bien sûr que ta colonne n'aie que ce chiffre.
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS