Как использовать Binding в Xamarin.Forms (.XAML), используя скрипт php и MySQL? - PullRequest
1 голос
/ 14 марта 2020

НУЖНА ПОМОЩЬ

Мы создаем кроссплатформенное приложение в xamarin (Android / IOS). Мы создали систему входа в наше приложение, передавая каждый раз при входе пользователя идентификатор пользователя из базы данных. Этот идентификатор отправляется на другие страницы нашего приложения, чтобы мы могли использовать этот идентификатор для доступа к другой информации (на других страницах нашего приложения) этого указанного c пользователя с указанным c Id.

Пример:

Мы передали идентификатор на страницу профиля пользователя, который вошел в систему. Как вы можете видеть на экране ниже, мы хотим получить имя пользователя этого пользователя, чтобы мы могли использовать его в нашем приложение.

1

Когда мы передаем идентификатор с помощью страницы HTML, мы получаем правильные данные из базы данных, как вы можете видеть. Именно этот контент мы хотим показывать вместо «Имя пользователя» (изображение с первого лица).

2

Сценарий php, который мы использовали для получения этого данные из нашей базы данных (не беспокойтесь о mysql -инъекции, приложение для нас jsut, мы изменим это позже):

<?php

$db = new mysqli('localhost', 'root', 'Antjim0809!','sendmeadrink_official');

$Id = mysqli_real_escape_string($db, $_POST['Id']);

$res = mysqli_query($db, "SELECT Username from User WHERE Id = '$Id'");

while ($row = $res->fetch_assoc())
{
    echo $row['Username'];
}

mysqli_close($db);

?>

Но когда мы пытаемся получить эту информацию с помощью Xamarin, мы получаем 'null' вместо 'Lucino23', как вы видите в выводе:

3

Код Xamarin нашей страницы профиля выглядит следующим образом (ProfilePage .XAML):

<Label Grid.Row="0"
       Grid.Column="0"
       Grid.ColumnSpan="3"
       Text="{Binding Username}"
       FontAttributes="Bold"
       FontSize="30"/>

Код (ProfilePage.XAML.cs)

readonly HttpClient client = new HttpClient(new HttpClientHandler());
    readonly user u = new user() { Id = string.Empty, Username = string.Empty, Email = string.Empty, Passwd = string.Empty, Age = string.Empty };

    public async void GetUserData(string Id)
    {
        HttpResponseMessage res;
        u.Id = Id;

        var content = new FormUrlEncodedContent(new[]
        {
            new KeyValuePair<string, string>("Id", u.Id)
        });

        res = await client.PostAsync("http://10.0.2.2/*/*/*/UsernameById.php", content);
        u.Username = await res.Content.ReadAsStringAsync();

        Console.WriteLine("-----------------------------------------");
        Console.WriteLine(u.Username);
        Console.WriteLine("-----------------------------------------");

    }

Я возобновляю: когда мы применяем весь код выше, «Имя пользователя» (Рисунок 1) ) пуста, и мы не можем видеть имя пользователя, которое хранится в базе данных. Поэтому мы хотим заменить имя пользователя на строковое значение в нашей базе данных указанного пользователя c, который вошел в систему.

Спасибо всем!

...