2013-11-11 4 views
-2

Я хотел бы сделать предыдущую и следующую кнопку для прокрутки базы данных с помощью ID. Это мой код, когда я все еще использую mysql. Сейчас он изменен на mysqli, поэтому я понятия не имею, работает ли этот код или нет, потому что я все равно получаю null.mysqli установка следующей и предыдущей кнопки с использованием id

function getNavID($id) { 

$result4= mysqli_query("SELECT 
    (SELECT id FROM products_list 
     WHERE id > '$id' LIMIT 1) AS nextValue, 
    (SELECT id FROM products_list 
     WHERE id < '$id' ORDER BY id DESC LIMIT 1) AS prevValue 
    FROM products_list 
    LIMIT 1"); 
if ($resultID = mysqli_fetch_array($result4)) { 
    return $resultID; 
} 
else { 
    return NULL; 
} 
} 

$LinkID = getNavID($id); 

if (!is_null($LinkID['prevValue'])) 
{ 
?> 
<a href="update.php?id=<?php echo urlencode($LinkID['prevValue']); ?>" target="_top">Previous</a> 
<?php 
} 
else if (!is_null($LinkID['nextValue'])) 
{ 
?> 
    <a href="update.php?id=<?php echo urlencode($LinkID['nextValue']); ?>" target="_top">Next</a> 
<?php 
} 
else 
{ 
    echo "No Entries"; 
} 

Помимо изменения mysql_query в mysqli_query, есть ли что-то, что мне нужно изменить тоже? Заранее спасибо за помощь!

+3

'Я понятия не имею ли до сих пор работает этот код или not'.So пойти и проверить его –

+0

I уже были протестированы, и я заявил, что продолжаю получать нуль, поэтому я разместил здесь после того, как я его протестировал. – Dr3am3rz

+0

, так что вы хотите, чтобы мы нашли ошибку в вашем коде. К сожалению, такие вопросы здесь оффтопны –

ответ

-1

попробовать это:

global $pdo; 

$id = $the_selected_id; 

$stmt_a = $pdo->prepare(" 
(SELECT * FROM images WHERE id < ? ORDER BY id DESC LIMIT 1) 
UNION (SELECT * FROM images WHERE id = (SELECT MAX(id) FROM images)) LIMIT 1"); 
$stmt_b = $pdo->prepare(" 
(SELECT * FROM images WHERE id > ? ORDER BY id ASC LIMIT 1) 
UNION (SELECT * FROM images WHERE id = (SELECT MIN(id) FROM images)) LIMIT 1"); 

// $vars = array(':id' => $id); 
$prev = $stmt_a->execute(array((int)$id)); 
$next = $stmt_b->execute(array((int)$id)); 

if ($stmt_a->rowCount() > 0) { 
    while($row = $stmt_a->fetch(PDO::FETCH_ASSOC)) { 
     echo '<a href="' . $row['prev_id'] . '">Previous</a>'; 
    } 
} else { 
    echo 'no previous'; 
} 

if ($stmt_b->rowCount() > 0) { 
    while($row = $stmt_b->fetch(PDO::FETCH_ASSOC)) { 
     echo '<a href="' . $row['next_id'] . '">Next</a>'; 
    } 
} else { 
echo 'no next'; 
+0

Итак, на этот раз мне нужно разделить на 2 запроса? Больше не объединяйте 2 как 1? – Dr3am3rz

+0

, если вы используете PDO, вы можете использовать: PDO :: CURSOR_SCROLL, попробуйте найти документацию об этом. – Mimouni

-1

Entre вашей БД Conection Befor sentax так:

<? 

//enter your MySQL database host name, often it is not necessary to edit this line 
$db_host = "localhost"; 

//enter your MySQL database username 
$db_username = "your user name"; 

//enter your MySQL database password 
$db_password = "your passwor"; 


//enter your MySQL database name 
$db_name = "your db name"; 

//URL to the the site 
$ScriptPath = "http://www.your-site.com/"; 


$db = mysqli_connect($db_host, $db_username, $db_password) or die("Error " . mysqli_error($db)); 

mysqli_select_db($db, $db_name) or die("Error " . mysqli_error($db)); 


function getNavID($id) { 

$result4= mysqli_query($db, "SELECT 
    (SELECT id FROM products_list 
     WHERE id > '$id' LIMIT 1) AS nextValue, 
    (SELECT id FROM products_list 
     WHERE id < '$id' ORDER BY id DESC LIMIT 1) AS prevValue 
    FROM products_list 
    LIMIT 1"); 
if ($resultID = mysqli_fetch_array($db, $result4)) { 
    return $resultID; 
} 
else { 
    return NULL; 
} 
} 

$LinkID = getNavID($id); 

if (!is_null($LinkID['prevValue'])) 
{ 
?> 
<a href="update.php?id=<?php echo urlencode($LinkID['prevValue']); ?>" target="_top">Previous</a> 
<?php 
} 
else if (!is_null($LinkID['nextValue'])) 
{ 
?> 
    <a href="update.php?id=<?php echo urlencode($LinkID['nextValue']); ?>" target="_top">Next</a> 
<?php 
} 
else 
{ 
    echo "No Entries"; 
} 
?> 
+0

Вы понимаете, что этот вопрос составляет 3 года, не так ли? – Mike

Смежные вопросы