Phoegap / Cordova для загрузки определенной строки БД после AJAX GET - PullRequest
0 голосов
/ 08 марта 2019

Я создаю приложение, используя PHoneGap в качестве компилятора, используя HTML5, CSS, JQuery, AJAX и т. Д. Мне удалось получить AJAX, чтобы получить все строки из базы данных на отлично, так как мне нужно использовать расширение .HTML в моих файлах.Я изо всех сил пытаюсь быть в состоянии связать с определенной записью БД.Я могу сделать это отлично в PHP.Я борюсь с HTML-частью.

Вот мой AJAX Loader, чтобы получить все строки из БД

var inProcessVideos = false;//Just to make sure that the last ajax call is not in process
setTimeout( function () {
    if (inProcessVideos) {
        return false;//Another request is active, decline timer call ...
    }
    inProcessVideos = true;//make it burn ;)
    jQuery.ajax({
        url: 'https://MY-URL.COM/videos-mysql.php', //Define your script url here ...
        data: '', //Pass some data if you need to
        method: 'POST', //Makes sense only if you passing data
        success: function(answer) {
            jQuery('#videos-modules').html(answer);//update your div with new content, yey ....
            inProcessVideos = false;//Queue is free, guys ;)
        },
        error: function() {
            //unknown error occorupted
            inProcessVideos = false;//Queue is free, guys ;)
        }
    });
}, 500 );

А вот содержимое файла PHP, который отображает все результаты из базы данных.Эта часть отлично отображает содержание.

<?php
include ("../config/mysqli_connect.php");

$sql = ("SELECT * FROM videos");
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // output data of each row
    while($row = mysqli_fetch_assoc($result)) {
        echo "
<a href='" . $row["id"]. "'>
<div class='video-module'>
	<div class='video-thumb'><img src='https://MY-URL.COM/thumbs/" . $row["video_thumb"]. "'></div>
	<div class='video-thumb-details'>
		<div class='video-thumb-title'>&nbsp;" . $row["id"]. " - " . $row["video_title"]. "</div>
" . $row["publisher_name"]. "
</div>
	</div></a>


		";
    }
} else {
    echo "0 results";
}


?>

После оператора ECHO я обычно добавляю что-то вроде video-Profile.php? Id = $ id, и он переходит на эту страницу и извлекает эту запись из базы данных..

Однако теперь, когда мне нужно сделать это только в HTML, и я предполагаю AJAX, как этого добиться.

Вот PHP и MYSQL-запрос для получения конкретной записи изБаза данных.В настоящее время он работает на MYSQL, я преобразую его в MYSQLi, как только у меня получится, и я обдумаю его.

<?php
// Use the URL 'id' variable to set who we want to query info about
$id = ereg_replace("[^0-9]", "", $_GET['id']); // filter everything but numbers for security
if ($id == "") {
	echo "Missing Data to Run";
	exit();
}
//Connect to the database through our include 
include_once "../config/connect_to_mysql.php";
// Query member data from the database and ready it for display
$sql = mysql_query("SELECT * FROM videos WHERE id='$id' LIMIT 1");
$count = mysql_num_rows($sql);
if ($count > 1) {
	echo "There is no user with that id here.";
	exit();	
}
while($row = mysql_fetch_array($sql)){
$id = $row["id"];
$video_title = $row["video_title"];
$video_thumb = $row["video_thumb"];
$publisher_name = $row["publisher_name"];
$video_directory = $row["video_directory"];
$video_path = $row["video_path"];
$upload_date = $row["upload_date"];
$video_views = $row["video_views"];

}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Untitled Document</title>
</head>

<body>
	<?php echo ("$id");?> - <?php echo ("$video_thumb");?>

</body>
</html>

Я знаю, что это работает, если я запускаю файлы PHP, и мой сервер настроен на PHPv5.3., Но перед тем, как я его включу, он будет отсортирован поMYSQLi и работает на PHP7 ???

Я ищу вдохновение, чтобы заставить его работать через файлы только HTML.

спасибо всем за помощь.

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Я пробовал это, но я не могу понять, как запустить консольный журнал, так как сейчас он работает на iOS iPad.Не могу заставить его отрендерить в Браузере.

var inProcessVideos = false;//Just to make sure that the last ajax call is not in process

setTimeout( function () {
    if (inProcessVideos) {
        return false;//Another request is active, decline timer call
    }
    inProcessVideos = true;//make it burn ;)
    jQuery.ajax({
        url: 'https://MYURL.COM/appFiles/tablet/video-profile.php', //Define your script url here ...
        data: '', //Pass some data if you need to
        method: 'GET', //Makes sense only if you passing data
			success: function(answer) {
    var contents = jQuery(answer); // You have now converted the HTML into a jquery model

    contents.filter(function(element){
       return $(element).attr('id') === id;
    });
    jQuery('#videoProfile').html(answer);//update your div with new content, yey ....
            inProcessVideos = false;//Queue is free, guys ;)
        },

    });
}, 500 );

Борясь с этим, я просмотрел все сайты JQuery, AJAX MySQL, которые я могу найти, включая W3Schools, Jquery.com и многие другие.Просто не могу заставить его передать идентификатор в файл PHP, чтобы получить запись из БД через AJAX.

Мои ссылки в первом вызове JQuery AJAX:

<a href='video-Profile.html' data='".$row["id"]."' value='".$row["id"]." '>Some HTML STUFF/Images/Text etc</a> 
Я могу получить идентификатор и первый вызов AJAX, чтобы показать ВСЕ строки в таблице БД.Теперь просто нужно показать запись по ID.Это то, что я не могу понять.И он должен быть на странице .HTML как приложение, скомпилированное через PhoneGap.Я знаю, что я повторяю себя, Просто не уверен, что я разъясняю свою мысль.Заранее спасибо за помощь.
0 голосов
/ 08 марта 2019

Это довольно грубый способ сделать это - обычно вы возвращаете JSON или подобное из PHP, а затем обрабатываете это в элементах HTML в вашем JS.Но для этого случая вы можете сделать это:

//within call
success: function(answer) {
    var contents = jQuery(answer); // You have now converted the HTML into a jquery model

    contents.filter(function(element){
       return $(element).attr('id') === id
    }) // This allows you to search your child elements and pick them based on criteria
    jQuery('#videos-modules').html(contents); // now assign the remaining elements into your html as before

},
...