2013-01-19 2 views
0

Я работаю над проектом, который позволяет мне создавать базу данных клиентов. Я создал Create.php и Delete.php, но у меня проблемы с базовой структурой для страницы редактирования.Использование PHP для объявления страницы url

Моя первоначальная идея заключается в том, чтобы создать населенную выпадающий (Что я могу сделать), которые по щелчку отвезут пользователь domain.com/Customer.php?Customer_name="JohnD»

Я имею Несколько вопросов относительно этого, поскольку он делает 2 вещи.

  1. Он распечатывает ВСЕ данные в моем столе в эхо.
  2. Он не принимает значения из URL-адреса, однако я знаю, что что-то пропустил, но не уверен, что мне нужно искать.

Вот мой сниппет до сих пор:

   <h2> 
       <?Php 
       $sql="SELECT id,customer_name FROM Customers"; 
       $result =mysql_query($sql); 
       while ($data=mysql_fetch_assoc($result)){ 
       ?> 
       <?Php echo $data['customer_name']; } ?> 
       </h2> 

Пока еще я получаю это в заголовке:

John Doe Джимми Тимми Test

Это все значения внутри мои строки для таблицы Customers.

Извините, если вопрос кажется повсеместным. Я исправлю, если это нелегко понять.

Заранее спасибо

+1

[** Пожалуйста, не используйте '' * mysql_ функции в новом коде **] (HTTP://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)?Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. – Kermit

+0

После прочтения всех сообщений я понял, что делаю неправильно. Отчасти это связано с тем, что мой идентификатор был странным номером в базе данных. –

ответ

1

использовать этот URL

domain.com/Customer.php?CID=1 

и код должен выглядеть

<?php 

      $customer_id = (int) $_GET['CID']; 

      $query = "SELECT id, customer_name FROM Customers 
          WHERE id = {$customer_id}"; 

      $result = mysql_query($query) or die('<p>' . $query . '</p><div>' . 
            mysql_error() . '</div>'); 

      $customer = mysql_fetch_assoc($result); 

?> 
<h2><?php echo $customer['customer_name'] ?></h2> 
+0

Я предполагаю WHERE ID = {customer_id} "; бы быть то, что у меня есть идентификатор для клиентов в моем MYSQL является Так ID CUSTOMER_NAME Адрес и т.д. –

+0

-1 для использования' функций mysql_' – Kermit

+0

да.?. вы можете использовать имя, адрес или любую другую информацию для поиска. Использование идентификатора означает, что вы ищете указанную запись и не хотите никакой другой записи. Вариант, например, поиск ключевого слова, используется, когда вы не уверены в том, что вы ищут. Если вы перечислите записи на предыдущей странице и соедините страницу, чтобы показать указанную запись, всегда используйте идентификатор. Я использовал функцию mysql, потому что этот парень выглядит для меня новичком и может не знать PDO, поэтому я решил свою проблему в коде, чтобы он мог хорошо знать .. это имеет смысл? – fkabeer

1

Вы должны использовать $_GET, чтобы получить параметры из URL.

<?php 

    //customer.php?Customer_name=JohnD (no quotes) 

    echo $_GET[Customer_name]; 

?> 

Вы бы затем использовать mysqli_ или PDO связать $_GET[Customer_name] и выполнить запрос. Если вы не привязываете параметры в своем SQL-запросе, вы будете уязвимы для SQL-инъекций.

+0

Здравствуйте, я не знал, что PHP избавился от этого. Благодарю. Извините, если это звучит запутанно, но я все еще пытаюсь понять метод, стоящий за этим. На моей заполненной странице выпадающего списка (Customerselect.php) я бы связал ее с «Customer.php? Customer_Name =». $ _GET [CUSTOMER_NAME]; Это правильно? Теперь я читаю mysqli, чтобы вносить изменения. –

+0

Вам следует использовать идентификатор. Если вы используете раскрывающийся список, у вас будет идентификатор клиента в качестве опции. – Kermit

1

Вам необходимо ограничить выбор SQL конкретным клиентом предложением where. И вы можете получить идентификатор клиента из запроса. Я предлагаю вам использовать идентификатор клиента, а не имя в раскрывающемся списке. Таким образом, URL-адрес будет:

domain.com/Customer.php?id=1 

На странице Customer.php вы можете получить значение с помощью $id = $_GET['id'];

Теперь, как для SQL вы должны использовать некоторые безопасный метод для запросов к базе данных говорят:

$dsn = 'mysql:host=localhost;dbname=mydb'; 
    $username = 'myun'; 
    $password = 'mypw'; 
    $options = array(
     PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', 
    ); 
    $dbh = new PDO($dsn, $username, $password, $options); 
    $stmt = $dbh->prepare("select id, Customer_name from customers where id = :id"); 
    $stmt->bindParam(':id', $id); 
    $stmt->execute(); 

    while($c = $stmt->fetch()){ 
      echo $c['customer_name']; 
    } 

Таким образом будут отображаться только данные для выбранного клиента.

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