SM-Finder-Logo        
herz Karte Kalender Suche Bookmarks Experte FAQ

Module

Download

SMFinder_Query_getUID4CatsAtrsGeo

Wird verwendet von:
SMFinder_Query_analyzeSearch
SMFinder_Query_find
SMFinder_Query_getUID4CatsAtrsGeo

Keine Erläuterungen gefunden.

<?php /* published under GPL www.gnu.org/licenses/gpl.html */
function SMFinder_Query_getUID4CatsAtrsGeo($element,$cats,$atrs,$constraint,$lat_min,$lat_max,$lon_min,$lon_max,$firstpage,$limit){
  /* Die Suchmaschine der Bizarren-Seiten.de hat die categories 
     und attributes in separate Tabellen ausgelagert, deswegen 
     muessen die Abfragen modifiziert werden. */
  $atrConstraint="OR";
  $dblink=mysql_connect($GLOBALS['dbserver'],$GLOBALS['dbuser'],$GLOBALS['dbpasswd']);
  if (!$dblink AND $GLOBALS['debug']){echo "<p>DB connect fehlgeschlagen!</p>server: ".$GLOBALS['dbserver']."<br>user: ".$GLOBALS['dbuser']."<br>pwd: ".$GLOBALS['dbpasswd'];}
  mysql_select_db($GLOBALS['dbname'],$dblink);
  if (!$dblink AND $GLOBALS['debug']){echo "<p>DB connect fehlgeschlagen!</p>".$GLOBALS['dbname'];}

  switch($element){
  case "address":
    if ($GLOBALS['sitename']=="Bizarre-Medien"){
      $request1="(";
      $cc=-1;
      for ($c=0;$c<count($cats);$c++){
	if(!empty($cats[$c])){
	  $cc++;
	  if ($cc>0){$request1.=" ".$atrConstraint." ";}
	  $request1.="`categories`.`".$cats[$c]."` LIKE '1'";
	}
      } #c
      $request1.=")";
      $request2="(";
      $aa=-1;
      for ($a=0;$a<count($atrs);$a++){
	if(!empty($atrs[$a])){
	  $aa++;
	  if ($aa>0){$request2.=" ".$atrConstraint." ";}
	  $request2.="`attributes`.`".$atrs[$a]."` LIKE '1'";
	}
      } #a
      $request2.=")";
    /* SM-Finder */
    }else{
      $request1="(";
      $cc=-1;
      for ($c=0;$c<count($cats);$c++){
	if(!empty($cats[$c])){
	  $cc++;
	  if ($cc>0){$request1.=" ".$atrConstraint." ";}
	  $request1.="address.cats like '%".$cats[$c]."%'";
	}
      } #c
      $request1.=")";
      $request2="(";
      $aa=-1;
      for ($a=0;$a<count($atrs);$a++){
	if(!empty($atrs[$a])){
	  $aa++;
	  if ($aa>0){$request2.=" ".$atrConstraint." ";}
	  $request2.="address.atrs like '%".$atrs[$a]."%'";
	}
      } #a
      $request2.=")";
    }
    $NoCats=$cc+1;
    $NoAtrs=$aa+1;
    if($NoCats>0 AND $NoAtrs>0){
      $request12=$request1." ".$constraint." ".$request2;
    }else if($NoCats>0){
      $request12=$request1;
    }else if($NoAtrs>0){
      $request12=$request2;
    }else{
      $request12="";
    }

    if(empty($lat_min)){
      $NoGeo=0;
    }else{
      $NoGeo=1;
      $request3 = "adr.geoLat < ".$lat_max." AND adr.geoLat > ".$lat_min." AND adr.geoLon < ".$lon_max." AND adr.geoLon > ".$lon_min."";
    }

    if(empty($limit)){
      $request = "SELECT ";
    }else{
      $request = "SELECT SQL_CALC_FOUND_ROWS ";
    }

    if ($GLOBALS['sitename']=="Bizarre-Medien"){
      if($NoGeo==0 AND $NoCats+$NoAtrs>0){
	if ($NoAtrs==0){
	  if ($GLOBALS['debug']){echo "<span style='color:silver'>cats</span>";}
	  $request .= "address.uid,address.status,address.fn,categories.* ";
	  $request .= "FROM address,categories ";
	  $request .= "WHERE (address.UID = categories.UID ";
	  $request .= "AND ".$request12.")";
	}elseif ($NoCats==0){
	  if ($GLOBALS['debug']){echo "<span style='color:silver'>atrs</span>";}
	  $request .= "address.uid,address.status,address.fn,attributes.* ";
	  $request .= "FROM address,attributes ";
	  $request .= "WHERE (address.UID = attributes.UID ";
	  $request .= "AND ".$request12.")";
	}else{
	  if ($GLOBALS['debug']){echo "<span style='color:silver'>cats + atrs</span>";}
	  $request .= "address.uid,address.status,address.fn,categories.*,attributes.* ";
	  $request .= "FROM address,categories,attributes ";
	  $request .= "WHERE (address.UID = categories.UID AND address.UID = attributes.UID ";
	  $request .= "AND ".$request12.")";
	}
      }else if($NoGeo>0 AND $NoCats+$NoAtrs==0){
	if ($GLOBALS['debug']){echo "<span style='color:silver'>geo</span>";}
	$request .= "address.uid,address.status,address.fn,adr.uid,adr.geoLat,adr.geoLon FROM address,adr  WHERE address.uid=adr.uid AND ".$request3;
      }else if ($NoGeo>0 AND $NoAtrs==0){
	if ($GLOBALS['debug']){echo "<span style='color:silver'>geo + cats</span>";}
	$request .= "address.uid,address.status,address.fn,categories.*,adr.uid,adr.geoLat,adr.geoLon ";
	$request .= "FROM address,categories,adr ";
	$request .= "WHERE (address.uid = adr.uid AND address.uid = categories.UID ";
	$request .= "AND ".$request12." AND ".$request3.")";

      }else if ($NoGeo>0 AND $NoCats==0){
	if ($GLOBALS['debug']){echo "<span style='color:silver'>geo + atrs</span>";}
	$request .= "address.uid,address.status,address.fn,attributes.*,adr.uid,adr.geoLat,adr.geoLon ";
	$request .= "FROM address,attributes,adr ";
	$request .= "WHERE (address.uid = adr.uid AND address.uid = attributes.UID ";
	$request .= "AND ".$request12." AND ".$request3.")";
      }else{
	if ($GLOBALS['debug']){echo "<span style='color:silver'>geo + cats + atrs</span>";}
	$request .= "address.uid,address.status,address.fn,categories.*,attributes.*,adr.uid,adr.geoLat,adr.geoLon ";
	$request .= "FROM address,categories,attributes,adr ";
	$request .= "WHERE (address.uid = adr.uid AND address.uid = categories.UID AND address.uid = attributes.UID ";
	$request .= "AND ".$request12." AND ".$request3.")";
      }
    /* SM-Finder */
    }else{
      if($NoGeo==0 AND $NoCats+$NoAtrs>0){
	if ($GLOBALS['debug']){echo "<span style='color:silver'>cats + atrs</span>";}
	$request .= "address.uid,address.status,address.fn,address.cats,address.atrs ";
	$request .= "FROM ".$GLOBALS['DBTaddress']." WHERE ".$request12;
      }else if($NoGeo>0 AND $NoCats+$NoAtrs==0){
	if ($GLOBALS['debug']){echo "<span style='color:silver'>geo</span>";}
	$request .= "address.uid,address.status,address.fn,adr.uid,adr.geoLat,adr.geoLon ";
	$request .= "FROM ".$GLOBALS['DBTaddress'].",".$GLOBALS['DBTadr']." WHERE address.uid=adr.uid AND ".$request3;
      }else{
	if ($GLOBALS['debug']){echo "<span style='color:silver'>cats + atrs + geo</span>";}
	$request .= "address.uid,address.status,address.fn,address.cats,address.atrs,adr.uid,adr.geoLat,adr.geoLon ";
	$request .= "FROM ".$GLOBALS['DBTaddress'].",".$GLOBALS['DBTadr']." WHERE (address.uid=adr.uid) AND ".$request12." AND ".$request3;
      }
    }

    if(empty($limit)){
      $request .= " ORDER BY address.fn ASC";
    }else{
      $request .= " ORDER BY address.fn ASC LIMIT ".$firstpage.",".$limit;
    }
#SELECT address.uid,address.atrs,adr.uid,adr.geoLat FROM `address`,adr WHERE address.uid=adr.uid AND address.atrs like '%Lack%' AND adr.geoLat>10

#SELECT address.uid,address.status,address.fn,categories.UID,attributes.UID FROM address,categories,attributes WHERE ((address.UID = categories.UID OR address.UID=attributes.UID) AND (`categories`.`Geschaeft` like '1' OR `categories`.`Shop` like '1')AND (`attributes`.`Latex` like '1'))
 

    if($GLOBALS['debug']){
      echo "<aj>SMFinder_Query_getUID4CatsAtrsGeo.php</aj> ".$request."<br>";
      #exit(1);
    }
    $UIDs=array();
    $status=array();
    $names=array();
    if(isset($_GET['status'])){$statusClaim=$_GET['status'];}else{$statusClaim="";}
    $result1=mysql_query($request);
    $request2="SELECT FOUND_ROWS()";
    if ($result2=mysql_query($request2)){
      $resultArray = mysql_fetch_array($result2);
      $count = $resultArray['FOUND_ROWS()'];
      $u=-1;
      if ($count>0){
	while($SqlEntry=mysql_fetch_row($result1)){
	  if ($u=-1 OR $SqlEntry[0]!=$UIDs[$u]){
	    $u++;
	    array_push($UIDs,   $SqlEntry[0]);
	    array_push($status, $SqlEntry[1]);
	    array_push($names,  $SqlEntry[2]);
	  }
	}
      }
    }else{
      if($GLOBALS['debug']){echo "Fehler=".mysql_error()."<br>";}
    }
    mysql_close($dblink);
    break;
    /* =================== EVENT =================== */
  case "event":
    $NoCats=count($cats);
    $request1="";
    for ($c=0;$c<$NoCats;$c++){
      if ($c>0){$request1.=" OR ";}
      $request1.="event.cats like '%".$cats[$c]."%'";
    } #c
    $NoAtrs=count($atrs);
    $request2="";
    for ($a=0;$a<$NoAtrs;$a++){
      if ($a>0){$request2.=" OR ";}
      $request2.="event.atrs like '%".$atrs[$a]."%'";
    } #a
    if(empty($lat_min)){
      $NoGeo=0;
    }else{
      $NoGeo=1;
      $request3 = "event.geoLat < ".$lat_max." AND event.geoLat > ".$lat_min." AND event.geoLon < ".$lon_max." AND event.geoLon > ".$lon_min;
    }
    if($NoCats==0){
      $request12=$request2;
    }else if($NoAtrs==0){
      $request12=$request1;
    }else{
      $request12="(".$request1." ".$constraint." ".$request2.")";
    }
    if(empty($limit)){
      $request = "SELECT ";
    }else{
      $request = "SELECT SQL_CALC_FOUND_ROWS ";
    }
    if($NoGeo==0 AND $NoCats+$NoAtrs>0){
      $request .= "event.uid,event.status,event.summary,event.cats,event.atrs ";
      $request .= "FROM ".$GLOBALS['DBTevent']." WHERE ".$request12;
    }else if($NoGeo>0 AND $NoCats+$NoAtrs==0){
      $request .= "event.uid,event.status,event.summary,event.geoLat,event.geoLon ";
      $request .= "FROM ".$GLOBALS['DBTevent']."  WHERE ".$request3;
    }else{
      $request .= "event.uid,event.status,event.summary,event.cats,event.atrs,event.geoLat,event.geoLon ";
      $request .= "FROM ".$GLOBALS['DBTevent']." WHERE ".$request12." AND ".$request3;
    }
    if(empty($limit)){
      $request .= " ORDER BY event.summary ASC";
    }else{
      $request .= " ORDER BY event.summary ASC LIMIT ".$firstpage.",".$limit;
    }

    if($GLOBALS['debug']){
      echo "<aj>SMFinder_Query_getUID4CatsAtrsGeo.php</aj> ".$request."<br>";
    }
    $UIDs=array();
    $status=array();
    $names=array();
    if(isset($_GET['status'])){$statusClaim=$_GET['status'];}else{$statusClaim="";}
    $result1=mysql_query($request);
    $request2="SELECT FOUND_ROWS()";
    if ($result2=mysql_query($request2)){
      $resultArray = mysql_fetch_array($result2);
      $count = $resultArray['FOUND_ROWS()'];
      while($SqlEntry=mysql_fetch_row($result1)){
	array_push($UIDs, $SqlEntry[0]);
	array_push($status, $SqlEntry[1]);
	array_push($names, $SqlEntry[2]);
      }
    }else{
      if($GLOBALS['debug']){echo "Fehler=".mysql_error()."<br>";}
    }
    mysql_close($dblink);
    break;
    /* ==================== LINK ==================== */
  case "link":
    $dbtabelle=$GLOBALS['DBTlink'];
    break;
  }
  if($GLOBALS['debug']){
    echo "<span style='color:silver;'>";
    for ($u=0;$u<count($UIDs);$u++){
      echo $u." ".$UIDs[$u]."<br>";
    } #u
    echo "</span><br>";
  }
  return array($UIDs,$status,$names,$count);
}
?>

