it-swarm.com.de

Umschreiben der Abfrage zum Abrufen des Datenbankwerts

Ich versuche, die folgende Abfrage umzuschreiben, um den Datenbankwert von Models abzurufen. Wenn der neue Code fehlschlägt, kann jeder helfen, die Abfrage basierend auf den neuesten Joomla-Standards umzuschreiben

Alter Code

<?php 
$db = JFactory::getDBO();
if(isset($_GET["s"])){  
$ModelId=$_GET["s"];
$sql = "SELECT * from #_toy_products where prod_status='1' and prod_cat_id='".$ModelId."' order by prod_sorder Asc";
$db->setQuery($sql);
$rows = $db->loadObjectList();
$list='<select name="model" class="list-box" id="model"  lang="" title="Model">';
$list.='<option value="" style="padding-left:10px;" selected>-Select Model-</option>';
foreach($rows as $row){
    $list.='<option value="'.$row->prod_id .'" style="padding-left:10px;">'.$row->prod_name.'</option>';
}
$list.='</select>';
die($list);

}?>

Neuer Code

<?php 
$db = JFactory::getDBO();
$query = $db->getQuery(true);

$query->select($db->quoteName(array('Model', 'state', 'prod_cat_id', 'prod_sorder')));
$query->from($db->quoteName('#__toy_products'));
$query->where($db->quoteName('state=1') . ' LIKE '. $db->quote('\'custom.%\''));
$query->order('prod_sorder ASC');
$db->setQuery($query);
$results = $db->loadObjectList(); 
?>
1
Ruchika

Versuchen Sie Folgendes:

// GET using JInput
$jinput  = JFactory::getApplication()->input;
$ModelId = $jinput->get('s', '', 'INT');

// Database stuff
$db = JFactory::getDBO();
$query = $db->getQuery(true);

$query->select($db->qn(array('Model', 'state', 'prod_cat_id', 'prod_sorder')))
      ->from($db->qn('#__toy_products'))
      ->where($db->qn('prod_status') . ' = 1')
      ->where($db->qn('prod_cat_id') . ' = ' . (int)$ModelId)
      ->order('prod_sorder ASC');
$db->setQuery($query);

$rows = $db->loadObjectList();

$list = '<select name="model" class="list-box" id="model"  lang="" title="Model">';
$list .= '<option value="" style="padding-left:10px;" selected>-Select Model-</option>';

foreach ($rows as $row)
{
    $list .= '<option value="' . $row->prod_id . '" style="padding-left:10px;">' . $row->prod_name . '</option>';
}

$list .= '</select>';

die($list);

Wie Sie am Anfang sehen können, habe ich JInput anstelle von $_GET Verwendet.

$ModelId = $jinput->get('s', '', 'INT'); ... die Funktion ->get() hat drei Argumente:

  • Variablenname (in Ihrem Fall s)
  • Standardwert (links, wenn als Standard, aber Sie können einen verwenden, wenn Sie möchten)
  • Filter (auf INT (Ganzzahl) gesetzt, vorausgesetzt, diese Variable ist eine Zahl)

Es waren auch einige Verbesserungen an Ihrer ->where() -Klausel in der Abfrage erforderlich.

Hoffe das hilft

1
Lodder