Модификация табличных данных (на выходе) MySQL Select Statement - PullRequest
1 голос
/ 20 мая 2011

Привет! Это мой первый вопрос.

Я искал по всей сети, а также в SO, но я считаю, что это слишком конкретный вопрос, чтобы я мог найти ответ. Я предполагаю, что мой код может нуждаться в логической перестройке.

Предыстория проблемы:

Я создаю простой сайт, содержащий редактируемые пользователем данные инвентаризации (список использованных RV) для бизнеса друга. По сути, это мой первый большой проект с php, ну, когда-нибудь, и я в сжатые сроки (сейчас сезон!), Так что мой код - абсолютная грязь. Чтобы добавить к этому, я смешиваю процедурное и объектно-ориентированное программирование, как чокнутый.

Объяснение проблемы:

Некоторые данные в таблице MySQL «rv_list», а именно поля «status» и «condition» (см. Прилагаемый снимок экрана, чтобы получить более ясное представление), в настоящее время хранятся как однозначные целые числа .

Я подумал, что было бы очень легко (используя php regex или что-то еще) потом преобразовать эти числа в строки, как они были в форме ввода. Как оказалось, с методом, который я окончательно остановился на выводе данных, я не могу найти способ преобразовать их после выполнения оператора select.

Код:

<?php
//unfinished query - "condition" is the column in the db table that I'd like to change, "status" will also need to be changed in a similar way for the outward-facing public-viewed list
$query = 'select * from rv_list where status="1" or status="2" order by modified desc';
$rvfieldquery = 'show columns from rv_list';
$result = $conn->query($query);

//check on the status of our query
if ($result)
{
//begin output of html table, followed by a loop for rows, and within, a nested loop for the datacells.
//based on function 3: http://www.barattalo.it/2010/01/29/10-php-usefull-functions-for-mysqli-improved-stuff/
    echo '<table>';
    echo '<th>Edit Status</th>';
    while ($field = $result->fetch_field())
    {
        echo '<th class="columntitle">'.$field->name.'</th>';
    }
    echo '<th>DELETE</th>';
    $shadecounter = 0;
    while ($row = $result->fetch_assoc())
    {
        //shade every other row for usability       
        $shadecounter++;
        if (is_float($shadecounter/2)) $shade = "lightgray"; 
        else $shade = "white";      
        echo '<tr style="background:'.$shade.';">';
        //Get rv_id key, attach to name of edit and delete buttons
        echo '<td><input type="submit" name="edit '.$row['rv_id'].'" value="Edit"></input></td>';
        //Insert row data
        foreach ($row as $td)
        {
        //PROBLEM AREA HERE! - can I do an if statement or something here to check what column $td comes from?  Confused.
        echo '<td class="data">'.$td.'</td>';
        }
        //for delete record button, off-screen on right side of each record
        echo '<td><input style="background:red;" type="submit" name="del '.$row['rv_id'].'" value="DELETE"></input></td>';
        echo '</tr>';
    }
    echo '</table>';
}
else
{
exit;
}

Снимок экрана вывода (отметьте выделенное):

http://i.stack.imgur.com/N8P8r.jpg

Дополнительная информация:

Ключ к списку целочисленных состояний (точнее, к тому, что я хотел бы, чтобы он отображался):

  1. Доступно
  2. В ожидании
  3. Продано / Деактивировано

Ключ к списку целых чисел условия:

  1. New
  2. Используется - Отлично
  3. Б / у - Хорошее
  4. Б / у - Ярмарка
  5. Б - Плохо

Пожалуйста, дайте мне знать, если я забыл что-то решающее в описании этой проблемы.

И последнее, но не менее важное: большое спасибо за потраченное время на чтение этого вопроса!

1 Ответ

0 голосов
/ 20 мая 2011
$status_map = array(1 => 'Available', 2 => 'On Hold', 3 => 'Sold / Deactivated');
$condition_map = array(1 => 'New', 2 => 'Used - Excellent', 3 => 'Used - Good', 4 => 'Used - Fair', 5 => 'Used - Poor');

foreach ($row as $colname => $value)
{
    if($colname == 'status')
        $value = $status_map[$value];

    if($colname == 'condition')
        $value = $condition_map[$value];

    echo '<td class="data">'.$value.'</td>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...