+ Antworten
Ergebnis 1 bis 2 von 2

Thema: search experimente, preg_replace

  1. #1
    Wohnt hier
    Registriert seit
    17.06.2005
    Beiträge
    2.136
    Bedankte sich
    81
    Erhielt 380 Danksagungen
    in 331 Beiträgen

    Standard search experimente, preg_replace

    Ich wage mich nun mehr in den php Abgründe von Joomla. Nun bin ich der Newbie.
    Da ich Jcal um einige Felder erweitert habe, versuche ich ein extra Suchmodul zu schreiben, welches eine Dropdownliste und drei Inputfelder beinhalten soll.

    Sinn der Sache ist, dass eine detailliertere Suche nach Event möglich sein soll.
    Sicherheitsproblem wäre ggf wohl die freien INputfelder. Seltsamerweise funktioniert dieses preg_replace nicht. Es soll nur Buchstaben erlaubt sein.

    $aartist = preg_replace("/[^A-Z a-z]/", "",$aartist);

    während ereg_replace seine "Dienste" tut, nur möchte ich nicht mehrere ereg_replace fuer ein Inputfeld erzeugen

    Eine fertige bzw. dokumentierte Funktion habe ich leider nicht entdeckt, die dies es abdeckt.
    Dies sollte jeder zuerst lesen, bevor er was fragt:
    SUCHEN-LESEN-FRAGEN

  2. #2
    Wohnt hier
    Registriert seit
    17.06.2005
    Beiträge
    2.136
    Bedankte sich
    81
    Erhielt 380 Danksagungen
    in 331 Beiträgen

    Standard

    mhh, nun geht auch das ereg_replace nicht ...
    momentan ist nur für die Dropdownliste ein all bzw any Auswahl . Das sollte nach jedem Feld sein. Hier muss ich auch noch überlegen, wie man das eleganter lösen kann um dann später den query zu erstellen, welcher auch momentan nur halbfertig da steht.
    Die Möglichkeit die Dliste über mosHTML::makeOption zu erstellen, wäre auch nicht viel kürzer und mir dann zu unübersichtlich.

    hier die Bastelbaustelle, fuer Baustellenhelfer ;-) :
    Code:
    // no direct access
    defined( '_VALID_MOS' ) or die( 'Restricted access' );
    
    
    // Genre
    /*$genre=array(
          mosHTML::makeOption( '*', '*' ),
          mosHTML::makeOption( 'Fotografie', 'Fotografie' ),
    			mosHTML::makeOption( 'Malerei', 'Malerei' ),
    			mosHTML::makeOption( 'Zeichnungen', 'Zeichnungen' ),
    			mosHTML::makeOption( 'Skulpturen', 'Skulpturen' ),
    			mosHTML::makeOption( 'elektr. Kunst', 'elektr. Kunst' ),
    			mosHTML::makeOption( 'Aktionskunst', 'Aktionskunst' ),
    			mosHTML::makeOption( 'Video', 'Video' ),
    			mosHTML::makeOption( 'Vermischt', 'Vermischt' )
    );
    
    $selected = '*';//an array of objects or a string/int/mixed
    $lists = array();
    $lists['aobjekt']     = mosHTML::selectList( $genre, 'aobjekt', 'class="inputbox"', 'value', 'text', $selected );
    echo $lists['aobjekt']; */
    //*** 
    echo <<< HTML
          <form action="<?php echo $PHP_SELF?>" " method="post">
                                <select name="aobjekt" class='listbox' >
                                        <option  value=NULL>Genre Auswahl</option>
                                        <option  value="Fotografie">Fotografie</option>
                                        <option  value="Malerei">Malerei</option>
                                        <option  value="Zeichnungen">Zeichnungen</option>
                                        <option  value="Skulpturen">Skulpturen</option>
                                        <option  value="Video">Video</option>
                                        <option  value="elektr. Kunst">elektr. Kunst</option>
                                        <option  value="Aktionskunst">Aktionskunst</option>                                    
                                        <option  value="Verschiedenes">Verschiedenes</option>                                    
                                </select>                           
                       
    HTML;
    //
    $test=$test-> aobjekt;
    echo '<br /><br />';
    $searchphrases = array();
    
    	$phrase = new stdClass();
    	$phrase->value 		= 'any';
    	$phrase->text 		= 'oder';
    	$searchphrases[] 	= $phrase;
    
    	$phrase = new stdClass();
    	$phrase->value 		= 'all';
    	$phrase->text 		= 'alle';
    	$searchphrases[] 	= $phrase;
    
    	$lists['searchphrase']= mosHTML::radioList( $searchphrases, 'searchphrase', '', $searchphrase ); 
    echo $lists['searchphrase'].'<br />';
    
      
      $phrase 	= strval( mosGetParam( $_REQUEST, 'searchphrase', '' ) );
    	$aobjekt 	= strval( mosGetParam( $_REQUEST, 'aobjekt', '' ) );   
      
         
    echo <<< HTML
      <br />
      
      Künstler/Veranstalter:<br />
      <input type='text' name='aartist' class='textinput' value='' size='20' />
      <br />Location:<br />
      <input type='text' name='alocation' class='textinput' value='' size='20' />
      <br />Ort:<br />
      <input type='text' name='aort' class='textinput' size='20' />
      <input type="submit" />
        
    HTML;
    
      $suchvaria[1]= $_POST['aartist'];
      $suchvaria[2]= $_POST['alocation'];
      $suchvaria[3]= $_POST['aort'];
      
    
    
          for ($i=1;$i<4;$i++) {
          $suchvaria[i]= ereg_replace(';', '-', $suchvaria[i]);
          $suchvaria[i] = ereg_replace('%', '-', $suchvaria[i]);
          $suchvaria[i] = ereg_replace('/', '', $suchvaria[i]);
          $suchvaria[i] = ereg_replace(':', '', $suchvaria[i]);
          $suchvaria[i] = ereg_replace('$', '', $suchvaria[i]);
          
        };
       // testausgabe 
       echo <<< HTML
         </form>
    HTML;
        echo "<br>","Erg: ",$phrase,$suchvaria[3],$suchvaria[1], $test, $_POST['aobjekt'];
    
    
    // DB Abfrage
    if (strlen($alocation) >= 3) {
        $day_pattern = sprintf("%04d%02d%02d",$today['year'],$today['month'],1); // day pattern: 20041231 for 'December 31, 2004'
    	  $query = "SELECT extid,title,e.description,e.recur_type,url,cat,cat_name,day,month,year, color,aartist,aort,alocation,aobjekt FROM ".$CONFIG_EXT['TABLE_EVENTS']." AS e LEFT JOIN ".$CONFIG_EXT['TABLE_CATEGORIES']." AS c ON e.cat=c.cat_id ";
    	  $query .= "WHERE (aartist Like '%$aartist%' OR aort Like '%$aort%' OR alocation Like '%$alocation%' OR aobjekt Like '%$aobjek%') AND c.published = '1' AND approved = '1' ";
    	  $query .= "AND (DATE_FORMAT(e.start_date,'%Y%m%d') >= $day_pattern OR DATE_FORMAT(e.end_date,'%Y%m%d') >= $day_pattern OR DATE_FORMAT(e.recur_until,'%Y%m%d') >= $day_pattern) ";
    	  $query .= "ORDER BY year ASC, month ASC, day ASC";
    	
    	  $result = extcal_db_query($query);
    }
    ?>
    Dies sollte jeder zuerst lesen, bevor er was fragt:
    SUCHEN-LESEN-FRAGEN

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein