kostenloser Webspace werbefrei: lima-city


Alle Datensätze mit beliebigem Wert in Spalte auslesen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    esadat

    esadat hat kostenlosen Webspace.

    Hallo zusammen,

    für meine Datenbank möchte ich eine Funktion schreiben, in der ich verschiedene Werte einer Spalte aus der Datenbank auslesen kann. Darunter soll auch die Option "Alle Werte aus Spalte" zu finden sein. Der zu suchende Wert wird dann über Post und ein Formular an PHP zurückgegeben.

    Mit Sternchen * funktioniert es leider nicht :(

    So geht's leider nicht :(
    $wert='*';
    $anfrage=mysql_query("SELECT a,b,c,d FROM tabelle1 WHERE a='$wert' AND b='*' AND c=*");


    Gibt es ein Zeichen für beliebigen Inhalt?

    Keine Lösung ist, die Abfrage der Spalte mit beliebigen Wert weg zu lassen, da sonst kein spezieller Wert mehr gefiltert werden kann und zusammensetzen will die die Select-Anfrage auch nicht unbedingt.

    Das ist keine Alternative:
    $anfrage=mysql_query("SELECT a,b,c,d FROM tabelle1 WHERE b='c'");
    [/code]

    Sorry für die Anfängerfrage ;)
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Wie wärs so:
    $selecta = isset($a) ? 'a = \'' . mysql_real_escape_string($a) . '\'' : '1';
    $selectb = isset($b) ? 'b = \'' . mysql_real_escape_string($b) . '\'' : '1';
    $selectc = isset($c) ? 'c = \'' . mysql_real_escape_string($c) . '\'' : '1';
    $selectd = isset($d) ? 'd = \'' . mysql_real_escape_string($d) . '\'' : '1';
    
    $query = "SELECT a,b,c,d FROM tabelle WHERE $selecta AND $selectb AND $selectc AND $selectd";
    
    echo($query);
    Wenn eine der Variablen gesetzt ist wird sie beim SELECT berücksichtigt, sonst nicht.
  4. wieso nicht die Select-Abrfage zusammensetzen ?!?

    Wenn $wert = '*'; dann alles abfragen ... sonst mit Bedingung ...

    if ($wert == '*') { 
      $sql = "SELECT a,b,c,d FROM tabelle1"; // alles 
    }
    else { 
      $sql = "SELECT a,b,c,d FROM tabelle1 WHERE a ='".$wert."' OR b ='".$wert."' OR c ='".$wert."'";
    }
    
    $abfrage = mysql_query($sql);


    und bist Du sicher, dass Du AND als weitere Bedingungen willst,
    dann kommen nur Treffer, wenn der gesuchte Wert in allen Spalten gleich ist
    und solche Spalten würden keinen Sinn machen, daher wohl eher OR (oder)
    also Treffer, wenn in mind. einem der Felder der Wert genau gleich ist

    Wenn es sich um Teil-Strings-handelt, die Du Suchen willst, dann geht das mit LIKE
    ... WHERE a LIKE '%".$wert."%'  ...


    Info zu LIKE siehe hier: http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.html

    oder was genau hast Du vor?

  5. Autor dieses Themas

    esadat

    esadat hat kostenlosen Webspace.

    @hackyourlife:

    Danke für den Ansatz, aber sofern "a" leer ist, wird nichts angezeigt.

    @sportinfo:

    Ich habe mich vllt. falsch ausgedrückt:

    Ich will (ähnlich excel) Werte aus der Datenbank filtern, d.h. alle Datensätze anzeigen, die den Wert a in Spalte sa, den Wert b in Spalte sb, den Wert c in Spalte sc und den Wert d in Spalte sd haben.

    Dabei gebe ich eine Auswahl über die in den jeweiligen Spalten vorhandenen Werten zur Auswahl. Es soll aber auch möglich sein, auszuwählen, dass alle Werte in Spalte sa oder/und Spalte sb oder/und Spalte sc oder/und Spalte sd angezeigt werden.

    Das heißt, ich kann auswählen, welche Datensätze ich anzeigen will, dabei kann aber muss nicht jeder Wert einen bestimmten Wert haben. Es kann auch sein, dass ein, zwei, drei oder alle Spalten mit allen Inhalten ausgegeben werden sollen.

    Beispiel:
    Zeig mir alle Datensätze an, die den Wert a=1 und d=1 haben. Bei Spalten b und c ist der Wert egal.

    Da es hier bei 10 Spalten unzählige Variationsmöglichkeiten gibt, brauche ich sowas wie ein Sternchen (*) in der Abfrage, so ne Art "Wert egal"-Symbol.
  6. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    esadat schrieb:
    @hackyourlife:

    Danke für den Ansatz, aber sofern "a" leer ist, wird nichts angezeigt.
    Fehlermeldungen aktiviert? Hast du dir die $query ausgeben lassen und sie stimmt? Ist die Datenbankverbindung schon vor dem Code geöffnet?
    Mein Ansatz nimmt die a,b,c,d dann, wenn $a,$b,$c und/oder $d gesetzt sind.
  7. Autor dieses Themas

    esadat

    esadat hat kostenlosen Webspace.

    $code='';
    $selecta = isset($code) ? 'code = \'' . mysql_real_escape_string($code) . '\'' : '1';
    echo('<a style="position:absolute;top:150px;left:0px;">SELECTA: '.$selecta.'</a>');


    ergibt den Wert:
    SELECTA:code = ''

    Da jedoch kein Datensatz in der Spalte code leer ist, wird nichts angezeigt.

    Aber der Ansatz war super!

    Versuche das grade mal mit "<>' ' " wenn $code leer ist. Dann werden alle Datensätze angezeigt. Wenn $code nicht leer ist, ist ein bestimmter Datensatz zu finden also "=".

    Voll blöd, dass es keinen "egal"-Wert gibt.
  8. hackyourlife

    Moderator Kostenloser Webspace von hackyourlife

    hackyourlife hat kostenlosen Webspace.

    Du hast es schon fast verstanden... ersetz doch
    isset($code)
    durch
    ($code != '')
    und alles funktioniert so wie es soll... also nach der Korrektur wird wenn kein code angegeben wird er auch beim select nicht berücksichtigt.

    Beitrag zuletzt geändert: 28.6.2012 20:47:12 von hackyourlife
  9. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!