2013-06-03 2 views
0

У меня есть база данных CV, вы можете видеть поля ниже, и они довольно стандартны. Поиск выполняется простой формой, отправляющей информацию в базу данных SQL.Сортировка и разбиение на страницы объединены, PHP с SQL

Я был доволен своей простой системой, пока меня не заполнило более 500 заявителей в моем почтовом ящике. Моя предыдущая система позволила мне просмотреть претендентов только один за другим, который бы взял навсегда ...

То, что я пытаюсь достичь, - это простая бэкэнд-страница, похожая на phpmyadmin таблицы. (нет, я не хочу просто использовать phpmyadmin, поскольку я хотел бы дать задачу отсечения CV другим сотрудникам)

В принципе, концепция состоит в том, чтобы отображать таблицу как превосходное, разрешить сортировку, щелкая по заголовкам, разбиение на страницы [20 строк на страницу] и флажок для удаления строки.

Я в порядке с просьбой о помощи, как я положил много усилий, пытаясь понять это;)

До сих пор, что у меня есть это:

Сортировка не работает без проблем , нажатие на один из заголовков выплескивает localhost/mena/new3.php? sort = fname в адресную строку и анализирует правильный запрос Sql и сортирует страницу.

К сожалению, пока картинка недоступна. На странице отображаются все 815 кандидатов. Он предоставляет пронумерованные ссылки 1-42, которые при нажатии на результат в адресной строке меняются на localhost/new3.php? Page = 2, но 0 меняются.

Кроме того, для жизни меня я не могу видеть, как включать PHP удаление в этом ..

9 лет псевдокод идея этого является:

