Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

programax

[Resolvido] função sub - str

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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."/".$ano
O 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.
 $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);

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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>
			
		
		
		
		"; 
	
	  }
	?>
   

Compartilhar este post


Link para o post
Compartilhar em outros sites

ñ 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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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;

Compartilhar este post


Link para o post
Compartilhar em outros sites

todo esse malabarismo com substr() é desnecessario.

 

você pode usar um DATE_FORMAT() do MySQL, para fazer a data ficar no formato dd/mm/YYYY

Compartilhar este post


Link para o post
Compartilhar em outros sites

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!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

Compartilhar este post


Link para o post
Compartilhar em outros sites

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..

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 />";
		
}

Até aqui, ele faz o que se propõe... procurar no banco entre as datas ente $dataInicio e $dataFinal

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 isso

Alguem tem alguma dica?

 

grato

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)));
}
Ex:

 

$data1 = '26/11/2010';
$data2 = '2010-05-30';
$nData1 = converteData($data1,'/','-');
$nData2 = converteData($data2,'-','/');
echo $nData1.'<br />'.$nData2;
Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 />";
		
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

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");	 


 ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

 

http://www.php.net/substr

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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