Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 13. August 2011 21:29
- AL-d82
- Server-Pate
- Ort: Heilbronn / Göppingen
- Registriert: 18. Dezember 2010
- Beiträge: 149
- Webseite
[gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
Hi ich benutzte Vehicle Listing,
http://dev.cmsmadesimple.org/projects/auto
Bei der Suche nach Hersteller bekomme ich nun ne Fehlermeldung mit PHP Version 5.3.6
http://www.damjanovic-omnibushandel.de/cms1/
Warning: trim() expects parameter 1 to be string, array given in /www/htdocs/xxx/cms-c/modules/autos/autos.module.php on line 1503
All-Inkl hat ein PHP Update durchgeführt von PHP Version 5.2.12 auf PHP Version 5.3.6 upgedatet.
Wenn ich auf PHP Version 5.2.12 kommt der Fehler nicht..
ist die Syntax für PHP 5.3.6 so anders?
Falls einer auf die Schnelle den Fehler sieht würde ich mich über ein Lösungsvorschlag freuen
das ist die Zeile
if(substr($key,0,6) == "field_" && trim($value) != ""){
function getWhereFromParams($params, $htmlencoded=false){
// used for query creation and frontend advanced search action
// transforms parameters into $where - an array of criteria:
// $where[] = array($fieldname, $searchvalue, $comparison_type)
$db =& $this->GetDb();
$where = array();
foreach($params as $key=>$value){
if(substr($key,0,6) == "field_" && trim($value) != ""){
$key = substr($key,6);
if(is_array($value) && count($value)==1) $value = $value[0];
$compare = isset($params["compare_".$key])?$params["compare_".$key]:0;
if($value == "__date_field"){
if($compare != "NA"){
// The code is such that removing any part of the time input from the form will result in using the default value
$timeinputs = array("Hour"=>"H","Minute"=>"i","Second"=>"s","Month"=>"n","Day"=>"j","Year"=>"Y");
$parts = array();
foreach($timeinputs as $inputname=>$datepart){
$parts[] = (isset($params["date_".$key."_".$inputname]))?$params["date_".$key."_".$inputname]:date($datepart);
}
$value = mktime($parts[0],$parts[1],$parts[2],$parts[3],$parts[4],$parts[5]);
$value = str_replace("\'","",$db->DBTimeStamp($value));
if($compare == 5){
$parts = array();
foreach($timeinputs as $inputname=>$datepart){
$parts[] = (isset($params["date_".$key."_part2_".$inputname]))?$params["date_".$key."_part2_".$inputname]:date($datepart);
}
$value2 = mktime($parts[0],$parts[1],$parts[2],$parts[3],$parts[4],$parts[5]);
$value2 = str_replace("\'","",$db->DBTimeStamp($value2));
$where[] = array($key, array($value,$value2), $compare);
}else{
$where[] = array($key, $value, $compare);
}
}
}else{
if(is_array($value)){
foreach($value as $onevalue) $where[] = array($key, $onevalue, 1);
}elseif($compare == 1){
$keywords = $this->parsekeywords($value);
foreach($keywords as $value){
if($htmlencoded) $value = html_entity_decode($value);
$value = addslashes($value);
$where[] = array($key, $value, $compare);
}
}else{
if($htmlencoded) $value = html_entity_decode($value);
$value = addslashes($value);
$where[] = array($key, $value, $compare);
}
}
}
}
return $where;
}
Beitrag geändert von AL-d82 (26. Mai 2012 05:30)
Offline
#2 13. August 2011 21:40
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
Die einfachste Möglichkeit wäre, bei der von Dir rot markierten Zeile zusätzlich noch abzufragen, ob $value ein Array ist:
...
if(!is_array($value) && substr($key,0,6) == "field_" && trim($value) != ""){
...
Verstehe aber nicht, warum dort ein Array übergeben wird. Wie genau funktioniert denn die Suche? Ist das eine Art Such-Formular? Welche Input-Felder gibt es denn da im HTML Quelltext? Und wo wird die Funktion getWhereFromParams() aufgerufen?
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#3 13. August 2011 21:41
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
All-Inkl hat ein PHP Update durchgeführt von PHP Version 5.2.12 auf PHP Version 5.3.6 upgedatet.
Hmm, seltsam ... bei meinen all-inkl Accounts kann ich die PHP-Version auswählen. Evtl. ist da auch bei dir ein Downgrade möglich ...
Offline
#4 13. August 2011 21:54
- AL-d82
- Server-Pate
- Ort: Heilbronn / Göppingen
- Registriert: 18. Dezember 2010
- Beiträge: 149
- Webseite
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
Also das Modul hat ne eigene Suchfunktion
Das ist nur bei der Suche nach Hersteller und Ausstattung -->
Also bei den 2 Sachen wo man mehrere Sachen auswählen kann-
<tr><td valign="top">{$make_label} <div class="sklein">Mehrfachauswahl die STRG-Taste gedrückt halten</div></td><td>{$make_input}</td></tr>
und
<tr><td valign="top">{$features_label}<div class="sklein">Mehrfachauswahl die STRG-Taste gedrückt halten</div></td><td>{$features_input}</td></tr>
[== search-template ==]
<table>
<tr><td class="s1" valign="top">{$year_label} </td><td>{$year_input} </td></tr>
<tr><td valign="top">{$make_label} <div class="sklein">Mehrfachauswahl die STRG-Taste gedrückt halten</div></td><td>{$make_input}</td></tr>
<tr><td valign="top">{$model_label}</td><td>{$model_input}</td></tr>
<tr><td valign="top">{$milage_label}</td><td>{$milage_input}</td></tr>
<!-- <tr><td>{$vehiclecondition_label}</td><td>{$vehiclecondition_input}</td></tr>-->
<!-- <tr><td>{$color_label}</td><td>{$color_input}</td></tr>-->
<tr><td valign="top">{$price_label}</td><td>{$price_input}</td></tr>
<tr><td valign="top">{$engine_label}</td><td>{$engine_input}</td></tr>
<tr><td valign="top">{$features_label}<div class="sklein">Mehrfachauswahl die STRG-Taste gedrückt halten</div></td><td>{$features_input}</td></tr>
<!-- <tr><td>{$description_label}</td><td>{$description_input}</td></tr>-->
<tr><td>Kategorie</td><td>{$parent_input}</td></tr>
<tr><td>{$name_label}</td><td>{$name_input}</td></tr>
<!-- <tr><td>{$date_modified_label}</td><td>{$date_modified_input}</td></tr>-->
</table>
<p>{$submit}</p>
[== action.search.php ==]
<?php
if(!isset($gCms)) exit;
$levelarray = $this->get_levelarray();
$finallevel = "vehicle";
$searchmode = (isset($params["searchmode"]) && in_array($params["searchmode"], array("simple","advanced")))?$params["searchmode"]:"advanced";
if(isset($params["submitsearch"])){
// #####################################################################################
// # SEARCH RESULTS
$inline = (isset($params["inline"]) && $params["inline"])?true:false;
$linkreturnid = (isset($params["detailpage"]))?$this->get_pageid($params["detailpage"]):false;
if(!$linkreturnid) $linkreturnid = $returnid;
$what = $params["what"];
$limit = isset($params["limit"])?$params["limit"]:0;
if(isset($params["nbperpage"]) && $params["nbperpage"] > 0){
$nbperpage = (int) $params["nbperpage"];
$limit = (((isset($params["pageindex"])?$params["pageindex"]:1)-1) * $nbperpage).",".$nbperpage;
}else{
$nbperpage = false;
}
$emptytemplate = $this->GetPreference("emptytemplate","**");
// we prepare the "do another search" link, keeping the search parameters
$newparams = array("what"=>$what, "searchmode"=>$searchmode);
if(isset($params["listtemplate"])) $newparams["listtemplate"] = $params["listtemplate"];
if(isset($params["limit"])) $newparams["limit"] = $params["limit"];
if(isset($params["inline"])) $newparams["inline"] = $params["inline"];
if(isset($params["orderby"])) $newparams["orderby"] = $params["orderby"];
if(isset($params["nbperpage"])) $newparams["nbperpage"] = $params["nbperpage"];
if(isset($params["detailpage"])) $newparams["detailpage"] = $params["detailpage"];
$backlink = $this->CreateLink($id, "search", $returnid, $this->Lang("searchagain"), $newparams, "", false, $inline, "", false, false);
$this->smarty->assign("backlink",$backlink);
$this->smarty->assign("breadcrumbs",false);
$this->smarty->assign("parentobj",false);
$multiplelistfields = array("vehicle_features");
if($searchmode == "advanced"){
// ADVANCED SEARCH
$db = $this->GetDb();
// we parse the keywords
$where = $this->getWhereFromParams($params, true);
list($whereclause, $wherevalues) = $this->buildWhere($where, $what);
$getfunction = "get_level_".$what;
// we do the query
$itemlist = $this->$getfunction(array(), false, "", "", isset($params["orderby"])?$params["orderby"]:0, $limit, $whereclause, $wherevalues);
$this->smarty->assign("itemcount",count($itemlist));
if(count($itemlist) > 0){
$total = $nbperpage?$this->countsomething($what,"id",array(),$whereclause, $wherevalues):false;
$this->paginate($what,$total,$id,$returnid,$params,"search");
// we must build a detail link for each result element
$newlist = array();
foreach($itemlist as $item){
$item = $this->addfrontendurls($item,$params,$id,$linkreturnid);
$item->is_selected = false;
array_push($newlist, $item);
}
$this->smarty->assign("itemlist",$newlist);
$this->smarty->assign("leveltitle",$this->Lang($what."_plural"));
}else{
$this->paginate($what,0,$id,$returnid,$params,"search");
$this->smarty->assign("itemlist",$newlist);
$this->smarty->assign("error_msg",$this->Lang("error_noitemfound"));
}
// we retrieve the display template
if(count($itemlist) == 0 && $emptytemplate != "**"){
echo $this->ProcessTemplateFromDatabase($emptytemplate);
}else{
if(isset($params["listtemplate"])) $template = $this->GetTemplate($params["listtemplate"], $this->GetName());
if(!isset($template) || !$template){
$templatename = $this->GetPreference("searchresultstemplate","**");
if($templatename == "**") $templatename = $this->GetPreference("listtemplate_".$what);
$template = $this->GetTemplate($templatename, $this->GetName());
}
echo $this->ProcessTemplateFromData($template);
}
}else{
// SIMPLE SEARCH
$template = false;
$levels = ($what == "-all")?$levelarray:array($what);
// we retrieve the display template
// if the user has asked for a specific display template, we will use it for every category :
if(isset($params["listtemplate"])) $template = $this->GetTemplate($params["listtemplate"], $this->GetName());
if(!isset($template) || !$template){
$templatename = $this->GetPreference("searchresultstemplate","**");
if($templatename == "**"){
if(count($levels) == 1){
$templatename = $this->GetPreference("listtemplate_".$levels[0]);
$template = $this->GetTemplate($templatename, $this->GetName());
}else{
$template = false;
}
}else{
$template = $this->GetTemplate($templatename, $this->GetName());
}
}
foreach($levels as $level){
$whereclause = "";
$fields = $this->get_levelsearchfields($level);
$keywords = $this->parsekeywords(html_entity_decode($params["searchfield"]));
foreach($fields as $field){
foreach($keywords as $keyword){
$whereclause .= ($whereclause == ""?"":" OR ")."A.".$field." LIKE '%".addslashes($keyword)."%'";
}
}
$whereclause = "A.active=1".($whereclause == ""?"":" AND (".$whereclause.")");
$getfunction = "get_level_".$level;
$itemlist = $this->$getfunction(array(), false, "", "", isset($params["orderby"])?$params["orderby"]:0, $limit, $whereclause);
$this->smarty->assign("itemcount",count($itemlist));
if(count($itemlist) > 0){
$total = $nbperpage?$this->countsomething($level,"id",array(),$whereclause, array()):false;
$this->paginate($what,$total,$id,$returnid,$params,"search");
// we must build a detail link for each result element
$newlist = array();
foreach($itemlist as $item){
$item = $this->addfrontendurls($item,$params,$id,$linkreturnid);
$item->is_selected = false;
array_push($newlist, $item);
}
$this->smarty->assign("itemlist",$newlist);
$this->smarty->assign("leveltitle",$this->Lang($level."_plural"));
if($template == FALSE){
echo $this->ProcessTemplate("search_generalresults.tpl");
}else{
echo $this->ProcessTemplateFromData($template);
}
}else{
$this->paginate($what,0,$id,$returnid,$params,"search");
$this->smarty->assign("itemlist",$itemlist);
$this->smarty->assign("error_msg",$this->Lang("error_noitemfound"));
}
if(count($itemlist) == 0 && $emptytemplate != "**"){
echo $this->ProcessTemplateFromDatabase($emptytemplate);
}elseif($template == FALSE){
echo $this->ProcessTemplate("search_generalresults.tpl");
}else{
echo $this->ProcessTemplateFromData($template);
}
}
}
// # END SEARCH RESULTS
// #####################################################################################
}else{
// #####################################################################################
// # SEARCH FORM
$what = (isset($params["what"]) && in_array($params["what"],$levelarray))?$params["what"]:"-all";
if($searchmode == "advanced" && $what == "-all") $what = $finallevel;
echo $this->CreateFormStart($id, "search", $returnid);
echo $this->CreateInputHidden($id, "what", $what);
echo $this->CreateInputHidden($id, "searchmode", $searchmode);
if(isset($params["listtemplate"])) echo $this->CreateInputHidden($id, "listtemplate", $params["listtemplate"]);
if(isset($params["limit"])) echo $this->CreateInputHidden($id, "limit", $params["limit"]);
if(isset($params["inline"])) echo $this->CreateInputHidden($id, "inline", $params["inline"]);
if(isset($params["orderby"])) echo $this->CreateInputHidden($id, "orderby", $params["orderby"]);
if(isset($params["nbperpage"])) echo $this->CreateInputHidden($id, "nbperpage", $params["nbperpage"]);
if(isset($params["detailpage"])) echo $this->CreateInputHidden($id, "detailpage", $params["detailpage"]);
$this->smarty->assign("searchtitle", $this->Lang("searchtitle"));
$this->smarty->assign("what", ($what == "-all")?false:$this->Lang($what));
$this->smarty->assign("submit", $this->CreateInputSubmit($id, "submitsearch", $this->Lang("searchbtn")));
if($searchmode == "simple"){
// WE ARE DOING A SIMPLE SEARCH
$this->smarty->assign("searchfield", $this->CreateInputText($id,"searchfield","",50));
echo $this->ProcessTemplate("search.tpl");
}else{
// WE ARE DOING AN ADVANCED SEARCH
$this->createFieldForm($what, $id, true);
echo $this->ProcessTemplate("search_".$what.".tpl");
}
echo $this->CreateFormEnd();
// # END SEARCH FORM
// #####################################################################################
}
?>
@cyberman
ja das geht bei mir auch... aber sollte man nicht lieber die neuere Version benutzen?
so bin ich erst drauf gekommen, das der Fehler von der neueren PHP Version kommt..
Danke für eure Antworten
Offline
#5 14. August 2011 22:01
- AL-d82
- Server-Pate
- Ort: Heilbronn / Göppingen
- Registriert: 18. Dezember 2010
- Beiträge: 149
- Webseite
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
Die einfachste Möglichkeit wäre, bei der von Dir rot markierten Zeile zusätzlich noch abzufragen, ob $value ein Array ist:
... if(!is_array($value) && substr($key,0,6) == "field_" && trim($value) != ""){ ...
Verstehe aber nicht, warum dort ein Array übergeben wird. Wie genau funktioniert denn die Suche? Ist das eine Art Such-Formular? Welche Input-Felder gibt es denn da im HTML Quelltext? Und wo wird die Funktion getWhereFromParams() aufgerufen?
wenn ich if(!is_array($value) && substr($key,0,6) == "field_" && trim($value) != ""){
benutze funktioniert die Suche mit den Parametern Hersteller und Ausstattung nicht..
also er Filtert es dann nicht es werden alle angezeigt
Offline
#6 14. August 2011 22:07
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
Aha. Okay. Die Arrays sind also wichtig.
Dann versuch es mal mit
...
if(substr($key,0,6) == "field_" && !empty($value)){
...
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#7 14. August 2011 22:12
- AL-d82
- Server-Pate
- Ort: Heilbronn / Göppingen
- Registriert: 18. Dezember 2010
- Beiträge: 149
- Webseite
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
@NaN
supie 100x Danke... hat bestens funktioniert
Nun funktioniert die Suche wieder so wie sie soll..
Aha. Okay. Die Arrays sind also wichtig.
Dann versuch es mal mit... if(substr($key,0,6) == "field_" && !empty($value)){ ...
Offline
#8 14. August 2011 22:28
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
Bugreport abgesetzt?
Offline
#9 14. August 2011 22:32
- AL-d82
- Server-Pate
- Ort: Heilbronn / Göppingen
- Registriert: 18. Dezember 2010
- Beiträge: 149
- Webseite
Re: [gelöst] Problem mit Modul Vehicle Listing mit PHP Version 5.3.6
Jup hab dem Autor eine PM im Forum geschickt..
Er hat mir beim letzten Bugreport geantwortet..
Aber glaub nicht, das er es berichtigt hat es bei dem letzten Bugreport auch nicht upgedatet
vielleicht sollte ich doch ein richtigen Bugreport erstellen und die Lösung von NaN mit dran hängen
Offline
Seiten: 1