Ir para conteúdo
Jack Oliveira

Manter os espaço na frente do nome mesmo se editar e retirar

Recommended Posts

Boa noite

@Omar~ preciso de uma ajuda sua se puder ou qualquer pessoal aqui que poderá me auxiliar no problema

 

Meu cliente ele cadastra as empresas dele destacando por espaço na frente do titulo..

cada espaço dado pra ele seria um tipo de destaque, quanto mais ter espaço na frente mais aquela empresa aparecerá no site dele

Acho que esta entendo o que estou dizendo aqui..

 

Porém ele quer criar um form onde os clientes dele possa editar as informações, mais sem puder tirar os espaço que esta, uma maneira dos cliente mudar apenas

o titulo e manter estes espaço.

 

Teria alguma forma pra isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta botar uns exemplos comentados pra gente entender melhor. eu mesmo não entendi quase nada do problema. onde e em que fica esses espaços? de que jeito esses espaços são colocados lá? de que jeito vai alterar? é php, javascritpt...

Compartilhar este post


Link para o post
Compartilhar em outros sites

@marsolim boa tarde

então é o seguinte

vou tentar fazer um exemplo vou por em números na frente do titulo este numero seria os espaços que ele dar ao cadastrar..

1Mercado Novo Preço

2Mercado Bela Vista

3Mercado Da Dona Maria

4Mercado Sorriso

 

Aí cada numero na frente resulta a quantidade de espaço dado 

o que é preciso é apenas o titulo ser alterado sem que os clientes mude o espaço

os cadastrados é feito em php

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara não ia ser mais fácil cadastrar esse dado em um campo separado no banco de dados? eu faço é dessa forma. aí tu não precisa se preocupar da pessoa mudar ele. isso é o correto de se fazer cada dado em seu respectivo lugar.

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 minutos atrás, marsolim disse:

cara não ia ser mais fácil cadastrar esse dado em um campo separado no banco de dados? eu faço é dessa forma. aí tu não precisa se preocupar da pessoa mudar ele. isso é o correto de se fazer cada dado em seu respectivo lugar.

 

Seria sim, porém o cliente não quer recadastrar tudo de novo pois são mais de 4 mil clientes cadastrado no banco

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se eu entendi direito, seria como se o administrador pudesse ordenar quais "empresas" seriam priorizadas como ordem de exibição

Nesse caso particularmente faria uma adição na tabela para ordenar isso, ou criaria outra para tal afim, e como nosso amigo @marsolim disse é o recurso eficiente.

E não usaria um "espaço" e sim um input ou um select para tal coisa, seguindo o conceito que haveria uma coluna ou tabela onde poderia armazenar esse dado. No mais é até um upgrade simples dependendo da arquitetura do sistema.

 

Porque "não é possível de se fazer" uma vez que o cliente/empresa pode alterar o campo onde fica gravado o nome.

Se nós tentarmos pegar os espaços não dar certo pois por exemplo podemos ter um nome composto com "espaços" tipo " Loja de roupa" .

Mesmo que tenhamos um espaço no início temos também espaços no decorrer da string, mesmo que possamos fazer uma expressão regular para tal afim acho que não daria certo.

 

Veja essa questão dos espaços:

<?php
$stringAnterior = "   anterior";
var_dump($stringAnterior);

$totalDeEspacos = substr_count($stringAnterior, ' ');
$espacos = " ";
$novaString = str_repeat($espacos, $totalDeEspacos) . "substituir";
echo ("<br />");
var_dump($novaString);

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, Omar~ disse:

Se eu entendi direito, seria como se o administrador pudesse ordenar quais "empresas" seriam priorizadas como ordem de exibição

@Omar~ sim seria isso mesmo...

o que eu tinha sugerido para ele era realmente criar um select 

seria na base deste aqui onde ele poderia criar vários destaque conforme seria a necessidade  dele

<div class="col-md-6">
	<div class="form-group">
<label>Destaques:</label> <em> Destacar as empresas</em>
	<select class="form-control input-lg" name="id_destaque">
