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

Langage PHP Discussion :

Petit défi pour vous


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Petit défi pour vous
    Bonjour, je galère à essayer de trouver la bonne façon d'écrire mon code, les guillemets ça rend fou. Voici ce que j'ai pour l'instant mais ça ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $temp_result = mysql_query("SELECT SUBSTRING('".$variable."','".strpos($variable,'>(')."'+2,(((LENGTH('".$variable."'))-'".strrpos($variable,'<)')."'-3)-'".strpos($variable,'>(')."')) As result FROM posts WHERE `ID` = 46");
    Quelqu'un peut m'aider svp?

  2. #2
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 008
    Points
    2 008
    Billets dans le blog
    1
    Par défaut
    Tu ne dois pas utiliser les fonctions mysql_query etc qui sont pleines de problèmes de sécurité et de toute façon dépréciée dans PHP depuis longtemps.
    Il faut que tu regardes du côté de PDO ou mysqli avec les requêtes préparées.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui je sais je tarde un peu à m'initier au pdo, mais ça ne règle malheureusement pas mon problème de guillemets

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    poste voir le contenu final attendu du sql et une valeur d'entrée de $variable

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ça me dit
    Syntax error, unexpected SUBSTRING
    Dernière modification par rawsrc ; 03/07/2019 à 21h32. Motif: Balises [quote][/quote] pour les messages d'erreur

  6. #6
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ça me semble normal vu où tu t'es embarqué
    Par contre, je pense qu'il serait largement préférable de déterminer le nom des colonnes en PHP et les passer tels quels à la chaîne SQL

  7. #7
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 008
    Points
    2 008
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mainpleine Voir le message
    Oui je sais je tarde un peu à m'initier au pdo, mais ça ne règle malheureusement pas mon problème de guillemets
    Justement si, pdo règlerait ton problèmes de guillemets et ce n'est pas plus compliqué à utiliser que les anciennes fonctions.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Je sais que ce code fonctionne car je l'ai essayé en sql server, seulement je ne parviens pas à faire un while loop en sql server alors je vais le faire en php puisque c'est facile, reste juste à replacer les guillemets en ordre, ou sinon je vais opter pour pdo si vous me dites que c'est plus simple.

  9. #9
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    et ma requête tu t'en secoue les ... ?

    PDO ne va pas te faciliter la vie sur cette problématique, m'enfin ce que j'en dis....

  10. #10
    Invité
    Invité(e)
    Par défaut
    Je ne comprends pas ta demande, "déterminer le nom des colonnes en php". Il n'y a qu'une seule colonne impliquée, $variable est le contenu de chaque item de la colonne.

  11. #11
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    ta cuisine en SQL est inutile, il est préférable de la faire en php et de monter ton sql proprement (sans problèmes de guillemets)

  12. #12
    Invité
    Invité(e)
    Par défaut
    Bon je vais essayer des trucs, merci.

  13. #13
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 008
    Points
    2 008
    Billets dans le blog
    1
    Par défaut
    J'avais mal lu, je pensais qu'il cherchait à passer les valeurs des colonnes. Faut dire que c'est tellement le bordel cette requête ce code
    Avoir des guillemets quand tu passes des variables à une string est normal, c'est une mauvaise pratique que d'insérer directement les variables sans les séparer de la string.
    Comme le disait Mainpleine, commence par créer des variables qui contiennent directement ce dont tu as besoin plutôt que de faire des opérations directement dans la requête, c'est illisible.
    Ensuite tu peux formater ta requête pour que ce soit plus propre.

  14. #14
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Sodium Voir le message
    Comme le disait Mainpleine,
    c'est plutôt
    Comme le disait truc, machin, arrrghhh ! je ne m'en souviens plus : c'est rawsrc, Gwendoline

  15. #15
    Invité
    Invité(e)
    Par défaut
    La string c'est ma $variable, je cherche à sélectionner qu'une substring au milieu de la string, je pensais que ça se voyait. Mais de toute façon tout fonctionne, faut juste que je trouve comment placer mes guillemets simples et doubles. La requête fonctionnait lorsque j'avais pas de guillemets et seulement des variables comme ceci @variable et j'utilisais LOCATE au lieu de strpos. Bref j'ai juste fait une conversion en code php pour mieux coder ma while loop, mais je galère sur les guillemets.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Je vais vous montrer le code qui fonctionnait car ne nécessitant pas trop de guillemets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT SUBSTRING(@variable,LOCATE('>(',@variable)+2,(((LENGTH(@variable))-LOCATE('<)', REVERSE(@variable))-3)-LOCATE('>(',@variable))) As result FROM wpfz_posts WHERE `ID` = 46;

  17. #17
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Points : 2 008
    Points
    2 008
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    c'est plutôt
    Oups pardon, je corrigerais bien mais maintenant il est trop tard

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

Discussions similaires

  1. Petit défi pour junior
    Par DefiAzzana dans le forum Langages
    Réponses: 19
    Dernier message: 08/01/2014, 09h06
  2. un petit probleme pour vous un grand pour moi
    Par forstyle dans le forum Réseau
    Réponses: 6
    Dernier message: 04/11/2009, 20h03
  3. un petit pas pour vous, un grand pas pour moi!
    Par gerv33 dans le forum Langage
    Réponses: 6
    Dernier message: 01/11/2009, 13h38
  4. Réponses: 10
    Dernier message: 24/05/2009, 20h11

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