2016-12-02 4 views
0

У меня ошибка, когда он не отправит идентификатор на страницу с $ _GET ['id'] (#/post? Id = 1)

Я получаю следующее сообщение об ошибке:

Notice: Undefined index: id in D:\xampp\htdocs\ls\includes\post.php on line 3 

См GitHub: https://github.com/liamstewart23/LSPortfolio

у меня есть страница блога. Список сообщений в блогах отлично работает.

Вопрос в том, когда я пытаюсь отправить идентификатор на мою страницу сообщений:

blog.php

<?php 
require_once("../admin/phpscripts/init.php"); 
$tbl="tbl_blog"; 
$getPosts = getAll($tbl); 
//echo $getPosts; 
?> 
<section id="blog"> 
<h2 class="hidden">Blog Posts</h2> 
<div class="row"> 
<div class="col-xs-12 col-sm-12 col-md-10 col-md-offset-1"><h2>Blog</h2></div> 
<div class="col-xs-12 col-sm-12 col-md-10 col-md-offset-1"><h3>My thoughts, beliefs and complaints.</h3></div> 
</div> 
<div class="row"> 
<div class="col-xs-12 col-sm-12 col-sm-offset-0 col-md-8 col-md-offset-2" id="blog-posts"> 
<?php 
if(!is_string($getPosts)){ 
while($row = mysqli_fetch_array($getPosts)){ 
     echo "<h1>{$row['b_title']}</h1>"; 
     echo "<span>Posted: {$row['b_date']} by {$row['b_author']}</span><br><br>"; 
     echo "<a href=\"#/post?id={$row['b_id']}\">Read Post...</a><br><br>"; 
     } 
     } else { 
     //echo "nope..."; 
     } 
     ?> 
    </div> 
</div> 

Post.php

<?php 
require_once("../admin/phpscripts/init.php"); 
echo $_GET["id"]; 
echo "hello"; 
?> 

Read.php (Вызывается в init.php с require_once)

<?php 
function getAll($tbl){ 
    require_once("config.php"); 
    $queryAll = "SELECT * FROM {$tbl}"; 
    //echo $queryAll; 
    $runAll = mysqli_query($link, $queryAll); 
    if($runAll) { 
     return $runAll; 
    } else { 
     $error = "There was an error accessing this information. Shoot me an email at [email protected]"; 
     return $error; 
    } 

    mysqli_close($link); //want to make sure that it is terminated, do not want anything accessible 
} 


function getPost($id, $tbl, $col) { 
    require_once("config.php"); 
    $querySingle = "SELECT * FROM {$tbl} WHERE {$col}={$id}"; 
    //echo $querySingle; 
    $runSingle = mysqli_query($link, $querySingle); 
    if($runSingle) { 
     return $runSingle; 
    } 
    else { 
     $error = "This is not the movie you are looking for..."; 
     return $error; 
    } 
    mysqli_close($link); 
} 
?> 
+0

Если вы загружаете post.php и ожидаете его разбора (как если бы он загружался через apache или другой сервер), у вас будет плохое время. Вы все равно можете использовать свой post.php как веб-сервис. Сделайте для него $ http (ajax) вызов, а не попробуйте загрузить загрузку клиентской части PHP-скрипта. Показать, что $ http возвращает в ваших html-шаблонах – Ronnie

+0

@ Ronnie, если бы вы могли показать мне, как это делается? Я новичок в этом. Было бы очень благодарно! –

+0

Вы уже делали ajax? – Ronnie

ответ

1

Так что вам нужно сделать запрос $http или ajax при общении со сценариями на стороне сервера, такими как PHP.

Угловая сторона клиента и не будет анализировать файлы PHP. Вы можете использовать $_GET, если вам нравится, и сделать запрос как

$http.get('http://some.url?id=someId') или я рекомендую использовать $_POST

var params = {id:someId}; 
$http.post('http://some.url',params); 

То есть, как сделать запрос HTTP на верхнем уровне. Вы должны знать, когда PHP возвращает что-то, поэтому давайте послушаем это.

var params = {id:someId}; 
$http.post('http://some.url',params).then(function(response) { 
    console.log(response); 
}); 

Вы увидите в консоли, что ваш скрипт возвращается, и в этот момент вы можете делать то, что вы хотите с данными в угловом приложении. Смотрите эту codepen для примера:

http://codepen.io/anon/pen/xRYVBB?editors=1010

Поскольку PHP не на codepen и это на моем сервере, вот как он выглядит.

ang-ajax-demo.php

<?php 
if (isset($_GET['id'])) { 
    echo "Blog data for id: " . $_GET['id']; 
} else { 
    echo "no id"; 
} 

Я настоятельно рекомендую вам переосмыслить то, как вы сделали ваше приложение. Избавьтесь от всех php-файлов и используйте html-файлы в качестве наших шаблонов. Вы хотите, чтобы ваши клиентские и серверные файлы были отключены. Ваше угловое приложение сделает HTTP (ajax) запросы к вашим файлам PHP.

+0

Мне до сих пор сложно схватить концепцию. Спасибо за вашу помощь! –

+0

Ну, если вы еще не сделали ajax до этого, я вижу, что вам трудно с этим справиться. Хотя этот учебник немного устарел, он по-прежнему актуальен: http://angularcode.com/simple-task-manager-application-using-angularjs-php-mysql/. Сделайте перерыв в своем проекте и пройдите через этот реальный быстрый , Это даст вам лучшее понимание AJAX и того, что вы пытаетесь сделать в своем приложении. – Ronnie

+0

Не могли бы вы объяснить эту часть дальше: \t vm = this; vm.getPost = function() { \t var randomId = Math.round (Math.random() * 1234); \t $ http.get ('http://ronnieswietek.com/ang-ajax-demo.php?id=' + randomId). Then (function (response) { \t console.log (response.data); vm.responseFromServer = response.data; }); } Как поменять его на ID из определенного блога из db? –