Кажется, что есть два решения; центрируется с использованием полей и центрируется с использованием положения. Оба работают нормально, но если вы хотите абсолютную позицию элемента относительно этого центрированного элемента, вам нужно использовать метод абсолютной позиции, потому что абсолютное положение второго элемента по умолчанию относится к первому родительскому объекту, который расположен. Например:
<!-- CENTERED USING MARGIN -->
<div style="width:300px; height:100px; border: 1px solid #000; margin:20px auto; text- align:center;">
<p style="line-height:4;">width: 300 px; margin: 0 auto</p>
<div style="position:absolute; width:100px; height:100px; background-color:#ff0000; top:-20px; left:0px;">
<p style="line-height:4;">Absolute</p>
</div>
</div>
<!-- CENTERED USING POSITION -->
<div style="position:absolute; left:50%; width:300px; height:100px; border: 1px solid #000; margin:20px 0 20px -150px; text-align:center;">
<p style="line-height:2;">width:300px; position: absolute; left: 50%; margin-left:-150px;</p>
<div style="position:absolute; width:100px; height:100px; background-color:#ff0000; top:0px; left:-105px;">
<p style="line-height:4;">Absolute</p>
</div>
</div>
Пока я не прочитал эту публикацию, используя автоматическую технику margin: 0, чтобы построить меню слева от моего содержимого, мне пришлось построить столбец одинаковой ширины для чтобы сбалансировать это. Не красиво. Спасибо!
PHP 5.4 теперь поддерживает разыменование функций , что означает, что вы можете это сделать: if ($r && $r->num_rows)
{
$row = $r->fetch_assoc()['blah'];
}
Ну, вы всегда можете укоротить его примерно так:
if ($r && $r->num_rows)
list($blarg) = $r->fetch_row();
Но это может быть так хорошо, как вы собираетесь получить.
Я использую следующую функцию для замены mysql_result ()
function mysqli_result($result, $iRow, $field = 0)
{
if(!mysqli_data_seek($result, $iRow))
return false;
if(!($row = mysqli_fetch_array($result)))
return false;
if(!array_key_exists($field, $row))
return false;
return $row[$field];
}
Это хороший ответ, из http://php.net/manual/es/class.mysqli-result.php
<?php
function mysqli_result($result,$row,$field=0) {
if ($result===false) return false;
if ($row>=mysqli_num_rows($result)) return false;
if (is_string($field) && !(strpos($field,".")===false)) {
$t_field=explode(".",$field);
$field=-1;
$t_fields=mysqli_fetch_fields($result);
for ($id=0;$id<mysqli_num_fields($result);$id++) {
if ($t_fields[$id]->table==$t_field[0] && $t_fields[$id]->name==$t_field[1]) {
$field=$id;
break;
}
}
if ($field==-1) return false;
}
mysqli_data_seek($result,$row);
$line=mysqli_fetch_array($result);
return isset($line[$field])?$line[$field]:false;
}
?>
function db_result($result,$row,$field) {
if($result->num_rows==0) return 'unknown';
$result->data_seek($row);
$ceva=$result->fetch_assoc();
$rasp=$ceva[$field];
return $rasp;
}
Хотя ответил , я думал, что смогу улучшить ответ, заданный после того же вопроса. Следующая функция полностью реплицирует функцию mysql_result () и возвращает false, когда вы находитесь вне границ вашего запроса (пустой результат, ни одна строка этого номера, ни один столбец этого номера). У него есть дополнительное преимущество, которое, если вы не укажете строку, принимает 0,0 (одно меньшее значение, которое нужно передать). Функция была обновлена с учетом численного смещения поля или имени поля.
function mysqli_result($res,$row=0,$col=0){
$numrows = mysqli_num_rows($res);
if ($numrows && $row <= ($numrows-1) && $row >=0){
mysqli_data_seek($res,$row);
$resrow = (is_numeric($col)) ? mysqli_fetch_row($res) : mysqli_fetch_assoc($res);
if (isset($resrow[$col])){
return $resrow[$col];
}
}
return false;
}
if (mysqli_num_rows($result) > $row) { ... }
, это не все, что вам нужно проверить? ... предполагая, что вы не собираетесь проходить в строке $ row = -1. .. или с обратным результатом из 5 строк, возвращенных ... если вы запрашиваете строку 0, которая меньше 5 (дает вам первую запись), запрос строки 4 также хорош (дает последнюю запись), запрашивая строку 5 или 6 не удалось (5 или 6 не менее 5).
– Craig Francis
3 April 2014 в 18:17
Если вы ищете надежную библиотеку для подключения к базе данных, я предлагаю вам использовать AdoDB . Эта библиотека может подключаться к нескольким базам данных, и вам не нужно переписывать свой запрос, если вы меняете базу данных, если она не содержит какого-либо конкретного SQL-кода для определенного механизма базы данных. Проверьте эту страницу для примера использования. Кроме того, если вы используете PHP5, вы можете использовать foreach для iteration .
Надеюсь, это поможет вам преобразовать старые коды в более надежный и перекрестный код базы данных.