Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoal!!
estou usando o MYSQL, e estouprecisando muito de ajuda na junção substr()
bem o sistema e o seguinte..fiz um INSERT INTO para inserir datas na tabela aditivo..no formato do MYSQL 0000-00-00..
e agora preciso visualizar esssas datas no formato 00/00/0000.
fiz assim:
<?php
$sql3= "SELECT * FROM aditivo";
$query3= mysql_query($sql3); // mysql_query fazendo uma consulta no MYSQL
while ($resultado3 = mysql_fetch_array($query3) ) // varredura dos dados da tabela com fetch_array
{
$dia= substr($resultado3[data_inicial], 0, 2)
$mes= substr($resultado3[data_inicial], 3, 2)//da erro nessa linhaa.
$ano= substr($resultado3[data_inicial], 6, 4)
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano
$dia= substr($resultado3[data_final], 0, 2)
$mes= substr($resultado3[data_final], 3, 2)
$ano= substr($resultado3[data_final], 6, 4)
$resultado3[nova_data_final]= $dia."/"_.$mes."/".$ano
print"
<table width= 20% border=1 align=left cellpadding=10%>
<h2 align=center>Aditivo</h2>
<tr><td> N°Aditivo</td> </tr>
<tr><td> Data Inicial</td> </tr>
<tr><td> Data Final </td></tr>
</table>
<table width= 20% border=1 align=left cellpadding=10%>
<tr><td> $resultado3[id_aditivo] </td></tr>
<tr><td> $resultado3[nova_data_inicial] </td></tr>
<tr><td> $resultado3[nova_data_finalal] </td></tr>
</table>
";
}
?>
so q esta dando erro:
Parse error: parse error, unexpected T_VARIABLE in C:\Arquivos de programas\EasyPHP 2.0b1\www\ISSEC\vizualizar.php on line 118
o separador q você diz e ; eu tb achei q era ..
mas tanto faz.. da erro tambem com ";"
e agora oq eu faço?
Boa noite!!
$dia = substr($resultado3['data_final'], 8, 2);
$mes = substr($resultado3['data_final'], 5, 2);
$ano = substr($resultado3['data_final'], 0, 4);
$nova_data = $dia."/".$mes."/".$ano;
ou
$nova_data = substr($resultado3['data_final'], 8, 2)."/".substr($resultado3['data_final'], 5, 2)."/".substr($resultado3['data_final'], 0, 4);
Flw
Abraço
cara realmente eu tinha pegado as posições erradas do formato mysql..mas eu ñ posso guarda em uma variavem Só..
pq eu estou num WHILE FETCH ARRAY armazenando em uma variavel so..
while ($resultado3 = mysql_fetch_array($query3) ) // varredura dos dados da tabela com fetch_array
{
$dia= substr($resultado3[data_inicial], 8, 2);
$mes= substr($resultado3[data_inicial], 5, 2);
$ano= substr($resultado3[data_inicial], 0, 4);
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano;
$dia= substr($resultado3[data_final], 8, 2);
$mes= substr($resultado3[data_final], 5, 2);
$ano= substr($resultado3[data_final], 0, 4);
$resultado3[nova_data_final]= $dia."/".$mes."/".$ano;
print"
<table width= 20% border=1 align=left cellpadding=10%>
<h2 align=center>Aditivo</h2>
<tr><td> N°Aditivo</td> </tr>
<tr><td> Data Inicial</td> </tr>
<tr><td> Data Final </td></tr>
</table>
<table width= 20% border=1 align=left cellpadding=10%>
<tr><td> $resultado3[id_aditivo] </td></tr>
<tr><td> $resultado3[nova_data_inicial] </td></tr>
<tr><td> $resultado3[nova_data_finalal] </td></tr>
</table>
";
}
?>Não entendi ???
Mas ae funcionou??
Abrx
ñ funcionou erro:
Notice: Use of undefined constant data_inicial - assumed 'data_inicial' in C:\Arquivos de programas\EasyPHP 2.0b1\www\ISSEC\vizualizar.php on line 115
Notice: Use of undefined constant data_inicial - assumed 'data_inicial' in C:\Arquivos de programas\EasyPHP 2.0b1\www\ISSEC\vizualizar.php on line 116
Notice: Use of undefined constant data_inicial - assumed 'data_inicial' in C:\Arquivos de programas\EasyPHP 2.0b1\www\ISSEC\vizualizar.php on line 117
Notice: Use of undefined constant nova_data_inicial - assumed 'nova_data_inicial' in C:\Arquivos de programas\EasyPHP 2.0b1\www\ISSEC\vizualizar.php on line 118
substitua:
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano;por:
$nova_data_inicial = $dia."/".$mes."/".$ano;
e
substitua:
$resultado3[nova_data_final]= $dia."/".$mes."/".$ano;por:
$nova_data_final = $dia."/".$mes."/".$ano;
todo esse malabarismo com substr() é desnecessario.
você pode usar um DATE_FORMAT() do MySQL, para fazer a data ficar no formato dd/mm/YYYY
mas se eu armazenar a nova data em
$nova_data_inicial = $dia."/".$mes."/".$ano; em vez de$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano;
como eu vou imprimir na tela se eu entou dentro do WHILE e
$resultado3 = mysql_fetch_array($query3)
a nova data tem q ser armazanada no campo[data_inicial]e [data_final] $resultado3[data_inicial]e $resultado3[data_final]
dessa forma q você disse ñ deu certo..
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano;
por:
$nova_data_inicial = $dia."/".$mes."/".$ano;
e
substitua:
$resultado3[nova_data_final]= $dia."/".$mes."/".$ano;
por:
$nova_data_final = $dia."/".$mes."/".$ano;
o meu ja aasim mas da o mesmo erro:
<?php
$sql3= "SELECT * FROM aditivo";
$query3= mysql_query($sql3); // mysql_query fazendo uma consulta no MYSQL
while ($resultado3 = mysql_fetch_array($query3) ) // varredura dos dados da tabela com fetch_array
{
$dia= substr($resultado3[data_inicial], 8, 2);
$mes= substr($resultado3[data_inicial], 5, 2);
$ano= substr($resultado3[data_inicial], 0, 4);
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano;
$dia= substr($resultado3[data_final], 8, 2);
$mes= substr($resultado3[data_final], 5, 2);
$ano= substr($resultado3[data_final], 0, 4);
$resultado3[nova_data_final]= $dia."/".$mes."/".$ano;
print"
<table width= 20% border=1 align=left cellpadding=10%>
<h2 align=center>Aditivo</h2>
<tr><td> N°Aditivo</td> </tr>
<tr><td> Data Inicial</td> </tr>
<tr><td> Data Final </td></tr>
</table>
<table width= 20% border=1 align=left cellpadding=10%>
<tr><td> $resultado3[id_aditivo] </td></tr>
<tr><td> $resultado3[nova_data_inicial] </td></tr>
<tr><td> $resultado3[nova_data_finalal] </td></tr>
</table>
";
}
?>
>
substitua:
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano;por:
$nova_data_inicial = $dia."/".$mes."/".$ano;
e
substitua:
$resultado3[nova_data_final]= $dia."/".$mes."/".$ano;por:
$nova_data_final = $dia."/".$mes."/".$ano;
ou eu entedi errado!!
olha...
<?php
$sql3= "SELECT id_aditivo,
DATE_FORMAT(data_inicial, '%d/%m/%Y') AS data_inicial,
DATE_FORMAT(data_final, '%d/%m/%Y') AS data_final
FROM aditivo";
$query3= mysql_query( $sql3 )or die( mysql_error() );
while( $resultado3 = mysql_fetch_assoc($query3) ) // varredura dos dados da tabela com fetch_array
{
echo'<table width= 20% border=1 align=left cellpadding=10%>
<h2 align=center>Aditivo</h2>
<tr><td> N°Aditivo</td> </tr>
<tr><td> Data Inicial</td> </tr>
<tr><td> Data Final </td></tr>
</table>
<table width= 20% border=1 align=left cellpadding=10%>
<tr><td>'.$resultado3['id_aditivo'].'</td></tr>
<tr><td>'.$resultado3['data_inicial'].'</td></tr>
<tr><td>'.$resultado3['data_final'].'</td></tr>
</table>';
}
?> bem mais simples :lol:fiz desse jeito q você disse ai.. mas eu insiro o varlor nas datas com INSERT e no SELECT ficam todas em 00/00/0000...
ñ inporta a data q eu estabelecer se for 10/12/2010 ficam todas em 00/00/0000...
pq sera?
no INSERT eu usei o sub-tr..
programax, da uma olhada no banco e ve se as datas estão sendo realmente cadastradas... se você tiver o campo no formato date e não estiver inserindo corretamente no formato YYYY-MM-DD ele não vai aceitar... eu já tive problemas desse tipo, o campo no banco era preenchido dessa forma 0000-00-00...
att:
Galera, vou aproveitar o tópico do amigo, e postar uma dúvida que tive relacionada a essa questão, gostaria de saber se podem me ajudar, principalmente o William Bruno a duvida é com a função DATE_FORMAT() do mysql
eu tenho o seguinte código:
<?php
include 'conC.php';
//setando variaveis
$dataInicio = $_POST['DataInicio'];
$dataFinal = $_POST['DataFim'];
//consulta
$consulta = "SELECT * FROM entradas where DiaEntrada BETWEEN '$dataInicio' and '$dataFinal' ORDER BY DiaEntrada ASC";
$resultado = mysql_query($consulta);
while ($row = mysql_fetch_array($resultado)){
echo "Dia " . DATE_FORMAT()$row['DiaEntrada'] . " o valor foi de: " . $row['Valor'] . "<br />";
}Porem se eu incluo a função DATE_FORMAT()ele para de realizar a busca...
a linha da consulta esta dessa forma:
$consulta = "SELECT idEntrada, DATE_FORMAT(DiaEntrada, '$d/$m/$Y') as DiaEntrada FROM entradas where DiaEntrada BETWEEN '$dataInicio' and '$dataFinal' ORDER BY DiaEntrada ASC";Acho que não está muito certo issoAlguem tem alguma dica?
grato
Amigo programax data em banco de dados tem de ser no formato 0000-00-00 e não 00/00/0000.
Utilize a função gigantesca abaixo para converter nos formatos necessários ^_^
/****
* @param $data - a data em si
* @param $se - o separador da data
* @param $ss - o separador que deverá conter na data
****/
function converteData($data, $se, $ss){
return implode($ss, array_reverse(explode($se, $data)));
}$data1 = '26/11/2010';
$data2 = '2010-05-30';
$nData1 = converteData($data1,'/','-');
$nData2 = converteData($data2,'-','/');
echo $nData1.'<br />'.$nData2;
Abraços.esse condigo de inserção esta certo!!
<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
include ("conexao.php");
$data_inicial = $_POST['data_inicial'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_inicial = $ano."-".$mes."-".$dia;
$data_final = $_POST['data_final'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_final = $ano."-".$mes."-".$dia;
$recebe_id= $_POST['id_cont'];
$sql=" INSERT INTO aditivo (data_inicial, data_final, chave_aditivo_fk )
VALUES ('$nova_data_inicial ' , '$nova_data_final' , '$recebe_id')";
$query = mysql_query($sql) or die (mysql_error());
header("location:index.php");
?>
mas agora fui no banco e esta tudo 0000/00/00....
e alguma coisa no DATA FORMAT..
<?php
$sql3= "SELECT id_aditivo,
DATE_FORMAT(data_inicial, '%d/%m/%Y') AS data_inicial,
DATE_FORMAT(data_final, '%d/%m/%Y') AS data_final
FROM aditivo";
$query3= mysql_query( $sql3 )or die( mysql_error() );
while( $resultado3 = mysql_fetch_assoc($query3) ) // varredura dos dados da tabela com fetch_array
{
echo'<table width= 20% border=1 align=left cellpadding=2>
<h2 align=center>Aditivo</h2>
<tr><td align=left> N°aditivo</td> </tr>
<tr><td align=left> Data inicial</td> </tr>
<tr><td align=left> Data final </td></tr>
</table>
<table width= 20% border=1 align=float cellpadding=5%>
<tr><td>'.$resultado3['id_aditivo'].'</td></tr>
<tr><td>'.$resultado3['data_inicial'].'</td></tr>
<tr><td>'.$resultado3['data_final'].'</td></tr>
</table>
';
}
?>
mas com o SUB-STR da pra fazer!!! função ñ!!
mas no INSET INTO aditivo ta certo???
pq no bando ta tudo 0000/00/00
Cara, o select não causa alteração no banco...
Se teu banco tá com o cadastro 0000-00-00 deve ser seu insert que tá dando erro, experimenta tirar o DATE_FORMAT() e fazer uma nova inserção
deixei comentado o SELECT...
no INSERT INTO ..coloquei a data 10112010 e fui la no banco e estava:2010-12-10..
o mysql esta pegando a data errada pois eu passe: 10112010
Programax
passe a data para o mysql no formato - 0000-00-00 com os traços também... eu pelo menos faço assim aqui
aplique a função que o amigo Periscuelo mostrou ali para formatar a data que o usuario digitar no campo para formata-la dessa forma
e depois use a mesma função quando for resgatar ela no banco
@edit: A função do amigo Periscuelo funcionou perfeitamente para o meu caso, resolvi o exemplo que postei com ela, só não sei se é a melhor solução... segue o código:
<?php
include 'conC.php';
//setando variaveis
$dataInicio = $_POST['DataInicio'];
$dataFinal = $_POST['DataFim'];
//consulta
$consulta = "SELECT * FROM entradas where DiaEntrada BETWEEN '$dataInicio' and '$dataFinal' ORDER BY DiaEntrada ASC";
/****
* @param $data - a data em si
* @param $se - o separador da data
* @param $ss - o separador que deverá conter na data
****/
function converteData($data, $se, $ss){
return implode($ss, array_reverse(explode($se, $data)));
}
//$total = $total + $row['Valor'];
$resultado = mysql_query($consulta);
while ($row = mysql_fetch_array($resultado)){
echo "Dia " . $nData = converteData($data =($row['DiaEntrada']), '-', '/') . " o valor foi de: " . $row['Valor'] . "<br />";
}Amigos eu agradesso a ajuda mas eu preciso fazer com SUB-STR ...e ñ com funçao..por favor me ajudem!!
pagina de inserção das datas:
<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
include ("conexao.php");
$data_inicial = $_POST['data_inicial'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_inicial = $ano."-".$mes."-".$dia;
$data_final = $_POST['data_final'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_final = $ano."-".$mes."-".$dia;
$recebe_id= $_POST['id_cont'];
$sql=" INSERT INTO aditivo (data_inicial, data_final, chave_aditivo_fk )
VALUES ('$nova_data_inicial ' , '$nova_data_final' , '$recebe_id')";
$query = mysql_query($sql) or die (mysql_error());
header("location:index.php?link=1");
?>Amigo programax, me tire uma duvida. Porque você precisa fazer com substr se a função resolve?
Se for um trabalho/exercício/prova da faculdade eu aconselho a você estudar a função substr e estudar
mais lógica de programação. A intenção do fórum é ajudar as pessoas a solucionar problemas com praticidade
e a encontrar informação para melhorar seu conhecimento e não fazer todo o trabalho por elas. ^_^
Já lhe foram apresentadas diversas soluções. Basta se esforçar um pouquinho e pesquisar.
Caso esteja interessado, Freelances é em outra sessão.
Caso o seu caso não seja freelance acesse o link abaixo para maiores informações.
Abraços.
amigo e um trabalho!!...
eu criei esse topico para duvidas pq eu ñ estava vizualizando a data do banco com um SELECT, estava dando erro!!
eu sei usar a função sub-str para inserção de data no banco mysql e funciona!!...
oq eu ñ to entendeno e q no INSERT estava inserindo a data normal com sub-str ex: eu colocava 10112010..
no banco eu via:2010-11-10...
e agora ñ esta mais dando certo depois.. eu insiro por ex: 07062010.... e vou no banco e esta 0000-00-00...
ñ entendo pq antes funcionava..eu ñ mechi no codigo e agora ñ funciona..?
da uma olha no codigo acima para ver se você acha algum erro q eu ñ achei nenhum!!
Evite tirar mais de uma dúvida no mesmo tópico, assim o mesmo fica focado no assunto inicial
e o fórum fica mais organizado.
Se o problema não é o substr então entitule melhor o tópico
para que possamos lhe ajudar mais objetivamente ok? ^_^
Um dos erros simples do seu código é esse:
$data_inicial = $_POST['data_inicial'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_inicial = $ano."-".$mes."-".$dia;
$data_final = $_POST['data_final'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_final = $ano."-".$mes."-".$dia;
Deveria ser assim
$data_inicial = $_POST['data_inicial'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_inicial = $ano."-".$mes."-".$dia;
$data_final = $_POST['data_final'];
$dia= substr($data_final, 0, 2);
$mes= substr($data_final, 3, 2);
$ano= substr($data_final, 6, 4);
$nova_data_final = $ano."-".$mes."-".$dia;
Talvez depois desta simples correção tudo se resolva ^_^
Grande parte dos erros aqui foram resolvidos de forma simples.
Um trabalho requer atenção. ;)
Abraços.
Sim Pirisculo você esta certo e eu comcordo... mas no começo do topico meu SELECT com Sub-str estava dando erro...
e era essa minha duvida_...Mas cara esse codigo funcionava direto eu inseria:10112010 e la no banco via:2010-11-10...
mas agora ta tudo:0000-00-00...você fez uma simples correção no meu codigo..mas qual foi q essa correçao q eu ñ consigo enchergar?
mesmo assim: eu copiei a correçao e colei.. e ficou do mesmo jeito...
oq sera pq estava fincionando!!
PPEEEEEEEEEERA AE
achei o defeito!!
a POSIçoes do SUB-STR ...pq as eu digitava 10112010 na contagem era como se tivesse 10/11/2010 ou 10-11-2010...
entao:
$data_inicial = $_POST['data_inicial'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 2, 2);
$ano= substr($data_inicial, 4, 4);
$nova_data_inicial = $ano."-".$mes."-".$dia;
$data_final = $_POST['data_final'];
$dia= substr($data_final, 0, 2);
$mes= substr($data_final, 2, 2);
$ano= substr($data_final, 4, 4);
$nova_data_final = $ano."-".$mes."-".$dia;
PRONTO agora vamos volta ao objetivo do topico...
preciso ver com o SELECT as datas q eu acabei de inserir.. mas da dando erro!!
<?php
$sql3= "SELECT * FROM aditivo";
$query3= mysql_query( $sql3 )or die( mysql_error() );
while ($resultado3 = mysql_fetch_array($query3) ) // varredura dos dados da tabela com fetch_array
{
$dia= substr($resultado3[data_inicial], 8, 2);
$mes= substr($resultado3[data_inicial], 5, 2);
$ano= substr($resultado3[data_inicial], 0, 4);
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano;
$dia= substr($resultado3[data_final], 8, 2);
$mes= substr($resultado3[data_final], 5, 2);
$ano= substr($resultado3[data_final], 0, 4);
$resultado3[nova_data_final]= $dia."/".$mes."/".$ano;
print"
<table width= 20% border=1 align=left cellpadding=10%>
<h2 align=center>Aditivo</h2>
<tr><td> N°Aditivo</td> </tr>
<tr><td> Data Inicial</td> </tr>
<tr><td> Data Final </td></tr>
</table>
<table width= 20% border=1 align=left cellpadding=10%>
<tr><td> $resultado3[id_aditivo] </td></tr>
<tr><td> $resultado3[nova_data_inicial] </td></tr>
<tr><td> $resultado3[nova_data_finalal] </td></tr>
</table>
";
}
?>
como eu armazeno a data em uma variavel so ..seu eu estou dentro de um
while ($resultado3 = mysql_fetch_array($query3) ) ?
Nossa programax você é extremamente desatento cara. Se quer parou pra ler e ver a diferença entre os códigos. <_<
$resultado3[data_final] está dando erro de constante porque é necessário aspas para se trabalhar com array.
Qualquer valor sem $ e sem ' o PHP encara como variável constante.
Quando for trabalhar com array trabalhe da seguinte forma:
$resultado3['data_final'].
Para colocar todas as datas em uma unica variável crie um array ex:
$array = array();
while ($resultado3 = mysql_fetch_array($query3)) {
$array[] = $resultado3['data_final'];
}Leia com carinho o link abaixo. Percebe o que acabo de escrever? Leia
Espero que agora o amigo seja mais atencioso com o que faz.
Abraços.
olhei sim !! você fez a simples correção ,,
eu olhei a diferença, mas eu vi foi um Spaciamento q você deu na variavel ( $dia )...
se ñ foi so isso por favor destaque essa correção..
você disse:Percebe o que acabo de escrever?
sim percebo mas você perguntou isso pq eu tirei o foco do topico..?
pode deixar q eu vou ser mais atencioso!!
bem eu tenho q criar um array para fazer uma farredura das datas e fazer o sub-str?
tenha so um pouco de paciencia comigo...pq eu sou aprendiz!!
Programax, o erro foi na hora de passar as variaveis
Seu código:
$data_inicial = $_POST['data_inicial'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_inicial = $ano."-".$mes."-".$dia;
$data_final = $_POST['data_final'];
$dia= substr($data_inicial, 0, 2);
$mes= substr($data_inicial, 3, 2);
$ano= substr($data_inicial, 6, 4);
$nova_data_final = $ano."-".$mes."-".$dia;
Repare nas linhas $dia, $mes e $ano. o Erro não foi apenas o espaçamento
Se em
$data_final = $_POST['data_final'] você deixou setado ['data_final'].nas linahs em que você atribui elas, elas deveriam ser ['$data_final'] e não [$data_inicial]como você fez
é como o amigo Periscuelo disse, só faltou um pouco de atenção.
seu script:
$dia= substr($resultado3[data_inicial], 0, 2)
$mes= substr($resultado3[data_inicial], 3, 2)//da erro nessa linhaa.
$ano= substr($resultado3[data_inicial], 6, 4)
$resultado3[nova_data_inicial]= $dia."/".$mes."/".$ano
$dia= substr($resultado3[data_final], 0, 2)
$mes= substr($resultado3[data_final], 3, 2)
$ano= substr($resultado3[data_final], 6, 4)
$resultado3[nova_data_final]= $dia."/"_.$mes."/".$anoO erro mostrado está aqui:$mes= substr($resultado3[data_inicial], 3, 2)
Como você não usou o separador de instrução o interpretador não intendeu que que
$ano= substr($resultado3[data_inicial], 6, 4) era outra instrução. É comum esse tipo de erro acontecer.
$mes= substr($resultado3[data_inicial], 3, 2);//da erro nessa linhaa.