jokita18 0 Denunciar post Postado Julho 6, 2015 Olá criei este código para exibir estrelas de feedback. E tudo resulta bem. Se o feedback for 3,4,5 porem se o feeback for 1 ou 2 As estrelas 3,4,5aparecem vazias(sem a class “teste” .como deveria) porem a estrela 1 e 2 não aparecem nem cheias nem vazias. Simplemente só aparece 3 estrelas vazias (a 3 a 4 e a 5) podem ajudar por favor? if ($feed['nota']==5){ echo ' <input type="radio" id="star5" name="rating" value="5" /><label class="teste" for="star5" title="5 estrelas!">5 estrelas</label>'; } else { echo '<input type="radio" id="star5" name="rating" value="5" /><label for="star5" title="5 estrelas!">5 estrelas</label>'; } if ($feed['nota']>=4){ echo ' <input type="radio" id="star4" name="rating" value="4" /><label class="teste" for="star4" title="4 estrelas">4 estrelas</label>'; } else { echo '<input type="radio" id="star4" name="rating" value="4" /><label for="star2" title="4 estrelas">4 estrelas</label>'; } if ($feed['nota']>=3){ echo ' <input type="radio" id="star3" name="rating" value="3" /><label class="teste" for="star3" title="3 estrelas">3 estrelas</label>'; } else { echo '<input type="radio" id="star3" name="rating" value="3" /><label for="star3" title="3 estrelas!">3 estrelas<label>'; } if ($feed['nota']>=2){ echo ' <input type="radio" id="star2" name="rating" value="2" /><label class="teste" for="star2" title="2 estrelas">2 estrelas</label>'; } else { echo '<input type="radio" id="star2" name="rating" value="2" /><label for="star2" title="2 estrela!">2 estrelas</label>'; } if ($feed['nota']>=1){ echo ' <input type="radio" id="star1" name="rating" value="1" /><label class="teste" for="star1" title="1 estrelas">1 estrelas</label>'; } else { echo '<input type="radio" id="star1" name="rating" value="1" /><label for="star1" title="1 estrelas!">1 estrelas</label>'; } Compartilhar este post Link para o post Compartilhar em outros sites
wolfphw 60 Denunciar post Postado Julho 6, 2015 Pq vc não faz apenas assim? if ($feed['nota'] == 1) { echo ' <input type="radio" id="star1" name="rating" value="1" /><label class="teste" for="star1" title="1 estrelas">1 estrelas</label>'; } else if ($feed['nota'] == 2) { echo ' <input type="radio" id="star2" name="rating" value="2" /><label class="teste" for="star2" title="2 estrelas">2 estrelas</label>'; } else if ($feed['nota'] == 3) { echo ' <input type="radio" id="star3" name="rating" value="3" /><label class="teste" for="star3" title="3 estrelas">3 estrelas</label>'; } else if ($feed['nota'] == 4) { echo ' <input type="radio" id="star4" name="rating" value="4" /><label class="teste" for="star4" title="4 estrelas">4 estrelas</label>'; } else if ($feed['nota'] == 5) { echo ' <input type="radio" id="star5" name="rating" value="5" /><label class="teste" for="star5" title="5 estrelas!">5 estrelas</label>'; } Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 6, 2015 Pq você não faz apenas assim? if ($feed['nota'] == 1) { echo ' <input type="radio" id="star1" name="rating" value="1" /><label class="teste" for="star1" title="1 estrelas">1 estrelas</label>'; } else if ($feed['nota'] == 2) { echo ' <input type="radio" id="star2" name="rating" value="2" /><label class="teste" for="star2" title="2 estrelas">2 estrelas</label>'; } else if ($feed['nota'] == 3) { echo ' <input type="radio" id="star3" name="rating" value="3" /><label class="teste" for="star3" title="3 estrelas">3 estrelas</label>'; } else if ($feed['nota'] == 4) { echo ' <input type="radio" id="star4" name="rating" value="4" /><label class="teste" for="star4" title="4 estrelas">4 estrelas</label>'; } else if ($feed['nota'] == 5) { echo ' <input type="radio" id="star5" name="rating" value="5" /><label class="teste" for="star5" title="5 estrelas!">5 estrelas</label>'; } Em primeiro lugar obrigado pela resposta. Porém o que sugere não faz sentido neste caso pois se aplicar o código que sugeriu o que irá acontecer é que só aparecerá uma estrela independentemente do número de estrelas que que estiver na base de dados, Imagine que o cliente dá 4 estrelas. O seu código está dizendo que caso a coluna ‘notas’ tenha o valor de 4 então deve aparecer a estrela relativa ao número 4. No meu código é dito que se a coluna tiver o valor 4 entrão deve as três estrelas anteriores devem aparecer e ainda deve aparecer a 4 Se mais alguém quiser ajudar eu agradeço Compartilhar este post Link para o post Compartilhar em outros sites
DanielAndrade 28 Denunciar post Postado Julho 7, 2015 Olha só... if (isset($feed['nota'])){ if($feed['nota'] > 1) $html = $feed['nota']." estrelas"; else $html = $feed['nota']." estrela"; echo ' <input type="radio" id="star'.$feed['nota'].'" name="rating" value="'.$feed['nota'].'" /><label class="teste" for="star"star'.$feed['nota'].'"" title="'.$html.'">'.$html.'</label>'; } Algo assim , não seria suficiente, não?! Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 7, 2015 Olha só... if (isset($feed['nota'])){ if($feed['nota'] > 1) $html = $feed['nota']." estrelas"; else $html = $feed['nota']." estrela"; echo ' <input type="radio" id="star'.$feed['nota'].'" name="rating" value="'.$feed['nota'].'" /><label class="teste" for="star"star'.$feed['nota'].'"" title="'.$html.'">'.$html.'</label>'; } Algo assim , não seria suficiente, não?! Em primeiro lugar obrigado pela resposta. O que sugere para mim faz todo o sentido. Repliquei 5 vezes o seu código (são 5 estrelas) porém ele está a colocar a class”teste”(responsável por estrelas cheias.) em todas as estrelas independentemente do valor da nota. Desde já agradecido. se tiver mais alguma ideia diga por favor. Compartilhar este post Link para o post Compartilhar em outros sites
DanielAndrade 28 Denunciar post Postado Julho 7, 2015 Existem classes especificas para cada qtd de estrela? Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 7, 2015 não. todas as estrelas são iguais e não existe classes individuais. tenho é uma class que é responsável por preencher (mudar de cor) a estrela á qual dei o nome de teste. essa class deve ser adicionada somente quando a estrela está ceia. isto é se a nota for 5 então essa class deve ser adicionada a todas as estrelas.se a nota for 4 então essa class deve ser adicionada somente ás 4 primeiras estrelas e assim sucessivamente. muito obrigado pela sua resposta. se tiver mais alguma sugestão agradeceria Compartilhar este post Link para o post Compartilhar em outros sites
DanielAndrade 28 Denunciar post Postado Julho 7, 2015 Então... if (isset($feed['nota'])){ if($feed['nota'] > 1) $html = $feed['nota']." estrelas"; else $html = $feed['nota']." estrela"; if($fees['nota'] == 5) $class = 'class="teste"'; else $class = ''; echo '<input type="radio" id="star'.$feed['nota'].'" name="rating" value="'.$feed['nota'].'" />'; echo '<label '.$class.' for="star'.$feed['nota'].'" title="'.$html.'">'.$html.'</label>'; } Será que chegou num resultado satisfatório? Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 7, 2015 Então... if (isset($feed['nota'])){ if($feed['nota'] > 1) $html = $feed['nota']." estrelas"; else $html = $feed['nota']." estrela"; if($fees['nota'] == 5) $class = 'class="teste"'; else $class = ''; echo '<input type="radio" id="star'.$feed['nota'].'" name="rating" value="'.$feed['nota'].'" />'; echo '<label '.$class.' for="star'.$feed['nota'].'" title="'.$html.'">'.$html.'</label>'; } Será que chegou num resultado satisfatório? ainda não resultou . veja aqui o print . mesmo replicando 5 vezes o código de um lado aparecem todas cheias do outro todas vazias . obrigado pela ajuda. se tiver mais alguma ideia por favor comparti-lhe Compartilhar este post Link para o post Compartilhar em outros sites
DanielAndrade 28 Denunciar post Postado Julho 8, 2015 Jokita, cada input desse eh uma estrela? Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 8, 2015 Sim inputinput é uuma estela queque tiver a class teste fica cheia se não tiver fica vazia Compartilhar este post Link para o post Compartilhar em outros sites
DanielAndrade 28 Denunciar post Postado Julho 8, 2015 Deixa ver se entendi... Se $feed['nota'] for 5, ele o laço vai ter 5 inputs e labels. Mas não cinco class teste. Então, como saber quem tem a class teste ? Acho que se vc me responder isso, agente chega num consenso aqui Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 8, 2015 Deixa ver se entendi... Se $feed['nota'] for 5, ele o laço vai ter 5 inputs e labels. Mas não cinco class teste. Então, como saber quem tem a class teste ? Acho que se você me responder isso, agente chega num consenso aqui Olha o Meu primeiro código aqui no post tem cinco inputs e cada input tem uma condição para se nota for maior ou igual a valor do input (ou seja a nota for 4 eu quero que todos os inputs ou estrelas menores ou iguais a 4 acrescentem a classe teste para que a estrela fique cheia) Esse primeiro código está a funcionar se a nota for igual ou superior a 3 porém se for 2 ou 1 desapareceu as estrelas correspondentes ao 1 e 2 (a 345 aparecem vazias tal como deviam) mas a 12 não aparecem nem cheias nem vazias .obrigado pela ajuda Compartilhar este post Link para o post Compartilhar em outros sites
DanielAndrade 28 Denunciar post Postado Julho 8, 2015 if (isset($feed['nota'])){ for($i=1;$i<=5;$i++){ if($feed['nota'] > 1) $html = $feed['nota']." estrelas"; else $html = $feed['nota']." estrela"; if($feed['nota'] >= $i) $class = 'class="teste"'; else $class = ''; echo '<input type="radio" id="star'.$feed['nota'].'" name="rating" value="'.$feed['nota'].'" />'; echo '<label '.$class.' for="star'.$feed['nota'].'" title="'.$html.'">'.$html.'</label>'; } } Bom, pelo que percebi cinco estrelas sempre serão exibidas, mas a classe teste só será setada para quem tiver para a quantidade de estrelas do total de sua nota... Não precisa copiar o codigo cinco vezes... apenas testa e diz pra gente... Compartilhar este post Link para o post Compartilhar em outros sites
DanielAndrade 28 Denunciar post Postado Julho 8, 2015 Ou coloca o label fora do for.... if (isset($feed['nota'])){ if($feed['nota'] > 1) $html = $feed['nota']." estrelas"; else $html = $feed['nota']." estrela"; for($i=1;$i<=5;$i++){ if($feed['nota'] >= $i) $class = 'class="teste"'; else $class = ''; echo '<input type="radio" id="star'.$feed['nota'].'" name="rating" value="'.$feed['nota'].'" />'; } echo '<label '.$class.' for="star'.$feed['nota'].'" title="'.$html.'">'.$html.'</label>'; } foi malz.. Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 8, 2015 O raciocínio parece certo. Obrigado por ter colocado o for (eu tenha tinha tentado mas não deu certo) Só consigo testar o código amanhã (aqui em Portugal já é de madrugada). Amanhã darei feedback. Obrigado por toda a ajuda Ou coloca o label fora do for.... if (isset($feed['nota'])){ if($feed['nota'] > 1) $html = $feed['nota']." estrelas"; else $html = $feed['nota']." estrela"; for($i=1;$i<=5;$i++){ if($feed['nota'] >= $i) $class = 'class="teste"'; else $class = ''; echo '<input type="radio" id="star'.$feed['nota'].'" name="rating" value="'.$feed['nota'].'" />'; } echo '<label '.$class.' for="star'.$feed['nota'].'" title="'.$html.'">'.$html.'</label>'; } foi malz.. Compartilhar este post Link para o post Compartilhar em outros sites
jokita18 0 Denunciar post Postado Julho 9, 2015 obrigado.. funcionou perfeitamente coloquei a label dentro do for pois é ele que estava recebendo racebendo a class teste obrigado mais uma vez Compartilhar este post Link para o post Compartilhar em outros sites