[PHP] Nur Abfrage bestimmter Werte in einer Datenbank

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Bacardi Joe, 17. Oktober 2009 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 17. Oktober 2009
    Nur Abfrage bestimmter Werte in einer Datenbank

    Hallo,

    ich muss als erstes sagen, dass ich nicht sonderlich viel Ahnung von PHP und mySQL hab... Bisher steht folgendes:

    PHP:
    <table>
    <?php 
        
    include( '_config.php' );
        
    $tablebg  0 ;
        
    $events mysql_query ( "SELECT event, date, category FROM froeth_calender ORDER BY date ASC" ) or die( mysql_error ());
        while(
    $row  mysql_fetch_object ( $events )){ 
            echo 
    "<tr" ;
            if (
    $tablebg % ==  0 ) echo  " bgcolor='#C0C0C0'" ;
            echo 
    "><td>" . strftime ( "%d.%m.%Y" , strtotime ( $row -> date )). "</td><td>" . strftime ( "%H:%M Uhr" , strtotime ( $row -> date )). "</td><td>" . $row -> event . "</td></tr>" ;
            
    $tablebg ++;
        } 
    ?>
    </table>
    Schaut dann im Resultat so aus: 17.10.2009 18:00 Uhr Testeintrag Gruppe XY

    Ziel ist es jetzt aus einem Post/Get (am besten beides) also vermutlich mit $_GET oder $_POST den "namen von der category aus der url auszulesen und dann nur die passenden anzuzeigen. In der Datenbank sind die category mit werten von 1 bis 7 nummeriert. Das Script müsste jetzt also schaun was abgefragt werden soll, in der url steht dann sowas wie ev=1&ak=1&ju=0 stehen und der müsste dann nur das anzeigen wo die 1 steht. Problem ist nur dass auch die Nummern in der Datenbank in Verbindung mit dem Namen in der URL und dem wert darin gebracht werden müssen.

    Hoffe ihr könnt mir da unter die Arme greifen.

    Grüße
    Bacardi Joe
     
  2. 17. Oktober 2009
    AW: Nur Abfrage bestimmter Werte in einer Datenbank

    PHP:
    $cat  intval ( $_GET [ 'cat' ]);

    $events mysql_query ( "SELECT event, date, category FROM froeth_calender" . ( ( $cat )?( "WHERE cat='" . $cat . "'" ):( "" ) ) . " ORDER BY date ASC" ) or die( mysql_error ());
     
  3. 17. Oktober 2009
    AW: Nur Abfrage bestimmter Werte in einer Datenbank

    Naja aber so geht doch wieder nur 1 cat oder? Problem ist ja dass ich mehrere cats rausziehn möchte...
     
  4. 17. Oktober 2009
    AW: Nur Abfrage bestimmter Werte in einer Datenbank

    Link könnte so aussehen http://www.xyz.de/index.php&cat=1,2,3,4,5,6,7

    PHP:
    $cats  explode ( ',' , $_GET [ 'cat' ]);
    $filter  "WHERE cat IN (" . implode ( ',' , intval ( $cats )). ")" ;
    $events mysql_query ( "SELECT event, date, category FROM froeth_calender" . ( (!empty( $filter )) ?  $filter  : ""  ) . " ORDER BY date ASC" ) or die( mysql_error ());

    So würde ich das irgendwie machen. guck nochmal rüber, gibt bestimmt bessere lösungen

    Edit: ok, ich sehe gerade das du pro Kategorie eine GET Variable füllst und ne 1 machst, wenn du die ausgeben willst, oder?
     
  5. 17. Oktober 2009
    AW: Nur Abfrage bestimmter Werte in einer Datenbank

    An sich bin ich da flexibel... Deine Form der abfrage würde auch passen, wahrscheinlich sogar schöner Problem ist nur, dass bei deiner Abfrage nen Error kommt
    PHP:
        $cats  explode ( ',' , $_GET [ 'cat' ]);
        
    $filter  " WHERE category IN ('" . implode ( ',' , intval ( $cats )). "')" ;
        
    $events mysql_query ( "SELECT event, date, category FROM froeth_calender" . ( (!empty( $filter )) ?  $filter  : ""  ) . " ORDER BY date ASC" ) or die( mysql_error ());      
    //Edit: Aus deinem cat hab ich erstmal category gemacht weil der Wert in der Datenbank so heist und der mysql befehl ist IN('') gibt jetzt zwar kein Fehler mehr aus aber die anzeige ist auch blank
     
  6. 17. Oktober 2009
    AW: Nur Abfrage bestimmter Werte in einer Datenbank

    warte ich teste das mal lokal

    EDIT:

    PHP:
     $cats  explode ( ',' , $_GET [ 'cat' ]);
     
    $filter  " WHERE category IN ('" . implode ( ',' , $cats ). "')" ;
     
    $events mysql_query ( "SELECT event, date, category FROM froeth_calender" . ( (!empty( $filter )) ?  $filter  : ""  ) . " ORDER BY date ASC" ) or die( mysql_error ());  
    Lass mal intval raus beim implode. Das geht nicht ^^ Jetzt musste das nur richtig escapen
     
  7. 17. Oktober 2009
    AW: Nur Abfrage bestimmter Werte in einer Datenbank

    Ich vermute der Teil mit escape ist der Grund warum nur immer ein Eintrag angezeigt wird? Trotz Trennung durch , geht das Script nur mit einem Wert in der URL

    /Edit selber gefixt: IN() war doch richtig
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.