2013-10-10 4 views
0

Я пытаюсь запрограммировать запрос базы данных mysql с помощью Dragonfire SDK. Но в качестве ответа я получил весь HTML-Structur вместо одной переменной. В этом примере я хочу получить имя для введенного имени. Есть идеи?Ответ SDK от Dragonfire от PHP

PHP:

<?php $Fname= $_GET[Fname];

$abfrage = "SELECT * FROM Names WHERE Fname = '$Fname'";

$ergebnis = mysql_query($abfrage);

while($row = mysql_fetch_object($ergebnis))

{

echo $row->Lname;

} ?>

С ++:

int OnResponse(int event, char *response, int length)

{

response[length]=0;

TextSetText(NameResponse, response); 

    return(length); 

}

Реакция выглядит следующим образом: <html> <head> <title>PHP-Test</title> </head> <body> </body> </html>Polo

Но я хочу только «Polo».

ответ

0

Поскольку PHP работает внутри веб-страницы, его вывод будет завершен внутри веб-страницы, а NetSend() не имеет возможности выделять биты в результате чего веб-страница вы хотите от тех, которые у вас нет. Предполагая, что вы не можете заставить свой PHP заменить веб-страницу каким-то плоским текстом, а не просто добавлять к нему текст (я не знаю, достаточно PHP, чтобы предлагать что-нибудь там), вам понадобится обратный вызов NetSend() для анализа вывода на найдите бит, который вы хотите. Например:

char *SkipWhiteSpace(char *cp) 
{ 
    while (cp && *cp && cp-response < length && (*cp==' ' || *cp=='\t')) cp++; 
    return cp; 
} 

int OnResponse(int event, char *response, int length) 
{ 
    char *cp = response; 

    cp = SkipWhiteSpace(cp); 
    while (cp && *cp && cp-response < length && *cp=='<') { 
    while (cp && *cp && cp-response < length && *cp!='>') cp++; 
    cp++; 
    cp = SkipWhiteSpace(cp); 
    } 
    if (!cp || !*cp || cp-response >= length) return -1; 
    // cp now points to the beginning of the desired string 
    //... 
} 
Смежные вопросы