[PHP] array abfrage per if *ABGESCHLOSSEN*

King_Markus

Well-known member
ID: 66751
L
24 November 2006
264
12
hallo,

hab mal wieder ne kleine frage wo ich nichts gefunden habe.

hab nen array erstellt mit ids wie folgt:
PHP:
    $query = mysql_query("SELECT * FROM `xxx` WHERE `betreff`LIKE'%$suche_wort%' OR `text`LIKE'%$suche_wort%' ORDER BY `xx_id`");
         $in_such_ergebnis = array();
    while($myrow = mysql_fetch_array($query)) {
if($myrow[2] NOT IN $in_such_ergebnis_a){ //bei mysql funktioniert es mit NOT IN wie funktioniert es bei php?
              $in_such_ergebnis[] = $myrow[2];
              $in_such_ergebnis_a = implode(',', $in_such_ergebnis); 
}
    }
Bei MySQL funktioniert es mit NOT IN nur wie es bei php geht weiß ich nicht.
nur wenn die id noch nicht im array sein sollte soll es die id hinzufügen.

danke euch im voraus

mfg markus
 
Zuletzt bearbeitet:
PHP:
    $querya = mysql_query("SELECT * FROM `xxx` WHERE `betreff`LIKE'%$suche_wort%' OR `text`LIKE'%$suche_wort%' ORDER BY `xx_id`");
         $in_such_ergebnis = array();
    while($myrowa = mysql_fetch_array($querya)) {
            $fr_be_ida=$myrowa[2];
        if(in_array($fr_be_ida, $in_such_ergebnis_a)){
              $in_such_ergebnis[] = $fr_be_ida;
            $in_such_ergebnis_a = implode(',', $in_such_ergebnis); 
            echo "$fr_be_ida <br>";
        }
    }
jetzt hab ich es wie folgt.
bringt mir aber folgende fehlermeldung:
Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/such.php on line 54
 
Naja, Du benutzst in_array() jetzt ja auch, um in einem String zu suchen. Vermutlich geht's schon, wenn Du das "_a" bei der zweiten Variablen wegnimmst.
 
PHP:
    $querya = mysql_query("SELECT * FROM `xxx` WHERE `betreff`LIKE'%mo%' OR `text`LIKE'%mo%' ORDER BY `xx_id`");
         $in_such_ergebnis = array();
    while($myrowa = mysql_fetch_array($querya)) {
            $fr_be_ida=$myrowa[2];
        if(!in_array($fr_be_ida, $in_such_ergebnis)){
            $in_such_ergebnis[] = $fr_be_ida;
            $in_such_ergebnis = implode(',', $in_such_ergebnis); 
            echo "$fr_be_ida <br>";
        }
    }

er gibt mir jetzt nur noch die erste id aus aber trotzdem kommt folgender fehler!

Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/suchea.php on line 8

Fatal error: [] operator not supported for strings in xxx/suchea.php on line 9


wenn ich es so mache:
PHP:
    $querya = mysql_query("SELECT * FROM `xxx` WHERE `betreff`LIKE'%mo%' OR `text`LIKE'%mo%' ORDER BY `xx_id`");
         $in_such_ergebnis = array();
    while($myrowa = mysql_fetch_array($querya)) {
            $fr_be_ida=$myrowa[2];
        if(!in_array($fr_be_ida, $in_such_ergebnis_a)){
            $in_such_ergebnis[] = $fr_be_ida;
            $in_such_ergebnis_a = implode(',', $in_such_ergebnis); 
            echo "$fr_be_ida <br>";
        }
    }

jetzt gibt er mir alle ids aus aber trotzdem kommt folgender fehler!

Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/suchea.php on line 8
2

Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/suchea.php on line 8
8

Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/suchea.php on line 8
8

Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/suchea.php on line 8
8

Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/suchea.php on line 8
8

Warning: in_array() [function.in-array]: Wrong datatype for second argument in xxx/suchea.php on line 8
8
 
Du bist noch nicht wirklich schlüssig, ob Du mit String oder Array arbeiten willst oder? ;)

In beiden von Dir geposteten Codes kommst Du damit durcheinander. Im ersten Code überschreibst Du das Array, das entstehen soll, durch den String, der eh besser am Ende der Schleife erzeugt werden sollte. Beim zweiten Code arbeitest Du bei in_array() immer noch mit dem String als Übergabe, nicht mi dem Array.

Ich habe Deinen Code mal so angepasst, dass er a) leichter zu lesen (und somit zu verstehen) ist und b) funktionieren dürfte (am Ende kommen die gleichen Variablen raus).
PHP:
    $result = mysql_query("...");
    $array = array();
    while($row = mysql_fetch_array($result))
    {
      $id=$row[2];
      if(!in_array($id, $array))
      {
        array_push($array, $id);
        printf('%s<br/>', $id);
      }
    }
    $in_such_ergebnis = $array;
    $in_such_ergebnis_a = implode(',', $array);
 
jetzt hab ich es endlich kapiert!

so funktionierts. ich danke dir tleilax!
PHP:
    $query = mysql_query("SELECT * FROM `xxx` WHERE `betreff`LIKE'%mo%' OR `text`LIKE'%mo%' ORDER BY `xx_id`");
         $in_such = array();
    while($myrow = mysql_fetch_array($query)) {
            $xx_ida=$myrow[2];
        if(!in_array($xx_ida, $in_such)){
            array_push($in_such, $xx_ida);
            echo "$xx_ida <br>";
        }
    }