suche erstellen, nur wie ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • suche erstellen, nur wie ?

    Hallo Ihr lieben...

    ich hab mal wieder ein Problem bei meinen ersten schritten mit PHP
    und hoffe, dass mir da jemand den richtigen Hinweis oder ansatz posten kann.

    Ich versuche grad in meinen internetshop eine Produktsuche einzufügen, jedoch
    scheitere ich schon gleich am anfang, wo ich das gwünschte keyword suchen soll.

    Denn ich habe eine Webseite mit multi-language-funktion, deren Texte in einer sprachdatei liegen ( de.php und en.php )
    und bestehen aus 3 array-gruppen:
    $lang[] = Texte der Webseite
    $obj_name[] = Produktname
    $obj_info[] = Produktbeschreibungen

    hier ein kurzer auszug der deutschen sprachdatei :


    <? $lang[1023] = "Starter Sets - Unterkat.3"; ?>
    <? $obj_name[1001] = "Produkt 1"; ?>
    <? $obj_info[1001] = "test-beschreibung Produkt 1"; ?>
    <? $obj_name[1002] = "Produkt 2"; ?>
    <? $obj_info[1002] = "test-beschreibung Produkt 2"; ?>

    ich muss erreichen, dass meine suche nur in den arrays $obj_name[] und $obj_info[] nachschaut....
    und suche ich zum Beispiel nach Produkt 1, dass ja vorhanden ist, dann brauch ich für die anzeigeausgabe die nummer des arrays.

    Meine beiden fragen wären daher :
    1. Wie lass ich suchen, damit er nur die 2 verschiedenen array-gruppen nach einem keyword durchsucht
    2. Wenn ich das keyword durch die suche gefunden habe, wie ermittle ich die dazugehörige array-nummer ?

    auch werden die suchenenden das keyword wohl meistrens kleinschreiben.... wie umgehe das Problem, wenn die keywörter in den sprachdateien nicht unbedingt kleingeschrieben sind ?

    ich dachte erst an zeilenweises durchsuchen, aber meinen Buch nach, wären reguläre ausdrücke wohl das richtige,
    aber mit denen hab ich noch nie gearbeitet und mein Buch gibt mir nicht genug hilfebBsp ´

    wäre super, wenn mir da jemand den richtigen anstoss geben könnte !

    i
    Zuletzt geändert von ways; 15.10.2005, 14:57.
    Coder never die, they just GOSUB without RETURN

    Mein System

  • #2
    Falsches Forum!

    Also ich sehe im Moment keine Andere Lösung als die beiden Arrays in einer Schleife durchzugehen.

    foreach beantwortet dir da alle weiteren Fragen.

    Bei ner Großen Produktdatenbank wärst du mit einer SQL-Tabelle sicher besser dran.

    Kommentar


    • #3
      könnte ich das auch so machen ?
      dann muss ich aber den code zweimal schreiben..
      einmal für obj_name und einmal für obj_info...
      oder kann ich das in einer abfrage kombinieren ?


      reset( $obj_name );
      while( list( $k, $v ) = each( $obj_name ) )
      {
      if( stristr( $v, $suchtext ) )
      {
      echo "Suchtext wurde in Objekt $k gefunden";
      }
      }
      Coder never die, they just GOSUB without RETURN

      Mein System

      Kommentar


      • #4
        schleifen verbinden, einträge zählen usw

        kann mir jemand nen Hinweis oder hilfestellung geben, wie ich diese beiden schleifen verbinde... bzw. deren ausgabe !?...
        und wie teile ich diese dann auf, um eine blätterfuntion einfügen zu können ?

        aufteilen und blättern kann ich bisher nur in verbindung mit sql_querys.... aber so mit schleifen leider nicht

        über Hilfe wü+rde ich mich rieisig freuen !!!!

        PHP-Code:

        reset
        $obj_name );
        while( list( 
        $k$v ) = each$obj_name ) )
        {
          if( 
        stristr$v$suchtext ) )
          {
            echo 
        "Suchtext wurde in obj_name $k gefunden<br>";
          } 
        }

        reset$obj_info );
        while( list( 
        $k$v ) = each$obj_info ) )
        {
          if( 
        stristr$v$suchtext ) )
          {
            echo 
        "Suchtext wurde in obj_Info $k gefunden";
          }

        Coder never die, they just GOSUB without RETURN

        Mein System

        Kommentar


        • #5
          die frage ist, wie die beiden arrays aussehen?
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            keine ahnung, dafür verrätst du zu wenig.

            while( list( ... ) = each( ... ) ) ist ein total veraltetes konstrukt. mit for-schleifen kommst du besser hin, wenn du die intervale richtig festlegst. foreach-schleifen sind da evtl. (aber nur u.u.) besser, wenn man mitzählt.

            Kommentar


            • #7
              Original geschrieben von Abraxax
              die frage ist, wie die beiden arrays aussehen?
              die liegen in einer datei (de.php)
              und das sieht so aus :

              <? $obj_name[1001] = "Produkt 1"; ?>
              <? $obj_info[1001] = "test-beschreibung Produkt 1"; ?>
              <? $obj_name[1002] = "Produkt 2"; ?>
              <? $obj_info[1002] = "test-beschreibung Produkt 2"; ?>
              Coder never die, they just GOSUB without RETURN

              Mein System

              Kommentar


              • #8
                Nur weil du an einer Stelle nicht sofort ne Antwort bekommst, brauchst du nicht woanders weiter machen...

                Gleiches Thema -> Gleicher Thread!

                Kommentar


                • #9
                  gleiches thema ? übergreifendes thema... schwarz ist ja auch nicht dunkelgrau
                  Coder never die, they just GOSUB without RETURN

                  Mein System

                  Kommentar


                  • #10
                    versuch nicht zu diskutieren!

                    könnte ich das auch so machen ?
                    dann muss ich aber den code zweimal schreiben..
                    einmal für obj_name und einmal für obj_info...
                    oder kann ich das in einer abfrage kombinieren ?
                    kann mir jemand nen Hinweis oder hilfestellung geben, wie ich diese beiden schleifen verbinde...
                    Läuft wohl eindeutig aufs selbe raus, oder bist du da anderer meinung? Danke!

                    Kommentar


                    • #11
                      Original geschrieben von ways
                      die liegen in einer datei (de.php)
                      und das sieht so aus :

                      <? $obj_name[1001] = "Produkt 1"; ?>
                      <? $obj_info[1001] = "test-beschreibung Produkt 1"; ?>
                      <? $obj_name[1002] = "Produkt 2"; ?>
                      <? $obj_info[1002] = "test-beschreibung Produkt 2"; ?>
                      mache eine foreach() auf das erste array. der index ist ja immer der gleiche. damit hast du deine lösung.

                      allerdings empfehle ich die ein array mit name und info pro produkt anzulegen. damit gehts dann viel einfacher und vor allem übersichtlicher!

                      PHP-Code:
                      <?php

                      $obj 
                      = array();
                      $obj[] = array('name' => 'produkt1''info' => 'info 1');
                      $obj[] = array('name' => 'produkt2''info' => 'info 2');
                      $obj[] = array('name' => 'produkt3''info' => 'info 3');

                      foreach ( 
                      $obj as $val )
                          echo 
                      $val['name'].' : '.$val['info'].'<br />';

                      // demoausgabe des arrays
                      print_r($obj);

                      ?>
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Original geschrieben von TobiaZ
                        versuch nicht zu diskutieren!

                        ich schlage dir mal vor, deine durch pc-bedingte soziale isolation zu beenden, unter Menschen zu gehen, und dann wirst du in Erfahrung bringen, dass Diskussion eine Grundlage der Demokratie ist.
                        dass weiß ich nach 30 jahren.

                        denn statt zu schlaumeiern, hättest du einfach meinen thread verbinden/verschieben können, ohne das zu kommentieren, wenn ich falsch vorgegangen bin........
                        was aber auch nur teilweise wahr ist, denn unter dem neuen thread hab ich antworten auf meinen zweiten frage-teil bekommen... im ersten nicht mehr !


                        nichts für ungut, wurde aber schon lange nicht mehr gesagt
                        ...wünsche allen einen schönen Tag...und viele Grüße aus Berlin,
                        Olli

                        ich anfänger werde mich dann wieder auf die freundlichen und helfenden Köpfe konzentrieren...sonst lerne ich ja mehr benimm-regeln, als php-funktionen
                        Coder never die, they just GOSUB without RETURN

                        Mein System

                        Kommentar


                        • #13
                          OffTopic:
                          ich schlage dir mal vor, deine durch pc-bedingte soziale isolation zu beenden, unter Menschen zu gehen, und dann wirst du in Erfahrung bringen, dass Diskussion eine Grundlage der Demokratie ist.
                          dass weiß ich nach 30 jahren.
                          Na, dann habe ich ja noch reichlich Zeit das schneller zu erkennen...
                          denn statt zu schlaumeiern, hättest du einfach meinen thread verbinden/verschieben können, ohne das zu kommentieren, wenn ich falsch vorgegangen bin........
                          Und du meinst, dass du es dann automatisch erkannt hättest? Dann frage ich mich, warum nicht gleich so?
                          was aber auch nur teilweise wahr ist, denn unter dem neuen thread hab ich antworten auf meinen zweiten frage-teil bekommen... im ersten nicht mehr !
                          Das ist beim besten willen keine Rechtfertigung!

                          Kommentar


                          • #14
                            Original geschrieben von Abraxax
                            mache eine foreach() auf das erste array. der index ist ja immer der gleiche. damit hast du deine lösung.

                            allerdings empfehle ich die ein array mit name und info pro produkt anzulegen. damit gehts dann viel einfacher und vor allem übersichtlicher!
                            Hallo Abraxax,

                            ich dachte auch erst, dass es besser wäre, allerdings weiß ich nicht, wie ich dann die doppeleinträge(ausgabe) verhindere...

                            denn wenn das suchwort im namen und info array unter der gleichen id vorkommt, dann wird beides ausgegeben


                            kann ich die ausgabe-datensätze auch aufteilen ? wegen des blätterns ?
                            Coder never die, they just GOSUB without RETURN

                            Mein System

                            Kommentar


                            • #15
                              Original geschrieben von ways
                              ich schlage dir mal vor, deine durch pc-bedingte soziale isolation zu beenden, unter Menschen zu gehen
                              Ich werde jetzt die deine beenden, und dir erlauben, das Wetter zu einem schönen Herbstspaziergang zu nutzen -> *close* & *trash*

                              Und das nächste mal versuchst du bitte zu posten, ohne dabei so ins persönliche zu gehen, vielen Dank.
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X