Fonction

Bonjour, svp est-ce que y a t-il une fonction qui cherche une sous chaine ds une chaine ou meme un texte en php , j'ai trop cherché pas aucun résultat , je dois remettre ce travail pour samedi :( et merci d'avance...
Configuration: Windows XP
Firefox 3.0.10

40 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

La discussion porte sur la recherche d'une sous-chaîne dans une chaîne ou un texte en PHP, en soulignant l'intérêt d'une fonction de détection efficace comme strpos. Plusieurs réponses évoquent l'usage de strpos et la vérification de son retour; d'autres proposent des solutions SQL avec LEFT JOIN et IS NULL pour repérer les enregistrements sans correspondance. En parallèle, certains échanges abordent des erreurs liées à MySQL, comme un résultat invalide après mysql_fetch_array ou une colonne inconnue, montrant le rôle du débogage et du contrôle des requêtes. En complément, la discussion illustre que le choix entre une solution PHP ou une solution SQL dépend du contexte applicatif et que des tests avec des cas réels permettent d'éviter les erreurs courantes.

Bobot (l’IA à votre service)
  1. merci , mais mnt il m'affiche cette erreur :

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\nouveau\faq1.php on line 17

    et voici mon code :

    $resultat=mysql_query("SELECT * FROM ticket WHERE n_ticket IN SELECT n_ticket FROM intervention and cat_pb='".$catégorie."' and s_dom_pb='".$ss_domaine."';");
    while($donnée=mysql_fetch_array($resultat)).....................................(17)
    {$pos = strpos($donnée['def_pb'], $session);
    if($pos=== true)
    {echo"<strong>"; echo"donnée['def_pb']"; echo"</strong>"; echo"<br>";
    echo"donnée['despt_pb']";
    echo"<hr>";
    }
    }
    1. $resultat=mysql_query("SELECT * FROM ticket WHERE n_ticket IN SELECT n_ticket FROM intervention and cat_pb='".$catégorie."' and s_dom_pb='".$ss_domaine."';");

      tu peux me dire ce que fait IN car je ne connais pas cette syntaxe ?
      essayes cette ligne dans mysql ( phpmyadmin ) elle te donnera plus d'information sur l'erreur
      1. elle fait la jointure entre les deux tables : ticket et intervention.
        1. ok ^^ (j'apprends des trucs comme ca ^^ )

          tu l'as testée dans phpmyadmin ?
          1. oui mais tjrs l'erreur inconnue !!! tu sais je pense que je dois reformuler ma requete avec EXISTS parce que je veux afficher deux champs de la table ticket mais le tuple contenant ces deux champs dois y exister ds la table intervention (càd possède une solution), tu m'as compris?
            1. tu veux selectionner un element dans une table s'il existe dans une autre ... c'est ca ?
              1. voici la nouvelle version de la requete mais pas chance tjrs ds fetch_erray !!!!! je comprends rien :(

                $resultat=mysql_query("SELECT def_pb,descpt_pb FROM ticket WHERE cat_pb='".$catégorie."' and s_dom_pb='".$ss_domaine."' EXISTS SELECT * FROM intervention WHERE Num_ticket=ticket.Num_ticket;");
                1. essayes comme ca :
                  $resultat=mysql_query("SELECT def_pb,descpt_pb FROM ticket WHERE cat_pb='".$catégorie."' and s_dom_pb='".$ss_domaine."' EXISTS (SELECT * FROM intervention WHERE intervention.Num_ticket=ticket.Num_ticket);");

                  syntaxe prise ici : http://dev.mysql.com/doc/refman/5.0/fr/exists-and-not-exists-subqueries.html
                  1. meme erreur , je pense l'erreur est ds la recuperation des données pas ds la requete non ?!!

                    l'erreur tjrs: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource
                    1. donc c'est ta requête qu'est pas bonne
                      essaye de la produire sur phpmyadmin ... lui il te donnera la syntaxe exacte
                      (désolé je n'ai fait que très peu d'SQL =/ tu viens même de m'apprendre 2 syntaxe xD lol )
                      1. non pas de soucis , je vais encore plus espérant je trouve la réponse :)
                        1. tu t'es bien connecté a ta bdd ?
                          t'as pas fait une erreur de frappe quelque part ?
                          1. ben , normalement tout est bon !! tu peux vérifier avec moi :

                            $connexion = mysql_connect('localhost', 'root', '') or exit(mysql_error());
                            mysql_select_db('ticket', $connexion) or exit(mysql_error());
                            mysql_select_db('intervention', $connexion) or exit(mysql_error());
                            $catégorie='réparation';
                            $ss_domaine='logiciel';
                            $session='session';
                            $requete="SELECT def_pb,descpt_pb FROM `ticket` WHERE cat_pb='".$catégorie."' and s_dom_pb='".$ss_domaine."' EXISTS (SELECT * FROM `intervention` WHERE intervention.Num_ticket=ticket.Num_ticket);";
                            $resultat = mysql_query($requete, $connexion) or exit(mysql_error() . "<br/>$requete");

                            dsl je t'ai embêté avec moi :p
                            1. Pourquoi tu sélectionnes deux bases de données ? Alors que tu n'as besoin que de deux tables qui devraient être dans la même base ! Je pense que tu ferais bien de revoir ton schéma, il ne m'a pas l'air très cohérent...
                          2. extrait du man mysql_select_db
                            Sélectionne une base de données MySQL sur le serveur associé avec le paramètre link_identifier .
                            Chaque appel à la fonction mysql_query() sera exécutée sur la base de données active.


                            dans ton cas la bdd active est "intervention" or tu cherche dans ticket ...
                            essaye d'inverser
                            mysql_select_db('ticket', $connexion) or exit(mysql_error());
                            mysql_select_db('intervention', $connexion) or exit(mysql_error()); 
                            1. mnt voila ce qu'il m'affiche :s:s :

                              You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXISTS (SELECT * FROM `intervention` WHERE intervention.Num_ticket=ticket.Num_ti' at line 1
                              SELECT def_pb,descpt_pb FROM `ticket` WHERE cat_pb='réparation' and s_dom_pb='logiciel' EXISTS (SELECT * FROM `intervention` WHERE intervention.Num_ticket=ticket.Num_ticket);
                              • 1
                              • 2