20 Mai 2014 23:20
<html>
<head>
<title>Consulta</title>
</head>
<body>
<?php
$txtArquivo = "COMPRAS.DBF";
$txtCampo = "PRODUTO";
$txtPesquisa = ($_POST["filtro3"]);
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
if (ctype_digit($txtPesquisa)) {
$sql="SELECT * FROM ".$txtArquivo." WHERE ".$txtCampo." = '".$txtPesquisa."'";
} else {
$sql="SELECT * FROM ".$txtArquivo." WHERE ".$txtCampo." LIKE '%".$txtPesquisa."%'";
}
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
$i = 0;
$fieldCount = odbc_num_fields($rs);
echo '<table Border="1"><tr>';
while ($i < $fieldCount)
{
$i++;
$fieldName = odbc_field_name($rs, $i);
echo "<th>$fieldName</th>";
}
echo "</tr>";
while (odbc_fetch_row($rs))
{
echo "<tr>";
$i = 0;
while ($i < $fieldCount)
{
$i++;
$fieldName = odbc_field_name($rs, $i);
$compname=odbc_result($rs,$fieldName);
if ($i==1)
{echo "<td><a href='dproduto.php' target='_top'>".$compname."</a></td>";}
else
{echo "<td>$compname</td>";}
}
echo "</tr>";
}
echo "</table>";
odbc_close($conn);
?>
</body>
</html>
<html>
<head>
<title>Detalhes do produto</title>
</head>
<body>
<?php
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
$r= 6;
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM COMPRAS";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while( false !== ( $Row = @odbc_fetch_array( $rs ) ) ) {
}
odbc_fetch_row($rs,$r);
$prd = odbc_result($rs,"produto");
$prm = odbc_result($rs,"prmaximo");
echo '<br>';
echo '<br>';
echo '<p>';
echo '<strong>'."Produto: ".'</strong>';
echo '<font face="arial" color="red" size="21">'.$prd.'</font>';
echo '<br>';
echo '<p>';
echo '<p>';
echo "Preço máximo: ";
echo $prm;
odbc_close($conn);
?>
</body>
</html>
21 Mai 2014 07:56
while (odbc_fetch_row($rs))
{
$id=0;
while (odbc_fetch_row($rs))
{
$id++;
{echo "<td><a href='dproduto.php' target='_top'>".$compname."</a></td>";}
{echo "<td><a href='dproduto.php?id=".$id."' target='_top'>".$compname."</a></td>";}
$r= 6;
$r= $_GET['id'];
21 Mai 2014 17:04
25 Mai 2014 12:20
cjp escreveu:Mas ainda tenho um problema: como no primeiro PHP, a lista dos campos da base está filtrada (não estão listados todos os campos), ao passar o $id para o segundo PHP, ele passa o número na lista filtrada. Daí o segundo PHP vai procurar por esse número na base não filtrada, e não bate o mesmo registro.
cjp escreveu:tentei substituir o $id pelo próprio nome do produto, mas daí a consulta fica em branco.
06 Jun 2014 00:51
<html>
<head>
<title>Consulta</title>
</head>
<body>
<?php
$txtArquivo = "COMPRAS.DBF";
$txtCampo = "PRODUTO";
$int = "INTERVALO";
$txtP1 = ($_POST["filtro3"]);
$txtP2 = strtoupper($txtP1);
$txtP3 = strtolower($txtP1);
$txtP4 = ucfirst($txtP1);
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM ".$txtArquivo." WHERE ".$int.">0 and (".$txtCampo." LIKE '%".$txtP1."%' OR ".$txtCampo." LIKE '%".$txtP2."%' OR ".$txtCampo." LIKE '%".$txtP3."%' OR ".$txtCampo." LIKE '%".$txtP4."%')";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
$i = 0;
$fieldCount = odbc_num_fields($rs);
echo "Resultado da pesquisa:";
$tid=produto;
while (odbc_fetch_row($rs))
{
echo "<tr>";
$i = 0;
while ($i < $fieldCount)
{
$i++;
$fieldName = odbc_field_name($rs, $i);
$compname=odbc_result($rs,$fieldName);
$compname2=trim($compname);
if ($i==1)
{echo '<br>';
echo '<br>';
echo "<td>$compname2</td>";}
elseif ($i==51)
{echo '<br>';
echo "Preço máximo: "."<td>$compname2</td>";}
}
echo '<br>';
echo "<table align='center' border='0' cellpadding='0' cellspacing='0' width='49%'>";
echo "<form action='dproduto.php?id=".urlencode($tid)."' method='post'>";
echo "<input size='35' type='number' name='preco' id='preco' value='Digite aqui o preço do produto' onfocus='this.value = '';' onblur='if (this.value == '') {this.value = 'Digite aqui parte o preço do produto';}'>";
echo " <input size='38' name='submit' type='submit' id='Confirmar' value='Confirmar'>";
echo "</tr>";
echo "</table>";
echo "</form>";
}
odbc_close($conn);
?>
</body>
</html>
<html>
<head>
<title>Detalhes do produto</title>
</head>
<body>
<?php
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
$r= $_GET['urldecode(id)'];
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM COMPRAS";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while( false !== ( $Row = @odbc_fetch_array( $rs ) ) ) {
}
odbc_fetch_row($rs,$r);
$prd = odbc_result($rs,"produto");
$prm = odbc_result($rs,"prmaximo");
echo '<br>';
echo '<br>';
echo '<p>';
echo '<strong>'."Produto: ".'</strong>';
echo '<font face="arial" color="red" size="21">'.$prd.'</font>';
echo '<br>';
echo '<p>';
echo '<p>';
echo "Preço máximo: ";
echo $prm;
odbc_close($conn);
?>
</body>
</html>
06 Jun 2014 08:54
cjp escreveu:e não sei como passar os dois argumentos ao mesmo tempo
echo "<form action='dproduto.php?id=".urlencode($tid)."&id2=".urlencode($tid2)."' method='post'>";
$r= urldecode($_GET['id']);
$r2= urldecode($_GET['id2']);
07 Jun 2014 00:03
<html>
<head>
<title>Consulta</title>
</head>
<body>
<?php
$txtArquivo = "COMPRAS.DBF";
$txtCampo = "PRODUTO";
$int = "INTERVALO";
$txtP1 = ($_POST["filtro3"]);
$txtP2 = strtoupper($txtP1);
$txtP3 = strtolower($txtP1);
$txtP4 = ucfirst($txtP1);
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM ".$txtArquivo." WHERE ".$int.">0 and (".$txtCampo." LIKE '%".$txtP1."%' OR ".$txtCampo." LIKE '%".$txtP2."%' OR ".$txtCampo." LIKE '%".$txtP3."%' OR ".$txtCampo." LIKE '%".$txtP4."%')";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
$i = 0;
$fieldCount = odbc_num_fields($rs);
echo "Resultado da pesquisa:";
$tid=codigo;
$tid2=preco;
while (odbc_fetch_row($rs))
{
echo "<tr>";
$i = 0;
while ($i < $fieldCount)
{
$i++;
$fieldName = odbc_field_name($rs, $i);
$compname=odbc_result($rs,$fieldName);
$compname2=trim($compname);
if ($i==1)
{echo '<br>';
echo '<br>';
echo "<td>$compname2</td>";}
elseif ($i==51)
{echo '<br>';
echo "Preço máximo: "."<td>$compname2</td>";}
}
echo '<br>';
echo "<table align='center' border='0' cellpadding='0' cellspacing='0' width='49%'>";
echo "<form action='dproduto.php?id=".($tid)."&id2=".($tid2)."' method='post'>";
echo "<input size='35' type='number' name='preco' id='preco' value='Digite aqui o preço do produto' onfocus='this.value = '';' onblur='if (this.value == '') {this.value = 'Digite aqui parte o preço do produto';}'>";
echo " <input size='38' name='submit' type='submit' id='Confirmar' value='Confirmar'>";
echo "</tr>";
echo "</table>";
echo "</form>";
}
odbc_close($conn);
?>
</body>
</html>
<html>
<head>
<title>Detalhes do produto</title>
</head>
<body>
<?php
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
$r= $_GET['id'];
$r2= $_GET['id2'];
echo "Teste1";
echo "Código: ".$r;
echo "Preço: ".$r2;
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM COMPRAS WHERE CODIGO=".$r;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while( false !== ( $Row = @odbc_fetch_array( $rs ) ) ) {
}
odbc_fetch_row($rs,$r);
$prd = odbc_result($rs,"produto");
$prm = odbc_result($rs,"prmaximo");
echo '<br>';
echo '<br>';
echo '<p>';
echo "Teste2";
echo "Código: ".$r;
echo "Produto: ".$prd;
echo "Preço: ".$r2;
odbc_close($conn);
?>
</body>
</html>
Teste1Código: codigoPreço: preco
Teste2Código: codigoProduto: Preço: preco
07 Jun 2014 08:21
cjp escreveu:$tid=codigo;
$tid2=preco;
cjp escreveu:$compname=odbc_result($rs,$fieldName);
cjp escreveu:mas a segunda não; é (ou era pra ser) o valor digitado pelo usuário no combobox.
cjp escreveu:echo "<form action='dproduto.php?id=".($tid)."&id2=".($tid2)."' method='post'>";
$r2= $_POST['preco'];
07 Jun 2014 12:29
<html>
<head>
<title>Consulta</title>
</head>
<body>
<?php
$txtArquivo = "COMPRAS.DBF";
$txtCampo = "PRODUTO";
$int = "INTERVALO";
$txtP1 = ($_POST["filtro3"]);
$txtP2 = strtoupper($txtP1);
$txtP3 = strtolower($txtP1);
$txtP4 = ucfirst($txtP1);
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM ".$txtArquivo." WHERE ".$int.">0 and (".$txtCampo." LIKE '%".$txtP1."%' OR ".$txtCampo." LIKE '%".$txtP2."%' OR ".$txtCampo." LIKE '%".$txtP3."%' OR ".$txtCampo." LIKE '%".$txtP4."%')";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
$i = 0;
$fieldCount = odbc_num_fields($rs);
echo "Resultado da pesquisa:";
$tid=codigo;
while (odbc_fetch_row($rs))
{
echo "<tr>";
$i = 0;
while ($i < $fieldCount)
{
$i++;
$fieldName = odbc_field_name($rs, $i);
$compname=odbc_result($rs,$fieldName);
$compname2=trim($compname);
if ($i==1)
{echo '<br>';
echo '<br>';
echo "<td>$compname2</td>";}
elseif ($i==51)
{echo '<br>';
echo "Preço máximo: "."<td>$compname2</td>";}
}
echo '<br>';
echo "<table align='center' border='0' cellpadding='0' cellspacing='0' width='49%'>";
echo "<form action='dproduto.php?id=".($tid)."' method='post'>";
echo "<input size='35' type='number' name='preco' id='preco' value='Digite aqui o preço do produto' onfocus='this.value = 'Digite o preço';' onblur='if (this.value == '') {this.value = 'Digite aqui o preço do produto';}'>";
echo " <input size='38' name='submit' type='submit' id='Confirmar' value='Confirmar'>";
echo "</tr>";
echo "</table>";
echo "</form>";
}
odbc_close($conn);
?>
</body>
</html>
<html>
<head>
<title>Detalhes do produto</title>
</head>
<body>
<?php
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
$r= $_GET['id'];
$r2= $_post['preco'];
echo "Teste1";
echo "Código: ".$r;
echo "Preço: ".$r2;
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM COMPRAS WHERE CODIGO=".$r;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while( false !== ( $Row = @odbc_fetch_array( $rs ) ) ) {
}
odbc_fetch_row($rs,$r);
$cod = odbc_result($rs,"codigo");
$prd = odbc_result($rs,"produto");
$prm = odbc_result($rs,"prmaximo");
echo '<br>';
echo '<br>';
echo '<p>';
echo "Teste2";
echo "Código: ".$cod;
echo "Produto: ".$prd;
echo "Preço: ".$r2;
odbc_close($conn);
?>
</body>
</html>
Teste1Código: codigoPreço:
Teste2Código: 1000.0Produto: Preço:
08 Jun 2014 18:10
cjp escreveu:Mas não é com o odbc_result que eu estou fazendo?
field pode ser um inteiro contendo o número da coluna que você quer; ou pode ser uma string contendo o nome do campo.
$tid=odbc_result($rs,'codigo');
cjp escreveu:Mudei para o post, mas ainda não funcionou.
$sql="SELECT * FROM COMPRAS WHERE CODIGO='".$r."'";
17 Jun 2014 01:07
<html>
<head>
<title>Consulta</title>
</head>
<body>
<?php
$txtArquivo = "COMPRAS.DBF";
$txtCampo = "PRODUTO";
$int = "INTERVALO";
$txtP1 = ($_POST["filtro3"]);
$txtP2 = strtoupper($txtP1);
$txtP3 = strtolower($txtP1);
$txtP4 = ucfirst($txtP1);
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM ".$txtArquivo." WHERE ".$int.">0 and (".$txtCampo." LIKE '%".$txtP1."%' OR ".$txtCampo." LIKE '%".$txtP2."%' OR ".$txtCampo." LIKE '%".$txtP3."%' OR ".$txtCampo." LIKE '%".$txtP4."%')";
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
$i = 0;
$fieldCount = odbc_num_fields($rs);
echo "Resultado da pesquisa:";
echo '<br>';
$tid=odbc_result($rs,'codigo');
while (odbc_fetch_row($rs))
{
echo "<tr>";
$i = 0;
while ($i < $fieldCount)
{
$i++;
$fieldName = odbc_field_name($rs, $i);
$compname=odbc_result($rs,$fieldName);
$compname2=trim($compname);
$tid=odbc_result($rs,'codigo');
if ($i==1)
{echo '<br>';
echo "<td><a href='dproduto.php?id=".($tid)."' target='_top'>".$compname2."</a></td>";}
elseif ($i==51)
{echo '<br>';
echo "Preço máximo: "."<td>$compname2</td>";}
}
echo '<br>';
}
odbc_close($conn);
?>
</body>
</html>
<html>
<head>
<title>Detalhes do produto</title>
</head>
<body>
<?php
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
$r= $_GET['id'];
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
$sql="SELECT * FROM COMPRAS WHERE CODIGO=".$r;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while( false !== ( $Row = @odbc_fetch_array( $rs ) ) ) {
}
odbc_fetch_row($rs,$r);
$cod = odbc_result($rs,"codigo");
$prd = odbc_result($rs,"produto");
$prm = odbc_result($rs,"prmaximo");
echo '<br>';
echo '<br>';
echo '<p>';
echo "Produto: ".$prd;
echo '<br>';
echo '<br>';
echo "Preço máximo: ".$prm;
echo '<br>';
echo '<br>';
echo "Anote o preço: ".$r2;
echo '<br>';
echo '<br>';
echo "<table align='center' border='0' cellpadding='0' cellspacing='0' width='49%'>";
echo "<form action='cadprec.php?id=".($tid)."' method='post'>";
echo "<input size='35' type='number' name='preco' id='preco' value='Digite aqui o preço do produto' onfocus='this.value = 'Digite o preço';' onblur='if (this.value == '') {this.value = 'Digite aqui o preço do produto';}'>";
echo " <input size='38' name='submit' type='submit' id='Confirmar' value='Confirmar'>";
echo "</tr>";
echo "</table>";
echo "</form>";
odbc_close($conn);
?>
</body>
</html>
<html>
<head>
<title>Cadastrando preço</title>
</head>
<body>
<?php
$reg= $_GET['id'];
$prec= $_GET['tid'];
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
else
echo "Registro: ".$reg;
echo '<br>';
echo "Preço digitado: ".$prec;
echo '<br>';
$sql="SELECT * FROM COMPRAS WHERE CODIGO=".$reg;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while( false !== ( $Row = @odbc_fetch_array( $rs ) ) ) {
}
odbc_fetch_row($rs,$reg);
$cod = odbc_result($rs,"codigo");
$db = dbase_open("meusarq/agenda/compras.dbf", 2);
$registro = dbase_get_record_with_names($db, $cod);
echo '<br>';
echo "Código: ".$cod;
echo "Registro: ".$registro;
print "data : ".$registro[data];
// ";
echo '<br>';
print "produto : ".$registro[produto];
//";
echo '<br>';
print "preço máximo : ".$registro[prmaximo];
//";
echo '<br>';
dbase_close($db);
?>
17 Jun 2014 09:37
cjp escreveu:Não sei porque o $tid não está sendo passado corretamente do segundo para o terceiro php.
cjp escreveu:Teria como eu pegar para o $registro todos os dados que já estão na base,...
$registro = dbase_get_record_with_names($db, $cod);
cjp escreveu:... alterar apenas o campo que eu quero, e recolocar?
$registro['preco'] = $prec;
$prec= $_GET['tid'];
Toledo escreveu:Quando você quer recuperar o valor de algum campo de um formulário, que é o caso do preço digitado pelo usuário, você tem que ver qual o método usado no formulário (Form):
cjp escreveu echo "<form action='dproduto.php?id=".($tid)."&id2=".($tid2)."' method='post'>";
O método post é diferente da passagem de variáveis usando uma URL (método GET), então a recuperação no segundo PHP tem que ser o seguinte:
$r2= $_POST['preco'];
17 Jun 2014 14:08
PHP Warning: dbase_replace_record() [<a href='function.dbase-replace-record'>function.dbase-replace-record</a>]: Wrong number of fields specified in C:\Inetpub\Wwwroot\inaciobr\cadprec.php on line 45
The number of items must be equal to the number of fields in the database, otherwise dbase_replace_record() will fail.
<html>
<head>
<title>Cadastrando preço</title>
</head>
<body>
<?php
$reg= $_GET['id'];
$prec= $_POST['preco'];
$dsn = "DRIVER={Microsoft dBase Driver (*.dbf)};DBQ=".dirname($_SERVER['SCRIPT_FILENAME'])."/meusarq/agenda/;";
$conn= odbc_connect($dsn,"","");
if(!$conn)
{ exit("conexao falhou: ".odbc_errormsg()); }
else
echo "Registro: ".$reg;
echo '<br>';
echo "Preço digitado: ".$prec;
echo '<br>';
$sql="SELECT * FROM COMPRAS WHERE CODIGO=".$reg;
$rs=odbc_exec($conn,$sql);
if (!$rs)
{exit("Error in SQL");}
while( false !== ( $Row = @odbc_fetch_array( $rs ) ) ) {
}
odbc_fetch_row($rs,$reg);
$cod = odbc_result($rs,"codigo");
$db = dbase_open("meusarq/agenda/compras.dbf", 2);
if ($db)
{$registro = dbase_get_record_with_names($db, $cod);}
else
{echo "Não abriu a base";}
echo '<br>';
echo "data : ".$registro[data];
echo '<br>';
echo "produto : ".$registro[produto];
echo '<br>';
echo "preço máximo : ".$registro[prmaximo];
echo '<br>';
if (!dbase_replace_record($db, $registro, $cod))
{echo 'Não foi possível alterar registro no banco de dados';}
dbase_close($db);
?>
17 Jun 2014 15:18
cjp escreveu:1) Está retornando vazio nos conteúdos de $registro[data], $registro[produto] e $registro[prmaximo], não entendo por que, pois testei que está abrindo a base.
cjp escreveu:2) O maior problema que eu não sei como resolver é como alterar a array $registro para colocar o preço digitado pelo usuário, em substituição ao que estava na base.
Toledo escreveu:Então, basta modificar o conteúdo da array antes de usar a função dbase_replace_record(), por exemplo:
$registro['preco'] = $prec;
cjp escreveu:3) Como faço para permitir números decimais no campo preço a ser digitado? Parece que o type 'number' não permite. Pesquisei no manual de HTML e não achei nenhuma opção.
cjp escreveu:4) A função dbase_replace_record() está retornando o seguinte erro:
18 Jun 2014 00:08
Note:
If you're using dbase_get_record() return value for this parameter, remember to reset the key named deleted.