2013-04-14 2 views
0

Я делаю чат во flash as3 с базой данных php и mysql. Однако я вообще не знаю php и получаю проблемы с обновлением сообщений. сейчас мой файл PHP выглядит следующим образом:Анализ переменных с помощью PHP с помощью Flash

$caster = $_POST['caster']; 
$msgText = $_POST['msgText']; 
$sendTime = $_POST['sendTime']; 

$query = "INSERT INTO chat VALUES ('','$sendTime','$caster','$msgText')" 
mysql_query($query); 
$query="SELECT * FROM chat"; 
$result=mysql_query($query); 
$cast=mysql_result($result,1,"caster"); 
mysql_close(); 

$returnVars = array(); 
$returnVars['success'] = $success; 
$returnVars['caster'] = $cast; 
$returnString = http_build_query($returnVars); 
echo $returnString; 

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

Благодаря

ответ

0

То, что вы ищете "fetchAll". Обратите внимание, что ваш код открыт для SQL-инъекции, очень легко отбросить вашу базу данных, передав злые значения скрипту PHP. Поэтому я изменил код из устаревшего расширения Mysql на PDO. PDO будет сбрасывать значения для вас. Подробнее о PDO в руководстве PHP (множество примеров).

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

// database config parameters 
$dbhost = "localhost"; 
$dbname = "test"; 
$dbuser = "root"; 
$dbpass = ""; 


try { 

    // try to set up a db connection 
    $db = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 

    // insert the data using PDO's prepared statements 
    // you have to adapt this line to the field names of your chat table!! 
    $sql = "INSERT INTO chat (sendtime,caster,msg) VALUES (:sendtime,:caster,:msg)"; 
    $sth = $db->prepare($sql); 
    $sth->execute(array(
     ':caster' => $_POST['caster'], 
     ':sendtime' => $_POST['sendTime'], 
     ':msg' => $_POST['msgText'] 
    )); 


    // Get everything 
    $sth = $db->prepare("SELECT * FROM chat"); 
    $sth->execute(); 
    $result = $sth->fetchAll(PDO::FETCH_ASSOC); 
    // your code to format and return the data goes here 
    print json_encode($result); 
} 
catch (PDOException $e) { 
    // if anything related to the database goes wrong, catch the exceptions 
    print "Error!: " . $e->getMessage() . "<br/>"; 
    die(); 
} 

$db = null; 

Actionscript получит объект JSON ищет похожее на это:

[ 

    { 

     "sendtime":"2013-04-14", 

     "caster":"person1", 

     "msg":"Message 1" 

    }, 

    { 

     "sendtime":"2013-04-15", 

     "caster":"person2", 

     "msg":"Message 2" 

    } 
] 

Как вы можете видеть, что JSON не имеет конкретного имени переменной, как в варианте с GET используется в вопросе (метод используемый в вопросе, не работает для больших списков результатов).

Итак, как вы работаете с документом JSON в ActionScript? Я не программист ActionScript, но этот пост Stackoverflow выглядит как разумный ответ на эту проблему:

Get and parse JSON in Actionscript

+0

Ok. Но как мне теперь получить переменные? Я не знаю их имен. –

+0

проверить, если «print json_encode ($ result);» вместо print_r ($ result) работает для вас в комбинации с ActionScript. Это преобразует ассоциативный массив в JSON, и должно быть легко выполнить итерацию по элементам массива с помощью Actionscirpt. – herrjeh42

+0

soooo, я получу массив с именем result as as? –

Смежные вопросы