AND - OR - Mischung bei der MySQL Abfrage

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

  • kannkeinphp
    antwortet
    ich ziehe meine Frage zurück :-)

    hab den Fehler gefunden...

    Vielen Dank für eure Bemühungen und Antworte...

    Gruß, Kannkeinphp

    Einen Kommentar schreiben:


  • TobiaZ
    antwortet
    Warum sollte das switch() ein Problem machen? Normale Blätterfunktionen setzten nur in der SQL-Query an und berühren das eigentliche/bestehende PHP-Script eigentlich kaum bis gar nicht.

    PS: Nein, Programmieren besteht nicht nur aus Copy&Paste, die logik dahinter sollte man zumindest nachvollziehen können um kleine Fehler zu finden.

    Einen Kommentar schreiben:


  • kannkeinphp
    antwortet
    Vielen Dank...

    Also dass es funktioniert hat, war Zufall....

    Es hat mit Klammern scön geklappt.

    ich gebe meine ergenbiusse wie folgt aus:

    while ($kontakt = mysql_fetch_object($result)) {
    $k_art = $kontakt -> art;
    $k_id = $kontakt -> id;
    $k_br = $kontakt -> branche_id;
    switch ($k_art) {
    case 1: box1($k_id, $k_br); break;
    case 2: box2($k_id, $k_br); break;
    case 3: box3($k_id, $k_br); break;
    } // switch
    } // while

    Ich möchte die erbenisse seitenweise ausgeben. jeweisl 5 kontakte

    box1, 2, 3 --> ausgabe

    Google hat mir viele blätterfunktionen gefunden aber die Funktionieren hier nicht....

    macht das CASE da problem?

    Einen Kommentar schreiben:


  • H2O
    antwortet
    Und wenn du mit Wildcards arbeitest, kannst du nicht mit '=' vergelichen, sondern musst 'LIKE' benutzen, in deinem Bespiel also etwa:
    Code:
    SELECT 
    	attribut_1,
    	attribut_2,
    	...
    FROM 
    	table 
    WHERE 
    	(branche LIKE '%$text%' OR name LIKE '%$text%')
      AND 
    	plz LIKE '%$plztext%' ....

    Einen Kommentar schreiben:


  • PHP-Desaster
    antwortet
    Re: AND - OR - Mischung bei der MySQL Abfrage

    Kann man da auch etwas in klammern setzen?
    Oftmals musst du sowas in Klammern setzen um die Bedingung richtig zu definieren. Die Reihenfolge, wie Operatoren ausgewertet werden ist dabei entscheidend. Das ist mit der Punkt-vor-Strich-Regel zu vergleichen. Die Reihenfolge der Operatoren in MySQL kannst du dir im Manual ansehen. Wie du siehst, bindet der AND-Operator stärker als der OR-Operator.
    Code:
    foo=1 or bar=2 and foo=3 or bar=3
    ist dabei nicht das gleiche wie
    Code:
    ( foo=1 or bar=2 ) and ( foo=3 or bar=3 )
    da die Klammerung die Operatorenreihenfolge ändert ( 1+2*3 ist auch nicht das gleiche wie (1+2)*3 ).

    Hoffe, das macht es etwas klarer

    Einen Kommentar schreiben:


  • Kropff
    antwortet
    bei AND und OR sollte man je nach logik auf jeden fall mit klammern arbeiten.

    WHERE bla='blubb' AND (laber='sülz' OR schwall='jodelblah')

    ist was anderes als

    WHERE bla='blubb' AND laber='sülz' OR schwall='jodelblah'

    gruß
    peter

    Einen Kommentar schreiben:


  • kannkeinphp
    hat ein Thema erstellt AND - OR - Mischung bei der MySQL Abfrage.

    AND - OR - Mischung bei der MySQL Abfrage

    Hallo,

    sagt bitte nicht gleich "teste es selbst." Das hab ich schon :-)

    mein Problem:

    ich habe einen kleinen Kontaktscript geschrieben. Funktioniert aber halbwegs richtig.

    Frage: Kann / darf / soll man "AND" und "OR" mischen?

    Beispiel: SELECT * FROM table WHERE branche = '%".$text."%' OR name = '%".$text."%' AND plz = '%".$plztext."%' ....

    Das funktioniert manchmal richtig manchmal falsch...
    Ist es zufall, dass es manchmall funktioniert?

    Kann man da auch etwas in klammern setzen? Wie zumbveispiel:

    ... (brnache = $text OR name = $text ) OR ( bundesland$ = text OR stadt = $text ) ...

    Danke
Lädt...
X