<?php $Query = DBRead('c_destaque','*','ORDER BY categoria ASC'); if (is_array($Query)) { foreach ($Query as $c_dados) { ?>
	<option value="<?php echo $c_dados['id']; ?>"><?php echo $c_dados['categoria']; ?></option>
<?php } } ?>
	</select>
	</div>
</div>

Neste ex: aí ele teria uma categoria onde ele poderia cadastrar e editar os seus planos de destaque..

porém ele não quer porque diz que já tem mais de 4 mil cadastrado já com estes destaques e não quer editar um por  um....

 

 

 

Na verdade este projeto dele é um projeto antigo que fizeram para ele trabalhar... passei uma solução apropriada para que o sistema dele fica organizado, ele só não quer editar os dados que já estão kkk

Compartilhar este post


Link para o post
Compartilhar em outros sites
10 horas atrás, Omar~ disse:

<?php $stringAnterior = " anterior"; var_dump($stringAnterior); $totalDeEspacos = substr_count($stringAnterior, ' '); $espacos = " "; $novaString = str_repeat($espacos, $totalDeEspacos) . "substituir"; echo ("<br />"); var_dump($novaString);

Vou olhar aqui @Omar~ obrigado....

Compartilhar este post


Link para o post
Compartilhar em outros sites

uma saída pra resolver a parada sem ter que ser um a um é criar um script que conte o número de espaço antes de começar o nome e aí bota esse número num campo da tabela tipo ele começa a contar do começo do nome já que os espaços vem antes e aí quando detectar que acabou os espaços para de contar e aí usa strlen pra contar esses espaços e pode até tirar eles fora da string deixando o número na tabela. pode fazer isso num laço for.

Compartilhar este post


Link para o post
Compartilhar em outros sites
1 hora atrás, marsolim disse:

uma saída pra resolver a parada sem ter que ser um a um é criar um script que conte o número de espaço antes de começar o nome e aí bota esse número num campo da tabela tipo ele começa a contar do começo do nome já que os espaços vem antes e aí quando detectar que acabou os espaços para de contar e aí usa strlen pra contar esses espaços e pode até tirar eles fora da string deixando o número na tabela. pode fazer isso num laço for.

teria uma base deste script de como posso começar ele??

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenho uma ideia melhor acho eu. tu podes usar um rtrim() num laço de uma array do mysqli usando o SELECT pra trazer todos as linhas. o rtrim() remove caracteres a direita. então tu podes pegar o número de caracteres antes de fazer o rtrim e também depois de fazer o rtrim e então calcula pra saber a diferença. essa diferença é a quantidade de espaço que vai botar no campo que vai criar pra isso na tabela e tu vai fazer isso com um UPDATE para poder atualizar o nome já sem os espaços e o campo com a quantidade de espaço. mais ou menos assim:


 

$sql = "SELECT * FROM nome_da_tabela";

if($res = mysqli_query($con, $sql)){

    while($row = mysqli_fetch_assoc($res)){

        $id = $row["id"];
        $nome_i = $row["nome"];
        $nome_f = rtrim($nome_i); 
        $qtd = (strlen($nome_i) - $strlen($nome_f));

        $sql_u = "UPDATE nome_da_tabela SET nome='$nome_f', espaco=$qtd WHERE id=$id";
        $res_u = mysqli_query($con, $sql_u);

    }

}

 

detalhes: no lugar de "nome_da_tabela", irás colocar o nome correto da tabela em questão. "espaco" é um nome hipotético para o nome do campo que irás criar para armazenar esse dado da quantidade de espaços na tabela. $con seria o nome da variável da sua conexão ao banco de dados usando o mysql.

 

IMPORTANTE: não esquecer de fazer um backup da tabela pro caso de algo dar errado poder voltar a orignal.

 

ah e pra cadastrar nomes novos claro que deverás ter um campo a mais no form pra poder colocar a quantidade de espaços invés de colocar os espaços em si. e se fosse eu trocava o nome "espaço" por algo como "destaque" ou "estrelas".

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.