2017-02-21 6 views
-2

Ich habe eine Articles.php Seite und eine Single.php Seite. Articles.php führt eine foreach-Schleife durch, die alle Artikel auflistet. Der href Anker für jeden Artikel ist:PHP GET ID aus articles.php

example.com/single.php?id=*ID* 

Probleme Ich habe diesen Artikel ID auf der einzelnen Seite greifen die MySQL-Reihe spezifisch zeigen:

<a href="single.php?id=<?php echo $article['id']; 

Wenn der Artikel-Link die URL klicken wird zu dieser ID. Folgendes wurde vorgeschlagen:

$id = filter_var($_GET['id'] ?? false, FILTER_VALIDATE_INT); 
if($id !== false){ 
    //show the article, i.e. select * from .... where id = id ... 
    echo "WORKING"; 
}else{ 
    //show the error like 404 
    echo "ERROR"; 
} 

dies sein sollte:

$id = $_GET($article['id']) 

Ich habe Probleme, diese Arbeit zu machen.

+0

Hi wie über Sie überprüfen, ob die ID eingestellt ist, bevor Sie versuchen, es zu bekommen. if (isset ($ _GET ['id'])) {$ id = $ _GET ['id']; } etwas wie das –

+2

Jut tun ein 'echo $ _GET ['id'];', um sicherzustellen, dass Sie die ID bekommen, die Sie erwarten. Sie benutzen auch 'filter_var()' falsch, da dort kein '?? 'oder' false' erlaubt ist. –

+0

Ich habe das übertrieben, es funktioniert jetzt. Vielen dank allen! – Evan

Antwort

1

Wert senden auf eine andere Seite mit ..

<a href="single.php?id=<?php echo $article['id'];?>">Link</a> //missing php close tag here 

es dann erhalten mit

$id = $_GET['id']; 
+0

könnte es leicht ein Vorschlag oder Kommentar gewesen sein. Nicht umfassend eine Antwort ... –

+0

@Mueyiwa Moses Ikomi ist dies die endgültige Antwort der Frage.Mistake von frischer in PHP getan. –

1
ok lets try this. 
on page 1 => article.php 
# we assume 
database query here 

$query = mysqli_query(//query here); 
// we then use a while loop 

while($q = $query->fetch_array()) 
{ 

    echo '<a href="single.php?id='.$q['id'].'">'.$q['article_name'].'</a>'; 

} 


ok on page single.php 

# we now have example.com/single.php?id=1 eg. 

// there are many ways to grab the id 

# option 1 

// inside single.php 

// method 1 

    $article_id = isset($_GET['id']) ? (int) $_GET['id'] : ""; 

// method 2 

    $article_id2 = ""; 

    if(isset($_GET['id'])) 
    { 
    $article_id2 = $_GET['id']; 
    } 


// now you have the value from the GET method within your local variable scope 
// so choose any of the method above 
// both works 

    hope this helps? 
0

Wie Hek mat sagte Sie die Clossing Tags verpasst:

<a href="single.php?id=<?php echo $article['id'];?>">Link</a> 

Aber Du hast deinen Code auch nicht korrekt $ _GET ['id'] gibt immer eine string "1" nicht eine int 1 und wenn die ID nicht gesetzt ist, würde dies zu einem Fehler führen. So versuchen Sie das:

if(isset($_GET['id']) && intval($_GET['id']) > 0){ 
    $id = intval($_GET['id']); // now work with $id its an int now 
    //show the article, i.e. select * from .... where id = id ... 
    echo "WORKING"; 
}else{ 
    //show the error like 404 
    echo "ERROR"; 
}