2015-10-08 2 views
1

Я только начал изучать php и mysql, и я уже мог быть впереди себя. То, что я хотел бы создать, - это веб-страница, на которой ppl может подписаться на мероприятие, настолько хорошее, что форма для отправки своего имени, фамилии, возраста и адреса электронной почты работает и фактически отправляет информацию te в базу данных ,Как использовать имена вместо идентификаторов в динамических веб-страницах

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

Когда я нахожусь на моей странице http://www.example.com/ppl.php?id=1, я получаю информацию о первой записи базы данных, но я также хотел посмотреть, могу ли я заставить это работать с именами вместо ids, поэтому я попытался отредактировать свой код и использовать http://www.example.com/ppl.php?name=john. только возвращают ошибку, и, однако, в базе данных есть несколько человек, называемых john, никакие записи не отображаются.

Так что я хотел бы знать, действительно ли то, что я хочу, и как мне заставить это работать с моим текущим кодом.

<head> 
<link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<?php 
$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "event"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
    $id = $_GET['id']; 
    $firstname = 'firstname'; 
    $lastname = 'lastname'; 
    $age = 'age'; 

$sql = "SELECT * FROM people WHERE id = $id"; 

$result = $conn->query($sql); 

    echo "<table id='display' width='600' align='center'>"; 
    echo"<tr><td>&nbsp;Firstname</td> <td>&nbsp;Lastname</td> <td>&nbsp;Age</td>"; 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 

     echo"<tr><td width='33%'>&nbsp;$row[$firstname]</td> <td width='33%'>&nbsp;$row[$lastname]</td> <td width='33%'>&nbsp;$row[$age] cm</td></tr>"; 


    } 
} else { 
    echo "0 results"; 

} 
$conn->close(); 
?> 
+0

Я не вижу никакого кода, где вы $ _GET ["name"] и запрашиваете имя для правильных строк ..?! – Naruto

+0

Какая ошибка? –

ответ

0

Попробуйте изменить запрос:

$sql = "SELECT * FROM people WHERE id = $id"; 

To:

$name = $_GET['name']; 
$sql = "SELECT * FROM people WHERE name LIKE '%$name%'"; 

Тогда эхо для каждого одного Иоанна вы найдете.

Также рассмотрите возможность использования CSS.

<style> 
    #display { 
     width: 600px; 
    } 
    #display td { 
     width: 33%; 
    } 
</style> 
+0

Спасибо, Костас! Это было именно то, что мне нужно =) –

0

Вы должны искать два отдельных $_GET ключей: id ИЛИ name.

<?php 
if (isset($_GET['id'])) { 

    // logic to get row by ID 

} elseif (isset($_GET['name'])) { 

    // logic to get row by Name 

} else { 

    // logic if no $_GET keys are set 

} 

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

Редактировать: Для того, чтобы ответить на вопрос о том, где поместить это в примере кода выше, рассмотреть вопрос о размещении там, где объявляется строка запроса.

<?php 
if (isset($_GET['id'])) { 
    $id = $_GET['id']; 
    $sql = "SELECT * FROM people WHERE id = $id"; 
} elseif (isset($_GET['name'])) { 
    $name = $_GET['name']; 
    $sql = "SELECT * FROM people WHERE name = '$name'"; 
} 

Оттуда вы можете оставить ту же логику выполнения запроса. Но, как я сказал, я бы посоветовал использовать поле name в качестве ключа, потому что он может быть не уникальным.

+0

Спасибо за комментарий! Просто нужно выяснить, куда поместить эти строки в мой код, но определенно использовать это =) –

+0

Я сделал быстрое редактирование, чтобы помочь вам. – dsh

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