Peter_Beater: Keiner versteht mich, Problem mit Variablen

Hallo,
ich habe ein Eingabeformular, wo ich unterschiedliche Werte einer Variable an ein Suchscript weitergebe.
Ich duchrsuche eine csv-Datei. Der erste Spaltenkopf hat als Überschrift Firma, ich habe in dieser Spalte 5 Firmen mit gleichem Namen aber unterschiedlichen Zusätzen, GmbH, Ag, OhG, etc.
Wenn Ich nun in meinem Formular nur als WErt den Firmennamen ohne Zusatz weitergebe, dann kriege ich gar kein Ergebnis, wenn ich aber als Wert den firmennamen mit Zusatz weitergebe, dann kriege ich ein Ergebnis, ich möchte aber, das alle firmen mit dem gleichen Namen ausgegeben werden, egal welchen zusatz Sie haben,
versteht ihr das?

  1. Moin!

    Wenn Ich nun in meinem Formular nur als WErt den Firmennamen ohne Zusatz weitergebe, dann kriege ich gar kein Ergebnis, wenn ich aber als Wert den firmennamen mit Zusatz weitergebe, dann kriege ich ein Ergebnis, ich möchte aber, das alle firmen mit dem gleichen Namen ausgegeben werden, egal welchen zusatz Sie haben,
    versteht ihr das?

    Wie findest du denn die Einträge?

    Wenn du so fragst:
    if ($eingabeausformular == $wertauscsv) ...
    dann wird das nur Erfolg bei absoluter Identität haben.

    Wenn du etwas toleranter prüfen willst, ob der gesuchte String in der Firmenbezeichnung nur enthalten ist, dann solltest du mal die Funktionen strstr(), stristr() und ereg() angucken.

    - Sven Rautenberg

    1. Yo!

      Hach, was bin ich wieder informativ...

      Wenn du etwas toleranter prüfen willst, ob der gesuchte String in der Firmenbezeichnung nur enthalten ist, dann solltest du mal die Funktionen strstr(), stristr() und ereg() angucken.

      http://www.php.net/manual/de/function.strstr.php
      http://www.php.net/manual/de/function.stristr.php
      http://www.php.net/manual/de/function.ereg.php
      http://www.php.net/manual/de/function.eregi.php

      - Sven Rautenberg

      1. Yo!

        Hach, was bin ich wieder informativ...

        Wenn du etwas toleranter prüfen willst, ob der gesuchte String in der Firmenbezeichnung nur enthalten ist, dann solltest du mal die Funktionen strstr(), stristr() und ereg() angucken.

        http://www.php.net/manual/de/function.strstr.php
        http://www.php.net/manual/de/function.stristr.php
        http://www.php.net/manual/de/function.ereg.php
        http://www.php.net/manual/de/function.eregi.php

        • Sven Rautenberg

        danke für eure mühe, ist ja ganz nett,
        aber ich verstehe nur bahnhof,
        gibt es nicht die Möglicheit, wenn ich einen bestimmten wert unter firma zum Beispiel den Namen der Firma weitergebe und dann in meinem suchscripot steht
        if firma gleich name der firma duchsuche alles wo name der firma vorkommt:
        select name="Firma">
            <option value="alle">Alle</option>
            <option value="A">A</option>
            <option value="B">B</option>
            <option value="C">C</option>
            ...
        PLZ: <input type="text" name="PLZ" value="" maxlength="5" size="5" /><br />
        <input type="submit" name="submit_button" value="Suchen" />

        ausgabescript=
        <?php
        $row = 1;
        $fp = fopen ("firma.csv","r");
        $max_diff = 1000;
        $stack_of_results=array();
        while ($data = fgetcsv($fp, 1000, ";")) {
        //Nur bei einer bestimmten Vertriebslinie nachschauen
        if ($data[0] != $firma) continue;
         $diff=abs($data[2] - $PLZ) ;
         if ($diff < $max_diff) {
          $key=abs($data[2] - $PLZ);
          $stack_of_results[$key][]=$data;
        }
        }
        ksort($stack_of_results);
        $output = array_slice ($stack_of_results, 0, 5);
        $c=0;
        foreach($output as $v){
          $c++;
         foreach($v as $one){
        ...
        habe mir von vollpfosten alles abgekupfert, klappt soweit ganz gut, das aber nicht

        1. Moin!

          if ($data[0] != $firma) continue;

          Genau das meinte ich. Hier vergleichst du DIREKT. Wenn in $data[0] nicht exakt der gleich String drinsteht wie in $firma, dann wird die Schleife hier schon abgebrochen.

          Wenn also in $data[0] "Beispiel AG" drinsteht, in $firma nur "Beispiel", dann findest du so nichts.

          Mit strstr() und stristr() kannst du prüfen, ob $firma in der Firmenbezeichnung $data[0] _enthalten_ ist.

          if (!stristr($firma, $data[0])) continue;

          - Sven Rautenberg

          1. Moin!

            if ($data[0] != $firma) continue;

            Genau das meinte ich. Hier vergleichst du DIREKT. Wenn in $data[0] nicht exakt der gleich String drinsteht wie in $firma, dann wird die Schleife hier schon abgebrochen.

            Wenn also in $data[0] "Beispiel AG" drinsteht, in $firma nur "Beispiel", dann findest du so nichts.

            Mit strstr() und stristr() kannst du prüfen, ob $firma in der Firmenbezeichnung $data[0] _enthalten_ ist.

            if (!stristr($firma, $data[0])) continue;

            • Sven Rautenberg

            funktioniert leider nicht,
            kriege immer noch keinen wert ausgegeben
            <?php
            $row = 1;
            $fp = fopen ("filialen.csv","r");
            $max_diff = 1000;
            $stack_of_results=array();
            while ($data = fgetcsv($fp, 1000, ";")) {
            //Nur bei einer bestimmten Vertriebslinie nachschauen
            if (!stristr($firma, $data[0])) continue;
             $diff=abs($data[2] - $PLZ) ;
             if ($diff < $max_diff) {
              $key=abs($data[2] - $PLZ);
              $stack_of_results[$key][]=$data;
            }
            }
            ksort($stack_of_results);
            $output = array_slice ($stack_of_results, 0, 5);
            $c=0;
            foreach($output as $v){
              $c++;
             foreach($v as $one){
            ....
            ist doch so richtig eingefügt, oder?

            1. Juhu, funktioniert schon fast, habe $firma und $data getauscht, dann gings,
              aber wie kriege ich es jetzt hin, wenn ich zum beispiel alles durchsuchen will, ohne vorher eine firma einzugeben, ich gebe nur eine PLZ ein und habe als Wert z.B. alle,
              dann kriege ich noch kein ergebnis
              und ich würde gerne die möglichketi haben, falls mal keine ergebnis vorhanden ist, das er mir dann sagt, es gibt keine firma in dem plz-bereich.
              gruß
              peter_beater

              Moin!

              if ($data[0] != $firma) continue;

              Genau das meinte ich. Hier vergleichst du DIREKT. Wenn in $data[0] nicht exakt der gleich String drinsteht wie in $firma, dann wird die Schleife hier schon abgebrochen.

              Wenn also in $data[0] "Beispiel AG" drinsteht, in $firma nur "Beispiel", dann findest du so nichts.

              Mit strstr() und stristr() kannst du prüfen, ob $firma in der Firmenbezeichnung $data[0] _enthalten_ ist.

              if (!stristr($firma, $data[0])) continue;

              • Sven Rautenberg
                funktioniert leider nicht,
                kriege immer noch keinen wert ausgegeben
                <?php
                $row = 1;
                $fp = fopen ("filialen.csv","r");
                $max_diff = 1000;
                $stack_of_results=array();
                while ($data = fgetcsv($fp, 1000, ";")) {
                //Nur bei einer bestimmten Vertriebslinie nachschauen
                if (!stristr($firma, $data[0])) continue;
                $diff=abs($data[2] - $PLZ) ;
                if ($diff < $max_diff) {
                  $key=abs($data[2] - $PLZ);
                  $stack_of_results[$key][]=$data;
                }
                }
                ksort($stack_of_results);
                $output = array_slice ($stack_of_results, 0, 5);
                $c=0;
                foreach($output as $v){
                  $c++;
                foreach($v as $one){
                ....
                ist doch so richtig eingefügt, oder?
              1. Hallo,

                was spricht dagegen, dass die Eingabe "alle" abgefangen und anders behandelt wird?
                Zum Abfangen einer ergebnislosen Abfrage:
                Einfach bei der erfolgreichen Suche einen Wert $treffer auf true setzen. Ist nach der while-Schleife $treffer!=true echo "Kein Treffer".

                Grüße aus Würzburg
                Julian

                1. ich will ja kein schmarotzer sein,
                  aber wie sieht das denn hier aus:
                  <?php
                  $row = 1;
                  $fp = fopen ("filialen.csv","r");
                  $max_diff = 1000;
                  $stack_of_results=array();
                  while ($data = fgetcsv($fp, 1000, ";")) {
                  //Nur bei einer bestimmten Vertriebslinie nachschauen
                  if (!stristr($data[0], $Vertriebsl)) continue;
                   $diff=abs($data[2] - $PLZ) ;
                   if ($diff < $max_diff) {
                    $key=abs($data[2] - $PLZ);
                    $stack_of_results[$key][]=$data;
                  }
                  }
                  ksort($stack_of_results);
                  $output = array_slice ($stack_of_results, 0, 5);
                  $c=0;
                  foreach($output as $v){
                    $c++;
                   foreach($v as $one){
                  echo "<tr>";
                  ....

                  Hallo,

                  was spricht dagegen, dass die Eingabe "alle" abgefangen und anders behandelt wird?
                  Zum Abfangen einer ergebnislosen Abfrage:
                  Einfach bei der erfolgreichen Suche einen Wert $treffer auf true setzen. Ist nach der while-Schleife $treffer!=true echo "Kein Treffer".

                  Grüße aus Würzburg
                  Julian

  2. Hallo,

    Wenn Ich nun in meinem Formular nur als WErt den Firmennamen ohne Zusatz weitergebe, dann kriege ich gar kein Ergebnis, wenn ich aber als Wert den firmennamen mit Zusatz weitergebe, dann kriege ich ein Ergebnis, ich möchte aber, das alle firmen mit dem gleichen Namen ausgegeben werden, egal welchen zusatz Sie haben,
    versteht ihr das?

    Weiss nicht genau, ob ich es verstehe (vor allem den ersten Teil verstehe ich nicht - da scheinst du einen Programmierfehler bei der Stringverarbeitung zu machen). Wie auch immer - die einfachste Loesung schreint mir zu sein, in der CSV-Datei eine weitere Spalte hinzuzufuegen, naemlich fuer die Rechtsform der Firma. Dann kannst du im Script problemlos entscheiden, ob du nur den Wert des Firmennamens, oder beide Werte, also Firmenname und Rechtsform, weitergeben willst.

    viele Gruesse
      Stefan Muenz

    1. Hallo,

      Wenn Ich nun in meinem Formular nur als WErt den Firmennamen ohne Zusatz weitergebe, dann kriege ich gar kein Ergebnis, wenn ich aber als Wert den firmennamen mit Zusatz weitergebe, dann kriege ich ein Ergebnis, ich möchte aber, das alle firmen mit dem gleichen Namen ausgegeben werden, egal welchen zusatz Sie haben,
      versteht ihr das?

      Weiss nicht genau, ob ich es verstehe (vor allem den ersten Teil verstehe ich nicht - da scheinst du einen Programmierfehler bei der Stringverarbeitung zu machen). Wie auch immer - die einfachste Loesung schreint mir zu sein, in der CSV-Datei eine weitere Spalte hinzuzufuegen, naemlich fuer die Rechtsform der Firma. Dann kannst du im Script problemlos entscheiden, ob du nur den Wert des Firmennamens, oder beide Werte, also Firmenname und Rechtsform, weitergeben willst.

      viele Gruesse
        Stefan Muenz

      das wünscht der kunde leider nicht, er will nix verändern

  3. Hallo,

    ist äußerst schwer Dein Problem zu erraten ohne Dein Skript zu kennen.

    Warum sollte ich Quellcodes oder eine URL mit einem Beispiel angeben? (http://forum.de.selfhtml.org/faq/#Q-07)

    Grüße aus Würzburg
    Julian