substr() me fait des trucs bizarre

WRInaute discret
J'essaie de supprimer les 12 premières lettres d'un champ, j'ai donc tenté :

mysql_query("UPDATE `tsqq` SET `tsqq`= SUBSTR('tsqq', 12)");

Mais au lieu de me supprimer le 12 premières lettres de chaque entrée, ça me supprime toutes les entrées à la place.

Quelqu'un verrait pourquoi ?

Merci !
 
WRInaute occasionnel
Salut,

Comme tu peux le voir dans la doc, il faut définir le caractère de départ et celui de fin donc ça ferait plutôt substr('tsqq', 0, 12).

A+!
 
WRInaute discret
J'avais compris que ça marchait quand même si on en mettait qu'un.

Mais bon peu importe : mysql_query("UPDATE `tsqq` SET `tsqq`= SUBSTR('tsqq', 12, -9 )");
Ca m'efface tout quand même...
 
WRInaute discret
J'ai également essayé avec

("UPDATE `tsqq` SET `tsqq`= SUBSTRING('tsqq', 12, -9 )")
("UPDATE `tsqq` SET `tsqq`= MID('tsqq', 12, -9 )")

J'ai même essayé en mettant 1, -1 juste pour voir, mais dans tout les cas ça m'efface tout.
C'est super chiant, parce qu'en plus pour pouvoir avancer et faire d'autres truc j'ai spécialement besoin de résoudre ce problème précis... ^^

Donc un très grand merci à celui qui me résoudra ça !
 
WRInaute discret
Ah du progrès.
Quand je fait ça :
mysql_query("UPDATE `tsqq` SET `tsqq`=SUBSTR('tsqq', 3) WHERE id='24099'");

Ca me donne << qq >>.
Donc en fait ça ne prend pas la valeur du champs mais litteralement << tsqq >>.
Or je ne voit pas comment faire autrement qu'avec les simples guillemets autour du champ 'tsqq' pour que sql comprennent qu'il s'agit d'un champs et pas de texte.
 
WRInaute discret
Non ça change rien, à par au niveau du SUBSTR(tsqq, 3) ou la ça me donne un résultat vide.
Et si je remet SUBSTR('tsqq', 3) ça me redonne qq.
 
WRInaute discret
Ouais c'est bon fallait mettre SUBSTR(`tsqq`, 3) en fait.

Bon déjà c'était marqué nul part et en plus... ouais non rien d'autre mais ça m'a saoulé de le trouver par hasard quoi :)

Bon ben merci, c'est résolu !
 
WRInaute discret
Heu non c'est pas résolu en fait :)

Ça marche pas si je met deux chiffres (le 2 et le -9 dans l'exemple)

mysql_query("UPDATE tsqq SET tsqq=SUBSTR(`tsqq`, 2, -9) WHERE id=24099");

Ça ne marche que si je ne met qu'un chiffre, or en en mettant qu'un seul, on ne peut pas supprimer des lettres à la fin.

A la limite je peut peut-être faire un truc style : tsqq=tsqq - SUBSTR(`tsqq`, -9)
Y'a moyen de faire un truc dans ce genre là ?
 
WRInaute discret
Non ça ne change rien. (j'avais déjà testé mais par acquis de conscience j'ai rééssayé, même résultat)

En fait ce que je trouve bizarre c'est que ça marche parfaitement avec un chiffre, mais pas avec 2.
 
WRInaute impliqué
noel2008 a dit:
mysql_query("UPDATE `tsqq` SET `tsqq`= SUBSTR('tsqq', 12)");

esais ca: ?

Code:
mysql_query("UPDATE tsqq SET tsqq='SUBSTR('tsqq', 12)'  WHERE id=24099");

UPDATE tsqq :arrow: c'est bien le nom de ta table?
SET tsqq :arrow: c'est bien le nom de ton champs?
WHERE id=24099" :arrow: à parametrer selon besoin...
 
WRInaute occasionnel
webmasterdemonsite a dit:
mysql_query("UPDATE `tsqq` SET `tsqq`= SUBSTR('tsqq', 12)");

et si tu mettais
Code:
mysql_query("UPDATE `tsqq` SET `tsqq`= " . substr('tsqq', 12) .";");

je sais pas si ça peut changer grand chose mais ça me parait plus propre si tu veux utiliser la fonction php... il me semble que la fonction mysql s'appelle SUBSTRING!

le fonctionnement bizarre vient à mon avis de la confusion des langages...
 
WRInaute discret
Oups j'ai du mal m'exprimer car en fait : mysql_query("UPDATE tsqq SET tsqq=SUBSTR(`tsqq`, 2) WHERE id=24099");
marche très bien.

Mais : mysql_query("UPDATE tsqq SET tsqq=SUBSTR(`tsqq`, 2, -9) WHERE id=24099");
Ne marche pas et m'efface entièrement la valeur du champs. (la différence entre les deux et le deuxième chiffre : le -9.
Pour mysql il me semble que SUBSTR marche aussi, mais de toute façon j'ai déjà testé les deux.

M'enfin bref sinon je pense plutôt partir sur du : <?php
//query qui compte $NombreDentréeTotal

while ($nombre_de_lignes = $NombreDentréeTotal)
{
echo $string_str = preg_replace( '#('.implode('|', ' quand...').')#i', '', $string);
//Ma requete sql pour que ça update le champs de l'id choisi.
$nombre_de_lignes++;
}
?>

Ce qui reviendrait au même : mon but est de supprimer le " quand..." final.

Par contre vous avez des conseils pour réussir ma boucle ?
Ce que j'ai mis parait potable ou y'a des trucs qui vont pas ? (j'ai pas encore testé, donc)
 
Discussions similaires
Haut