Index

Für die Funktionalität des SM-Finders sind viele kleine Tools notwendig. Alle Funktionen beginnen mit SMFinder_ um deren Ursprung zu kennzeichnen. Dem schließt sich die Funktionsgruppe, z.B. Geo_ an, gefolgt vom eigentlichen Namen, der die Aufgabe der Funktion widerspiegeln soll, z.B. PLZ2DB.

Der gesamte Sourcecode darf gemäß GNU General Public License weiterverbreitet werden.

1Makefile
2SMFinder_Admin
3SMFinder_Admin_addCategories
4SMFinder_Admin_checkAllLinks
5SMFinder_Admin_clean
6SMFinder_Admin_exportXML
7SMFinder_Admin_genMap
8SMFinder_Admin_getTimefInt
9SMFinder_Admin_importGeo
10SMFinder_Admin_sendXML2user
11SMFinder_Admin_uploadXML
12SMFinder_Config
13SMFinder_DTD
14SMFinder_Datenbanken
15SMFinder_Edit
16SMFinder_Edit_AddressFields
17SMFinder_Edit_AdrFields
18SMFinder_Edit_CatsAtrs
19SMFinder_Edit_EventFields
20SMFinder_Edit_LinkFields
21SMFinder_Edit_Modus
22SMFinder_Edit_POST
23SMFinder_Edit_PersFields
24SMFinder_Edit_genUID
25SMFinder_Elementdefinitions
26SMFinder_Geo
27SMFinder_Geo_PLZ2DB
28SMFinder_Geo_Umkreis
29SMFinder_Geo_getGeo
30SMFinder_Help
31SMFinder_Help_Download
32SMFinder_Help_FAQ
33SMFinder_Help_KategorienInfo
34SMFinder_Help_editAddress
35SMFinder_Help_editEvent
36SMFinder_Main
37SMFinder_MapDACH
38SMFinder_Menu
39SMFinder_Modules
40SMFinder_ModulesIndex
41SMFinder_Pagelayout
42SMFinder_Query_ABC
43SMFinder_Query_Calendar
44SMFinder_Query_CheckCatsAtrs
45SMFinder_Query_Map
46SMFinder_Query_Mask
47SMFinder_Query_SearchEngine
48SMFinder_Query_analyzeSearch
49SMFinder_Query_composeDates4UIDs
50SMFinder_Query_dateFormat
51SMFinder_Query_dmoz
52SMFinder_Query_expandSeries
53SMFinder_Query_find
54SMFinder_Query_getAllUID
55SMFinder_Query_getUID4CatsAtrsGeo
56SMFinder_Query_getUID4Geo
57SMFinder_Query_getUID4adr
58SMFinder_Query_getUID4fn
59SMFinder_Query_readAddress
60SMFinder_Query_readAdr
61SMFinder_Query_readBookmark
62SMFinder_Query_readEvent
63SMFinder_Query_readLink
64SMFinder_Query_readPers
65SMFinder_Query_showAddress
66SMFinder_Query_showAdr
67SMFinder_Query_showCalendar
68SMFinder_Query_showCalendarDynamic
69SMFinder_Query_showEvent
70SMFinder_Query_showEventList
71SMFinder_Query_showEventsChronological
72SMFinder_Query_showLink
73SMFinder_Query_showPers
74SMFinder_Query_showResult
75SMFinder_Query_validDate
76SMFinder_Style
77SMFinder_Write_Address
78SMFinder_Write_Adr
79SMFinder_Write_Event
80SMFinder_Write_Link
81SMFinder_Write_Pers
82SMFinder_Write_deleteEntry
83SMFinder_XML_checkType
84SMFinder_XML_export
85SMFinder_XML_extractAttribute
86SMFinder_XML_extractTag
87SMFinder_XML_findAllElements
88SMFinder_XML_import
89SMFinder_XML_importParseAddress
90SMFinder_XML_importParseAdr
91SMFinder_XML_importParseCatsAtrs
92SMFinder_XML_importParseEvent
93SMFinder_XML_importParseLink
94SMFinder_XML_importParsePerson
95SMFinder_XML_readFile
96SMallGiessen_SMFinder
97ShowCatsAtrsNice
98index
99php2txt.pl
100sm-finder-02.dtd
101testGeo
102sm-finder-02.dtd
103

Datenbanken

 

SM-Finder-Logo

Die hier zur Verfügung gestellten Informationen basieren auf dem Austauschnetzwerk des SM-Finders.
Änderungen an eurem Datensatz könnt ihr z.B. beim Arbeitskreis SM-Finder vornehmen.
Bei Fragen und Problemen schreibt bitte an: sm-finderATki-co.org
Der AK-SM-Finder ist korporatives Mitglied der BVSM e.V.

Für Aktualität und Richtigkeit der dargebotenen Infomationen kann keine Gewähr übernommen werden!

blank

blank