i built my rest api and working fine. I use my api for my web application .I can fetch all data from my api with json_decode and foreach operations but i have issue when i try to fetch only 1 row with $_GET['id'] from my api. So here is my data after json decoded with json_decode():
array(4) {
[0] => array(4) {
["id"] => string(1)
"1" ["title"] => string(88)
"Twitter, Yanıt İstemleri Özelliğini Twitter’ı Türkçe Kullanan Herkese Getiriyor" ["details"] => string(1443)
"Twitter, Türkçe Yanıt İstemleri özelliğinin başarılı geçen deneme sürecinden sonra, bu özelliğin 2 Ağustos’tan itibaren iOS, Android ve Web için globalde Twitter’ı Türkçe dilinde kullanan kullanıcıların tümüne sunacağını açıkladı. Twitter, bu özelliği 2022’nin başından bu yana, dünyanın çeşitli bölgelerinde test ediyordu. Reply Prompts yani Yanıt İstemleri özelliği, bir Tweet’e yanıt olarak zararlı olabilecek bir dil (hakaret, kaba dil veya nefret dolu sözler) algıladığımızda görünür. Bu özellik, insanlara yazdıklarını yeniden düşünme ve potansiyel olarak yanıtı silme veya değiştirme şansı veriyor. Twitter’dan yapılan açıklamada, şu ifadelere yer verildi: “Geçen yıl, konuşmaları daha medeni hale getirmenin ve Twitter’daki genel konuşmanın sağlığını iyileştirmenin bir yolu olarak ABD ve Brezilya’daki insanlara yönelik yanıt istemleri özelliğini başlattık. Bu test, ABD’deki kişilerin %30’unun ve Brezilya’daki kişilerin %47’sinin, sorulduktan sonra yanıtlarını değiştirmesi veya silmesiyle sonuçlandı. Bu özelliği Türkçe olarak test ettikten sonra, tüm dünyada Türkçe dil ayarlarına sahip olan herkese sunmaya hazırız. Bu başarıyı dünyanın her yerindeki insanların Twitter’daki deneyimlerine yansıtmak amacıyla bu özelliği farklı pazarlarda ve dillerde de test etmeye devam edeceğiz.”" ["poster_link"] => string(61)
"https://www.technopat.net/wp-content/uploads/2016/11/twit.jpg"
} [1] => array(4) {
["id"] => string(1)
"2" ["title"] => string(55)
"Ericsson, Qualcomm ve Thales, 5G’yi Uzaya Taşıyacak" ["details"] => string(5112)
"Ericsson, Fransız havacılık ve uzay şirketi Thales ve kablosuz teknoloji geliştiricisi Qualcomm Technologies ile birlikte 5G’yi dünyanın sınırlarının dışına çıkarıp, yörüngedeki uydulardan meydana gelen bir ağ oluşturmayı planlıyor. Projeyle birlikte geleceğin 5G akıllı telefonlarının kullanım alanı genişleyecek. Bu sayede yalnızca veri bağlantısı sunan geleneksel uydu telefonları yoluyla iletişim kurulabilen bölgelerle sınırlı kalınmayıp, dünyanın her yerinde 5G bağlantıdan ve geniş bant veri hizmetlerinden yararlanabilme potansiyeline erişilecek. Alçak Dünya Yörüngesinde (ADY) bulunan uydular yoluyla sağlanan 5G bağlantının en zorlu coğrafyaları; denizleri, okyanusları ve karasal bağlantı imkanının bulunmadığı diğer ücra bölgeleri kapsama alanına dahil etmesi bekleniyor. Bu ölçüde yaygın bir kapsama alanının, hem 5G akıllı telefon abonelerine sunulan dolaşım hizmetlerini iyileştirmesi, hem de taşımacılık, enerji ve sağlık sektörlerinin 5G kullanım senaryolarından yararlanması amaçlanıyor. Uzay tabanlı ağlar aynı zamanda karasal ağların beklenmedik kesintiler veya doğal afetler sebebiyle kullanılamadığı durumlarda yedek iletişim ağı olarak görev yapabilecek. Ericsson Kıdemli Başkan Yardımcısı ve CTO’su Erik Ekudden konuyla ilgili şunları kaydetti: “Ericsson, Thales ve Qualcomm Technologies’in bu teknolojiyi test etmek ve doğrulamak için kurduğu iş birliği, iletişim tarihinde önemli bir kilometre taşı olma niteliği taşıyor. Nihayetinde bu teknoloji, birlikte çalışan 5G uydular ve karasal bağlantılar yoluyla gerek okyanusun ortasında gerek ücra bir bölgedeki ormanın içinde olsun, dünyanın her noktasındaki kullanıcılara gelişmiş, güvenli ve ulaşılabilir iletişim imkanı sunacak. Ericsson Türkiye Genel Müdürü Işıl Yalçın, “Ericsson’un sınırsız olasılıklar sunan sınırsız bağlantılar vizyonu, yavaş yavaş gerçeğe dönüşüyor. Ericsson, Thales ve Qualcomm Technologies arasındaki test ve validasyon işbirliği, okyanuslar ve ormanlar gibi dünyanın en ücra ve zorlu bölgelerinde bağlantı imkanı sağlayacak. Bu da herkesin ve her şeyin, her yerden güvenli ve uygun maliyetli bir şekilde birbirine bağlanabileceği bir dünyanın kapısını aralıyor. Aynı zamanda mevcut karasal ağların doğal afetler sebebiyle hizmet vermediği durumlarda yedek iletişim ağı olarak görev yapabilecek olması da önemli bir değer yaratıyor” açıklamasını yaptı. Qualcomm Technologies Mühendislikten Sorumlu Kıdemli Başkan Yardımcısı John Smee, şu açıklamayı yaptı: “5G’nin her yerde her zaman bağlantı sağlama taahhüdünün yerine getirilebilmesi için, bu ağın kapsama alanının okyanuslar ve ücra bölgeler gibi karasal hücresel ağların ulaşamadığı noktalara da genişletilmesi şart. Ericsson ve Thales ile birlikte planladığımız bu araştırma sayesinde, hayati bir öneme sahip bu teknolojiyi gerçeğe dönüştürmek yolunda önemli bir adım atmış olacağız. Bu iş birliğinin neler başarabileceğini görmek için sabırsızlanıyoruz.” Thales Strateji, Araştırma ve Teknolojiden Sorumlu Kıdemli Başkan Yardımcısı Philippe Keryer, şu değerlendirmede bulundu: “5G ağlarının hizmete alınması, telekomünikasyon endüstrisi için büyük bir değişime işaret ediyor. Bu, yalnızca sunduğu iş fırsatları açısından değil, aynı zamanda milyarlarca insanı ve nesneyi birbirine bağlamak ve güvenliklerini sağlamak için sunduğu özellikler yönünden de oyunun kurallarını değiştiren bir gelişme. Thales, bu ortak araştırma grubunun birçok çalışmasıyla yakından ilgileniyor. Ericsson ve Qualcomm Technologies ile kurduğumuz bu iş birliği, 5G karasal olmayan ağların devrimsel özelliğine ve ağ dayanıklılığı ile güvenliğini sonraki seviyeye taşıma potansiyeline olan inancımızın bir göstergesi niteliğinde.” Küresel telekomünikasyon standartları kurumu 3GPP’nin Mart 2022’de verdiği onayın ardından, Ericsson, Thales ve Qualcomm Technologies’in başlattığı bu ilk test ve validasyon çalışmasında karasal olmayan ağların desteklenmesi amaçlanıyor. Test kapsamında, 5G karasal olmayan ağları oluşturacak 5G akıllı telefonlar, uydular ve karadaki 5G ağ bileşenleri gibi çeşitli teknoloji unsurlarının validasyonu gerçekleştirilecek. Ericsson, hızla hareket eden ADY uydular aracılığıyla yayılan radyo sinyallerini yakalamak üzere modifiye edilen bir 5G sanal RAN (vRAN) kümesini test ederek, uzay boşluğu ile Dünya’nın atmosferi arasında geçiş yapan 5G radyo dalgalarında ne gibi değişimler olduğu sorusuna yanıt arayacak. Thales ADY uydularda kullanıma uygun bir 5G radyo uydu sistemini test etmeyi planlarken, Qualcomm Technologies ise 5G NTN’lerin geleceğin 5G akıllı telefonlarında kullanılabileceğini kanıtlamak amacıyla geliştirilmiş test telefonlarından yararlanacak." ["poster_link"] => string(0)
""
And also my codes for fetching data from api:
$id = urldecode($_GET['id']);
$data = json_decode(file_get_contents("http://localhost/api/v1/news/$id"),true);
foreach($data as $result){
echo '<a href="newsDetails.php?id='.$result['id'].'"><h3>'.$result['title'].'</h3></a>
<img src="'.$result['poster_link'].'" alt="" srcset="">';
}
I got an error for the $id = urldecode($_GET['id']);
line that "Warning: Undefined array key "id" in C:\xampp\htdocs\api\index.php on line". So how can i fix this issue?
EDITED: Also i will share my codes for building my api
<?php
include("../config.php");
$db = new Db();
$connection = $db->getConnstring();
$request_method=$_SERVER["REQUEST_METHOD"];
switch($request_method)
{
case 'GET':
// Retrive Products
if(!empty($_GET["id"]))
{
$id=intval($_GET["id"]);
get_thenew($id);
}
else
{
get_news();
}
break;
default:
// Invalid Request Method
header("HTTP/1.0 405 Method Not Allowed");
break;
case 'POST':
// Insert Product
add_news();
break;
case 'PUT':
// Update Product
$id=intval($_GET["id"]);
update_news($id);
break;
case 'DELETE':
// Delete Product
$id=intval($_GET["id"]);
delete_news($id);
break;
}
function get_news()
{
global $connection;
$query="SELECT * FROM tb_news";
$response=array();
$result=mysqli_query($connection, $query);
while($row=mysqli_fetch_assoc($result))
{
$response[]=$row;
}
header('Content-Type: application/json');
echo json_encode($response);
}
function get_thenew($id=0)
{
global $connection;
$query="SELECT * FROM tb_news";
if($id != 0)
{
$query.=" WHERE id=".$id."";
}
$response=array();
$result=mysqli_query($connection, $query);
while($row=mysqli_fetch_assoc($result))
{
$response[]=$row;
}
header('Content-Type: application/json');
echo json_encode($response);
}
function add_news()
{
global $connection;
$data = json_decode(file_get_contents('php://input'), true);
$title=$data["title"];
$details=$data["details"];
$poster_link = $data["poster_link"];
echo $query="INSERT INTO tb_news SET title='".$title."', details='".$details."',poster_link='.$poster_link.'";
if(mysqli_query($connection, $query))
{
$response=array(
'status' => 1,
'status_message' =>'News Added Successfully.'
);
}
else
{
$response=array(
'status' => 0,
'status_message' =>'News Addition Failed.'
);
}
header('Content-Type: application/json');
echo json_encode($response);
}
function update_news($id)
{
global $connection;
$post_vars = json_decode(file_get_contents("php://input"),true);
$title=$post_vars["title"];
$details=$post_vars["details"];
$poster_link = $post_vars["poster_link"];
$query="UPDATE tb_news SET title='".$title."', details='".$details.", poster_link='.$poster_link.'' WHERE id=".$id;
if(mysqli_query($connection, $query))
{
$response=array(
'status' => 1,
'status_message' =>'News Updated Successfully.'
);
}
else
{
$response=array(
'status' => 0,
'status_message' =>'News Updation Failed.'
);
}
header('Content-Type: application/json');
echo json_encode($response);
}
function delete_news($id)
{
global $connection;
$query="DELETE FROM tb_news WHERE id=".$id;
if(mysqli_query($connection, $query))
{
$response=array(
'status' => 1,
'status_message' =>'News Deleted Successfully.'
);
}
else
{
$response=array(
'status' => 0,
'status_message' =>'News Deletion Failed.'
);
}
header('Content-Type: application/json');
echo json_encode($response);
}
?>
NEW EDIT: I also shared my array format of my data because still i can't figured that how can't i use $_GET['id']. Sorry i am new to php and still i can't fix the problem.
array(10) {
[0] => array(4) {
["id"] => string(1)
"1" ["title"] => string(88)
"Twitter, Yanıt İstemleri Özelliğini Twitter’ı Türkçe Kullanan Herkese Getiriyor" ["details"] => string(1443)
"Twitter, Türkçe Yanıt İstemleri özelliğinin başarılı geçen deneme sürecinden sonra, bu özelliğin 2 Ağustos’tan itibaren iOS, Android ve Web için globalde Twitter’ı Türkçe dilinde kullanan kullanıcıların tümüne sunacağını açıkladı. Twitter, bu özelliği 2022’nin başından bu yana, dünyanın çeşitli bölgelerinde test ediyordu. Reply Prompts yani Yanıt İstemleri özelliği, bir Tweet’e yanıt olarak zararlı olabilecek bir dil (hakaret, kaba dil veya nefret dolu sözler) algıladığımızda görünür. Bu özellik, insanlara yazdıklarını yeniden düşünme ve potansiyel olarak yanıtı silme veya değiştirme şansı veriyor. Twitter’dan yapılan açıklamada, şu ifadelere yer verildi: “Geçen yıl, konuşmaları daha medeni hale getirmenin ve Twitter’daki genel konuşmanın sağlığını iyileştirmenin bir yolu olarak ABD ve Brezilya’daki insanlara yönelik yanıt istemleri özelliğini başlattık. Bu test, ABD’deki kişilerin %30’unun ve Brezilya’daki kişilerin %47’sinin, sorulduktan sonra yanıtlarını değiştirmesi veya silmesiyle sonuçlandı. Bu özelliği Türkçe olarak test ettikten sonra, tüm dünyada Türkçe dil ayarlarına sahip olan herkese sunmaya hazırız. Bu başarıyı dünyanın her yerindeki insanların Twitter’daki deneyimlerine yansıtmak amacıyla bu özelliği farklı pazarlarda ve dillerde de test etmeye devam edeceğiz.”" ["poster_link"] => string(61)
"https://www.technopat.net/wp-content/uploads/2016/11/twit.jpg"
} [1] => array(4) {
["id"] => string(1)
"2" ["title"] => string(55)
"Ericsson, Qualcomm ve Thales, 5G’yi Uzaya Taşıyacak" ["details"] => string(5112)
"Ericsson, Fransız havacılık ve uzay şirketi Thales ve kablosuz teknoloji geliştiricisi Qualcomm Technologies ile birlikte 5G’yi dünyanın sınırlarının dışına çıkarıp, yörüngedeki uydulardan meydana gelen bir ağ oluşturmayı planlıyor. Projeyle birlikte geleceğin 5G akıllı telefonlarının kullanım alanı genişleyecek. Bu sayede yalnızca veri bağlantısı sunan geleneksel uydu telefonları yoluyla iletişim kurulabilen bölgelerle sınırlı kalınmayıp, dünyanın her yerinde 5G bağlantıdan ve geniş bant veri hizmetlerinden yararlanabilme potansiyeline erişilecek. Alçak Dünya Yörüngesinde (ADY) bulunan uydular yoluyla sağlanan 5G bağlantının en zorlu coğrafyaları; denizleri, okyanusları ve karasal bağlantı imkanının bulunmadığı diğer ücra bölgeleri kapsama alanına dahil etmesi bekleniyor. Bu ölçüde yaygın bir kapsama alanının, hem 5G akıllı telefon abonelerine sunulan dolaşım hizmetlerini iyileştirmesi, hem de taşımacılık, enerji ve sağlık sektörlerinin 5G kullanım senaryolarından yararlanması amaçlanıyor. Uzay tabanlı ağlar aynı zamanda karasal ağların beklenmedik kesintiler veya doğal afetler sebebiyle kullanılamadığı durumlarda yedek iletişim ağı olarak görev yapabilecek. Ericsson Kıdemli Başkan Yardımcısı ve CTO’su Erik Ekudden konuyla ilgili şunları kaydetti: “Ericsson, Thales ve Qualcomm Technologies’in bu teknolojiyi test etmek ve doğrulamak için kurduğu iş birliği, iletişim tarihinde önemli bir kilometre taşı olma niteliği taşıyor. Nihayetinde bu teknoloji, birlikte çalışan 5G uydular ve karasal bağlantılar yoluyla gerek okyanusun ortasında gerek ücra bir bölgedeki ormanın içinde olsun, dünyanın her noktasındaki kullanıcılara gelişmiş, güvenli ve ulaşılabilir iletişim imkanı sunacak. Ericsson Türkiye Genel Müdürü Işıl Yalçın, “Ericsson’un sınırsız olasılıklar sunan sınırsız bağlantılar vizyonu, yavaş yavaş gerçeğe dönüşüyor. Ericsson, Thales ve Qualcomm Technologies arasındaki test ve validasyon işbirliği, okyanuslar ve ormanlar gibi dünyanın en ücra ve zorlu bölgelerinde bağlantı imkanı sağlayacak. Bu da herkesin ve her şeyin, her yerden güvenli ve uygun maliyetli bir şekilde birbirine bağlanabileceği bir dünyanın kapısını aralıyor. Aynı zamanda mevcut karasal ağların doğal afetler sebebiyle hizmet vermediği durumlarda yedek iletişim ağı olarak görev yapabilecek olması da önemli bir değer yaratıyor” açıklamasını yaptı. Qualcomm Technologies Mühendislikten Sorumlu Kıdemli Başkan Yardımcısı John Smee, şu açıklamayı yaptı: “5G’nin her yerde her zaman bağlantı sağlama taahhüdünün yerine getirilebilmesi için, bu ağın kapsama alanının okyanuslar ve ücra bölgeler gibi karasal hücresel ağların ulaşamadığı noktalara da genişletilmesi şart. Ericsson ve Thales ile birlikte planladığımız bu araştırma sayesinde, hayati bir öneme sahip bu teknolojiyi gerçeğe dönüştürmek yolunda önemli bir adım atmış olacağız. Bu iş birliğinin neler başarabileceğini görmek için sabırsızlanıyoruz.” Thales Strateji, Araştırma ve Teknolojiden Sorumlu Kıdemli Başkan Yardımcısı Philippe Keryer, şu değerlendirmede bulundu: “5G ağlarının hizmete alınması, telekomünikasyon endüstrisi için büyük bir değişime işaret ediyor. Bu, yalnızca sunduğu iş fırsatları açısından değil, aynı zamanda milyarlarca insanı ve nesneyi birbirine bağlamak ve güvenliklerini sağlamak için sunduğu özellikler yönünden de oyunun kurallarını değiştiren bir gelişme. Thales, bu ortak araştırma grubunun birçok çalışmasıyla yakından ilgileniyor. Ericsson ve Qualcomm Technologies ile kurduğumuz bu iş birliği, 5G karasal olmayan ağların devrimsel özelliğine ve ağ dayanıklılığı ile güvenliğini sonraki seviyeye taşıma potansiyeline olan inancımızın bir göstergesi niteliğinde.” Küresel telekomünikasyon standartları kurumu 3GPP’nin Mart 2022’de verdiği onayın ardından, Ericsson, Thales ve Qualcomm Technologies’in başlattığı bu ilk test ve validasyon çalışmasında karasal olmayan ağların desteklenmesi amaçlanıyor. Test kapsamında, 5G karasal olmayan ağları oluşturacak 5G akıllı telefonlar, uydular ve karadaki 5G ağ bileşenleri gibi çeşitli teknoloji unsurlarının validasyonu gerçekleştirilecek. Ericsson, hızla hareket eden ADY uydular aracılığıyla yayılan radyo sinyallerini yakalamak üzere modifiye edilen bir 5G sanal RAN (vRAN) kümesini test ederek, uzay boşluğu ile Dünya’nın atmosferi arasında geçiş yapan 5G radyo dalgalarında ne gibi değişimler olduğu sorusuna yanıt arayacak. Thales ADY uydularda kullanıma uygun bir 5G radyo uydu sistemini test etmeyi planlarken, Qualcomm Technologies ise 5G NTN’lerin geleceğin 5G akıllı telefonlarında kullanılabileceğini kanıtlamak amacıyla geliştirilmiş test telefonlarından yararlanacak." ["poster_link"] => string(105)
"https://www.technopat.net/wp-content/uploads/2022/08/Ericsson-Qualcomm-ve-Thales-5Gyi-Uzaya-Tasiyacak.jpg"
I just wanna fetch only single row from my api with 'id'. My api endpoints are http://localhost/api/v1/news
and http://localhost/api/v1/news/{id}
so how should i use them?