2014-02-05 2 views
0

Вот код:Как перейти к концу набора записей с помощью php?

<?php 
    require'connection.php'; 

    $cons = mysql_query('SELECT Subject FROM tblsubject'); 

    $total_rows = mysql_num_rows($cons); 
    $counter = 0; 
    $fields=""; 
    while($row = mysql_fetch_array($cons)) { 
    if(++$counter == $total_rows) { 
$fields .= $row['Subject']. ': { <br/> title: \''.$row['Subject'].'\',<br/> width:  \'20% \' <br/>}<br/>'; 
    } 
    else { 
$fields = $row['Subject'].': { <br/> title: \''.$row["Subject"].'\',<br/> width: \'20% \' <br/>},<br/>'; 
    } 
    } 

    echo $fields; 
?> 

Код указано выше, следует производить вывод, как это показано ниже:

General: { 
    title:'General', 
    width: '20%', 
}, 
Math: { 
    title:'Math', 
    width: '20%', 
} 

Но если запрос достигает последнего ряда, то «» должен быть опущен после последний "}". Я получаю это правильно, но когда я повторяю его вне цикла while, повторяются только две последние строки в базе данных.

Может кто-нибудь помочь мне с этим? Скажите, пожалуйста, где я ошибаюсь. Большое спасибо: D Мне нужно отразить все данные в таблице, а не только последние два.

ответ

1

Не беспокойтесь о сложной проверке состояния. Просто создайте массив, а затем взорвите его. Автоматическое «правильное» количество запятых.

while($row = mysql_fetch_array()) { 
    $array[]= $row['data_you_want']; 
} 
echo implode(',', $array); 
+0

вау! это здорово, что это реально решает мою проблему .. Большое спасибо за это, она действительно решила мою проблему .. Я просто новичок в php и до сих пор не знаком со всеми ее функциями .. еще раз спасибо: D – Nixxhalle

+0

By путь, может использовать это, если я собираюсь поместить это в запрос например: обычный запрос выглядит так: msqyli_query (Science, Math, general) значения («sometext» и т. д.). Могу ли я использовать $ array следующим образом: msqyli_query ("',', $ array ??") значения ('sometext' и т. Д.). спасибо: D – Nixxhalle

0

Вы могли бы попробовать что-то вроде этого:

$print = ''; 
while($row = mysql_fetch_array($cons)) { 
    $row_subject_array[] = $row['Subject']; 
} 

for($i = 0; $i < count($row_subject_array); $i++) { 
    $print .= $row_subject_array[$i]. ': { <br/> title: \''.$row_subject_array[$i].'\',<br/> width:  \'20% \' <br/>},'; 
} 
$print = rtrim($print, ','); 

echo "<br />"; 

Также немного предложения: Вы должны прекратить использование mysql_x() функцию. Эти функции устарели, вместо этого вы можете использовать функцию mysqli_x() или PDO.

Why shouldn't I use mysql_* functions in PHP?

0

Здравствуйте и Добро пожаловать к переполнению стека!

Прежде всего, вам следует избегать использования класса mysql и использовать mysqli, поскольку mysql устарел.

Теперь ваш вопрос, если ваша таблица MySQL имеет столбец ID с поддержкой Auto Increment, то вы можете сделать это:

SELECT id FROM table ORDER BY id DESC LIMIT 1 

Однако, если вы хотите, чтобы достичь того же результата, то я бы форматировать мой код следующим образом:

$cons = mysql_query('SELECT Subject FROM tblsubject'); 

$fieldsArray = array(); 

while($row = mysql_fetch_array($cons)) { 
    array_push($fields_array,$row['Subject']. ': { <br/> title: \''.$row['Subject'].'\',<br/> width:  \'20% \' <br/>},<br/>'); 
} 

array_pop($fieldsArray); 

array_push($fieldsArray,$row['Subject']. ': { <br/> title: \''.$row['Subject'].'\',<br/> width:  \'20% \' <br/>}<br/>'); 

foreach($fieldsArray as $value) { 
    echo $value; 
} 

tada!

0

я всегда делаю:

$var = substr($var,0,-1); 

echo $var; //or whatever 
Смежные вопросы