BG Development


  Reply to this topicStart new topicStart Poll

> PHP - Създаване на нова страница за всяко ID
miss
Публикувано на: 31-07-2018, 15:09
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 14.04.15



Опитвам се да наредя линкове в една страница например home.php, като взимам информация за ID и NAME на линка от базата данни:

CODE

<?php
   $sql = "SELECT id, name FROM brands";
   $result = mysqli_query($dbconnect, $sql);
   if (mysqli_num_rows($result) > 0) {
       while($row = mysqli_fetch_assoc($result)) {
           echo '<li>';
           echo '<a href="http://example.com/brands.php?id=' . $row['id'] . '">' . $row['name'] . '</a>';    
              echo '</li>';
       }
   }
?>


В таблица brands колоната ID е primary и сочи към foreign key в таблица models и всяко ID от brands има модели в таблица models

Получиха ми се линковете, като съответно всеки линк си сочи към ID-to (brands.php?id=1,2,3,4 и т.н.)

След като кликна например на линк brands.php?id=1 как да взема информация от базата данни какво съдържа id=1, за да мога след това да визуализирам моделите за съответното ID?
PMEmail Poster
Top
Mephistopheles
Публикувано на: 31-07-2018, 18:14
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 3
Регистриран на: 30.07.18



Проверка:

CODE
if(!isset($_GET['id'])){
echo "Некоректен URL-адрес, липсва ID";
exit;
}

$id=intval($_GET['id']);

if(!$id){
echo "Некоректен URL-адрес, ID не е числена стойност";
exit;
}



Проверката и присвояването на стойност (ако не бъркам синтаксиса и стойностите, които връща intval() - не съм писал код от почти 10 г.) може да се направи и съкратено:

CODE
if(!isset($_GET['id']) || !$id=intval($_GET['id'])){
echo "Некоректен URL-адрес, липсва ID или ID не е числена стойност";
exit;
}



Заявката към БД-то ще изглежда така:

CODE
$sql = "SELECT name FROM brands WHERE id='$id' LIMIT 1";


За принтиране на стойности, особено когато имаш HTML и променливи, би могъл да използваш синтаксис <<< heredoc (виж втория пример в линка):

http://php.net/manual/bg/language.types.string.php

Дано съм те ориентирал! icon_wink.gif

Това мнение е било редактирано от Mephistopheles на 31-07-2018, 18:16
PMEmail Poster
Top
miss
Публикувано на: 31-07-2018, 18:42
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 19
Регистриран на: 14.04.15



QUOTE (Mephistopheles @ 31-07-2018, 18:14)
Проверка:

CODE
if(!isset($_GET['id'])){
echo "Некоректен URL-адрес, липсва ID";
exit;
}

$id=intval($_GET['id']);

if(!$id){
echo "Некоректен URL-адрес, ID не е числена стойност";
exit;
}



Проверката и присвояването на стойност (ако не бъркам синтаксиса и стойностите, които връща intval() - не съм писал код от почти 10 г.) може да се направи и съкратено:

CODE
if(!isset($_GET['id']) || !$id=intval($_GET['id'])){
echo "Некоректен URL-адрес, липсва ID или ID не е числена стойност";
exit;
}



Заявката към БД-то ще изглежда така:

CODE
$sql = "SELECT name FROM brands WHERE id='$id' LIMIT 1";


За принтиране на стойности, особено когато имаш HTML и променливи, би могъл да използваш синтаксис <<< heredoc (виж втория пример в линка):

http://php.net/manual/bg/language.types.string.php

Дано съм те ориентирал! icon_wink.gif

Ако SQL заявката изглежда така:
CODE
SELECT name FROM brands WHERE id='$id'


Очаква се като кликна на brands.php?id=1 да ми извади всички модели, чийто foreign keys сочат към ID 1 на brands.

Тази заявка вади от таблица brands, а не от models и вади само 1 запис, който е под номер 1 (тоест този LIMIT отзад е излишен, защото няма как да има 2 записа с един и същ primary key).

Въпроса ми е как би изглеждала тогава заявката?

Благодаря за другите материали и проверките!

EDIT: Успях да се оправя със заявката, изкарах всички модели за избрания бранд.

Ако някой след време има нужда, заявката изглежда така:
CODE
$sql = "SELECT name FROM models WHERE models.brand_id='$id'";


Ако имам други въпроси свързани с темата, ще я използвам отново за да ги задам.

Благодаря отново!

Това мнение е било редактирано от miss на 31-07-2018, 19:05
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2018 | BG Development | All Rights Reserved
RSS 2.0