gersonab 1 Denunciar post Postado Setembro 30, 2013 Estou precisando retirar a vírgula do último registro , segue : header('Content-type: text/json'); echo '['; $separator = ""; $days = 16; echo $separator; $initTime = date("Y")."-".date("m")."-".date("d")." ".date("H").":00:00"; //$initTime = date("Y-m-d H:i:00"); $sql = mysql_query("SELECT * FROM tabela") or die (mysql_error()); $i = 0; $sep = ''; while ($cal = mysql_fetch_assoc($sql)){ echo ' { "date": "'.$cal['col1'].' '.$cal['col2'].'", "title": "'.$cal['col3'].'", "description": "'.$cal['col4'].'" }$XXXXX'; } $separator = ","; echo ']'; Onde eu coloquei $XXXXX é o caso, se for o último registro , não pode ter vírgula, se não , tem q ter vírgula ali . Agradeço qualquer ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 30, 2013 Basta usar o mysql_num_rows para saber quantos registros retornaram e monta um if/else para saber se é o último ou não. Compartilhar este post Link para o post Compartilhar em outros sites
gersonab 1 Denunciar post Postado Setembro 30, 2013 header('Content-type: text/json'); echo '['; $separator = ""; $days = 16; echo $separator; $initTime = date("Y")."-".date("m")."-".date("d")." ".date("H").":00:00"; //$initTime = date("Y-m-d H:i:00"); $sql = mysql_query("SELECT * FROM tabela") or die (mysql_error()); $total = mysql_num_rows( $sql ); $atual = 0; while ($cal = mysql_fetch_assoc($sql)){ if(++$atual == $total){ $sep = ''; } else { $sep = ','; echo ' { "date": "'.$cal['col1'].' '.$cal['col2'].'", "title": "'.$cal['col3'].'", "description": "'.$cal['col4'].'" }"'.$sep.'"'; } } $separator = ","; echo ']'; Mantem o erro ...... error getting json este código seria assim o echo : echo ' { "date": "2013-03-19 17:30:00", "title": "Test Last Year", "description": "Lorem Ipsum dolor set" },'; echo ' { "date": "2013-03-20 17:30:00", "title": "Test Last Year", "description": "Lorem Ipsum dolor set" },'; echo ' { "date": "2013-03-21 17:30:00", "title": "Test Last Year", "description": "Lorem Ipsum dolor set" },'; echo ' { "date": "2013-03-22 17:30:00", "title": "Test Last Year", "description": "Lorem Ipsum dolor set" }'; Vejam que o último echo não tem a vírgula . Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 30, 2013 Use $atual = 1; E $sep = ($atual == $total)?'':','; Incremente o $atual antes de fechar o laço. Compartilhar este post Link para o post Compartilhar em outros sites
gersonab 1 Denunciar post Postado Setembro 30, 2013 $sql = mysql_query("SELECT * FROM calendar_event") or die (mysql_error()); $total = mysql_num_rows( $sql ); while ($cal = mysql_fetch_assoc($sql)){ $atual = 1; $sep = ($atual == $total)?'':','; echo ' { "date": "'.$cal['col1'].' '.$cal['col2'].'", "title": "'.$cal['col3'].'", "description": "'.$cal['col4'].'" }"'.$sep.'"'; Manteve o erro. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 30, 2013 Basta usar a cabeça, você está criando a variável $atual DENTRO do laço, então o valor dela sempre será 1... crie ela ANTES do laço, dentro do laço (antes de fechar ele) incremente o valor dela. Compartilhar este post Link para o post Compartilhar em outros sites
gersonab 1 Denunciar post Postado Setembro 30, 2013 Nobre ESerra, desculpe, não estou entendendo o q vc quer dizer com : crie ela ANTES do laço, dentro do laço (antes de fechar ele) incremente o valor dela. Fiz assim : $sql = mysql_query("SELECT * FROM calendar_event") or die (mysql_error()); $total = mysql_num_rows( $sql ); $atual = 1; $sep = ($atual == $total)?'':','; while ($cal = mysql_fetch_assoc($sql)){ echo ' { "date": "'.$cal['col1'].' '.$cal['col2'].'", "title": "'.$cal['col3'].'", "description": "'.$cal['col4'].'" }"'.$sep.'"'; e assim : $sql = mysql_query("SELECT * FROM calendar_event") or die (mysql_error()); $total = mysql_num_rows( $sql ); $atual = 1; while ($cal = mysql_fetch_assoc($sql)){ $sep = ($atual == $total)?'':','; echo ' { "date": "'.$cal['col1'].' '.$cal['col2'].'", "title": "'.$cal['col3'].'", "description": "'.$cal['col4'].'" }"'.$sep.'"'; Continua o erro. Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 30, 2013 Abaixo o código já mastigado, é copiar/colar: header('Content-type: text/json'); echo '['; $separator = ""; $days = 16; echo $separator; $initTime = date("Y")."-".date("m")."-".date("d")." ".date("H").":00:00"; //$initTime = date("Y-m-d H:i:00"); $sql = mysql_query("SELECT * FROM tabela") or die (mysql_error()); $total = mysql_num_rows( $sql ); $atual = 1; while ($cal = mysql_fetch_assoc($sql)){ $sep = ($atual == $total)?'':','; echo ' { "date": "'.$cal['col1'].' '.$cal['col2'].'", "title": "'.$cal['col3'].'", "description": "'.$cal['col4'].'" }"'.$sep.'"'; $atual++; } $separator = ","; echo ']'; Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Setembro 30, 2013 trim resolve a parada $sql = trim($sql, ','); Outra coisa: se vai criar um json, porque não joga tudo dentro de um array associativo e no final chama um json_encode? Compartilhar este post Link para o post Compartilhar em outros sites
gersonab 1 Denunciar post Postado Setembro 30, 2013 $sql = mysql_query("SELECT * FROM tabela") or die (mysql_error()); $max = mysql_query("SELECT id FROM tabela ORDER BY id DESC LIMIT 1 ") or die (mysql_error()); $atual = mysql_fetch_assoc($max); $maxid = $atual['id']; while ($cal = mysql_fetch_assoc($sql)){ $idsql = $cal['id']; $col1=$cal['col1']; $col2=$cal['col2']; $col3=$cal['col3']; $col4=$cal['col4']; if ($idsql != $maxid){ echo ' { "date": "'.$col1.' '.$col2.'", "title": "'.$col3.'", "description": "'.$col4.'" },'; } else { echo ' { "date": "'.$col1.' '.$col2.'", "title": "'.$col3.'", "description": "'.$col4.'" }'; } } Da forma passada não funcionou, conforme acima descrito sim, porém acredito que tenha uma forma mais correta d se fazer. Compartilhar este post Link para o post Compartilhar em outros sites
hufersil 145 Denunciar post Postado Setembro 30, 2013 muuuuuuito mais simples... $sql = 'select id, CONCAT(col1," ",col2) as `date`, col3 as title, col4 as description from tabela order by id desc'; $resultSet = mysql_query($sql) or die(mysql_error()); $resultArray = array(); while($row = mysql_fetch_assoc($resultSet)){ $resultArray[] = $row; } echo json_encode($resultArray); Compartilhar este post Link para o post Compartilhar em outros sites
gersonab 1 Denunciar post Postado Setembro 30, 2013 hufersil PERFEITO eliminou todas as demais linhas . muito obrigado. Compartilhar este post Link para o post Compartilhar em outros sites