2015-04-20 2 views
-4

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

Я создал колонку в своем db.

Чат работает нормально, но этот код для цвета не работает, и этот код для удаления старого сообщения также не работает.

Редактировать: О, я создал цвет колонки в неправильной таблице.

<?php 
session_start(); 
$uname = $_SESSION['username']; 
$msg = $_REQUEST['msg']; 

$con = mysql_connect('fdb13.biz.nf','18213213wqeqwed_chat','mewqe132131dddd1'); 
mysql_select_db('1846946_chat',$con); 

mysql_query("INSERT INTO logs (username,msg) VALUES ('$uname','$msg')"); 

$result = mysql_query("SELECT * FROM logs ORDER by id DESC"); 
$resultc = mysql_query("SELECT * FROM korisnici ORDER by color DESC"); 

while(($extract = mysql_fetch_array($result))||($extractc = mysql_fetch_array($resultc))){ 
     echo "<span style='color:" . $extractc['color'] . ";' class='uname'>" . $extract['username'] . "</span> <span class='msg'>" . $extract['msg'] . "</span><br>"; 
    } 
?> 
$result2 = mysql_query("SELECT * FROM logs username"); 
if($result2==3){ 
mysql_query("DELETE FROM logs"); 
     } 
?> 
+1

недостающее ' '' в вашем mysql_connect вызов в исходном коде? – andrewsi

+0

Нет, это нормально. :) – Kiriyaga

+0

сообщите нам об ошибке, которую вы получаете, и я не получил строку 'mysql_query (« DELETE FROM logs »);' –

ответ

0

Вы не можете иметь условие OR (||) в вашем while заявлении. Он будет перебирать только один из двух результирующих запросов, а не обоих. Вы можете сделать 2 отдельные в то время как петли и сохранить resultquery в массиве вместо:

$result = mysql_query("SELECT * FROM logs ORDER by id DESC"); 
$resultc = mysql_query("SELECT * FROM korisnici ORDER by color DESC"); 

$resultArray = []; 
$resultcArray = []; 

// Put your results in an array 
while($extract = mysql_fetch_array($result)){ 
    $resultArray[] = $extract; 
} 
while($extractc = mysql_fetch_array($resultc)){ 
    $resultcArray[] = $extract; 
} 

// Now loop over (one of) the arrays 
for($i = 0; $i < $resultArray; $i++) { 
    echo "<span style='color:" . $resultcArray[$i]['color'] . ";' class='uname'>" . $resultArray[$i]['username'] . "</span> <span class='msg'>" . $resultArray[$i]['msg'] . "</span><br>"; 
} 

Однако это, скорее всего, не даст вам разыскиваемых результаты, потому что массивы не будут иметь одинаковую длину + они не связаны друг другу. Вам нужно будет использовать sql-запрос JOIN вместо 2 SELECT.

Так что-то вроде:

$results = mysql_query("SELECT * FROM logs 
         INNER JOIN korisnici 
         ON logs.username = korisnici.username 
         ORDER by logs.id, color DESC"); 
// You will need 2 columns with the same value to couple them to eachother, I took username as example 

while($extract = mysql_fetch_array($results)){ 
    echo "<span style='color:" . $extract['color'] . ";' class='uname'>" . $extract['username'] . "</span> <span class='msg'>" . $extract['msg'] . "</span><br>"; 
} 
+0

Это дает мне ошибку. Предупреждение: mysql_fetch_array() ожидает, что параметр 1 будет ресурсом, boolean указан в /srv/disk6/1846946/www/maturskichat.co.nf/logs.php в строке 11 – Kiriyaga

+0

@Kiriyaga Это сообщение об ошибке очень ясно. Вы уже пробовали его решить? –

+0

@ Dark Ashelin так что результаты должны быть правдой, но я не знаю, как это решить. – Kiriyaga

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