//Input the rows from SQL 
While($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td> $checkbox1 
    if checkbox1=true then mysqli_query($con,"DELETE FROM cv WHERE .$row[]."); 
    echo "<td>" . $row['title'] . 

Мой код до сих пор:

<?php 
$con=mysqli_connect("localhost","root","","test_db-jil"); 
// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

// Pagination 
if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; 
$start_from = ($page-1) * 20; 

// Sort, from headers. 
if(isset($_REQUEST['sort'])){ 
    if($_GET['sort'] == "title"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY title"); 
    } 
    elseif($_GET['sort'] == "fname"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY fname"); 
    } 
    elseif($_GET['sort'] == "lname"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY lname"); 
    } 
    elseif($_GET['sort'] == "gender"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY gender"); 
    } 
    elseif($_GET['sort'] == "dob"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY dob"); 
    } 
    elseif($_GET['sort'] == "nationality"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY nationality"); 
    } 
    elseif($_GET['sort'] == "language"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY language"); 
    } 
    elseif($_GET['sort'] == "phone"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY phone"); 
    } 
    elseif($_GET['sort'] == "email"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY email"); 
    } 
    elseif($_GET['sort'] == "uni"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY uni"); 
    } 
    elseif($_GET['sort'] == "prog"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY prog"); 
    } 
    elseif($_GET['sort'] == "graddate"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY graddate"); 
    } 
    elseif($_GET['sort'] == "startdate"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY startdate"); 
    } 
    elseif($_GET['sort'] == "grad"){ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY grad"); 
    } 
    else{ 
    $result = mysqli_query($con,"SELECT * FROM cv ORDER BY fname"); 
    } 
} 
else{ // Default if no parameters passed 
    $result = mysqli_query($con,"SELECT * FROM cv"); 
    } 


//Table of Content 
echo "<table border='1'> 
<tr> 
<th><a href=new3.php?sort=title>Title</a></th> 

<th><a href=new3.php?sort=fname>First Name</a></th> 

<th><a href=new3.php?sort=lname>Last Name</a></th> 

<th><a href=new3.php?sort=gender>Gender</a></th> 

<th><a href=new3.php?sort=dob>Date Of Birth</a></th> 

<th><a href=new3.php?sort=nationality>Nationality</a></th> 

<th><a href=new3.php?sort=language>Language</a></th> 

<th><a href=new3.php?sort=phone>Phone No</a></th> 

<th><a href=new3.php?sort=email>Email</a></th> 

<th><a href=new3.php?sort=uni>University</a></th> 

<th><a href=new3.php?sort=prog>Program</a></th> 

<th><a href=new3.php?sort=graddate>Graduated</a></th> 

<th><a href=new3.php?sort=startdate>Start Date</a></th> 

<th><a href=new3.php?sort=grad>Applying for</a></th> 

<th>CV File</th> 

</tr>"; 

//Input the rows from SQL 
While($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['title'] . "</td>"; 
    echo "<td>" . $row['fname'] . "</td>"; 
    echo "<td>" . $row['lname'] . "</td>"; 
    echo "<td>" . $row['gender'] . "</td>"; 
    echo "<td>" . $row['dob'] . "</td>"; 
    echo "<td>" . $row['nationality'] . "</td>"; 
    echo "<td>" . $row['language'] . "</td>"; 
    echo "<td>" . $row['phone'] . "</td>"; 
    echo "<td>" . $row['email'] . "</td>"; 
    echo "<td>" . $row['uni'] . "</td>"; 
    echo "<td>" . $row['prog'] . "</td>"; 
    echo "<td>" . $row['graddate'] . "</td>"; 
    echo "<td>" . $row['startdate'] . "</td>"; 
    echo "<td>" . $row['grad'] . "</td>"; 
    echo "<td><a href=" . $row['cvfilename'] .">" . $row['cvfilename'] ."</a></td>"; 


    echo "</tr>"; 
    } 
echo "</table>"; 

//Get total count of rows then ceil divide by 20 as pages 
$sql = "SELECT COUNT(*) as 'num' FROM cv"; 
$total_pages = $con->query($sql) or die(mysqli_error($connection)); 
$row = $total_pages->fetch_assoc(); 
$total_pages = ceil($row['num']/20); 

for ($i=1; $i<=$total_pages; $i++) { 
      //Can I ?page= and ?sort= ?????? 
      echo "<a href='new3.php?page=".$i."'>".$i."</a> "; 
}; 

mysqli_close($con); 
?> 

Резюме, пожалуйста, помогите мне исправить разбиение на страницы, пусть он работает с сортировкой и, наконец, добавляет флажок удаления в каждую строку. :)

+1

http://stackoverflow.com/a/8255054/285587 свести все, что беспорядок с мильоном запросами –

ответ

1

Вы знаете, вы можете оптимизировать, что весь блок «иначе если» заявления просто присваивая

$ _GET переменной: $ Тип = $ _GET;

Затем используйте это в своем mysqli: $ result = mysqli_query ($ con, "SELECT * FROM cv ORDER BY $ type");

Для ограничения использования результатов LIMIT: $ result = mysqli_query ($ con, "SELECT * FROM cv ORDER BY $ type LIMIT 20, $ page");

20 = сколько вернуть $ страницы = где вы хотите, чтобы результаты, чтобы начать с

+0

Common Sence & Благодарю вас;) – presdec

+0

@ ваш-здравый смысл, но теперь я получаю :(!) Примечание: Неопределенный индекс: сортировка по C: \ wamp \ www \ mena \ index2.php в строке 10 '$ orders = array (" title "," fname "," lname "," gender "," dob "," nationality "," language "," phone "," email "," uni », "проги", "graddate", "StartDate", "град"); // имена полей $ key = array_search ($ _ GET ['sort'], $ orders); // видим, есть ли у нас такое имя $ orderby = $ orders [$ key]; // если нет, то первый будет установлен автоматически. smart enuf :) $ query = "SELECT * FROM cv ORDER BY $ orderby"; // value is safe $ result = mysqli_query ($ con, $ query); ' – presdec

+0

строка 10: '$ key = array_search ($ _ GET [' sort '], $ orders); // посмотрим, есть ли у нас такое имя ' – presdec

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