pcjardim 0 Denunciar post Postado Abril 18, 2008 Estou fazendo uma lista de presença onde leio no Banco o nome dos alunos jogo num formulário com um input na frente de cada um para colocar "p" ou "f", são vários, trabalho com paginação. Faço a leitura até o fim da tabela sem problema algum porém, depois de colocar "f" ou "p" não consigo gravar novamente. Para ler faço um laço "while" leio e vou mostrando de acordo com a quantidade de pessoas na tabela, mas para grava não faço idéia de como fazer uma vez que geralmente mandamos inserir no BD o conteúdo de determinadas variáves e nesse caso eu não sei qtos pessoas serão, só qdo faço a leitura e q sei qtos matriculdas tem (uma vez que a cada semana pode aumentar ou diminuir o nº de alunos) e no modo na qual estou acostumado ja definimos as variáves ou qtas variáves teram antes de gravar. Gostaria que alguém me auxiliasse. Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Sabdini 0 Denunciar post Postado Abril 18, 2008 Bom, nao sei se eh a melhor maneira, mas vamos la. Esse campo q você coloca 'f' ou 'p', você coloca o nome dele assim: name="presenca[<?=$aluno_id?>]" ok?? ai claro q você vai ter q ter um hidden assim: name="aluno[<?=$aluno_id?>]". Bom, como q isso vai funcionar: você vai dar um foreach no $_POST["aluno"], ai você vai ter o codigo de cada aluno, dentro do foreach você faz o UPDATE buscando o $_POST["presenca"] correspondente ao aluno. Deu pra entender?? qq coisa posta... abraços Compartilhar este post Link para o post Compartilhar em outros sites
pcjardim 0 Denunciar post Postado Abril 18, 2008 Na verdade eu não consegui ainda!!! meu código é esse: chamada.php // Informações da query. No caso, "SELECT * FROM pessoas " $campos_query = "*"; $final_query = "FROM pessoas"; // Declaração da pagina inicial $pagina = $_GET["pagina"]; if($pagina == "") { $pagina = "1"; } // Maximo de registros por pagina $maximo = 13; // Calculando o registro inicial $inicio = $pagina - 1; $inicio = $maximo * $inicio; // Conta os resultados no total da minha query $strCount = "SELECT COUNT(*) AS 'num_registros' $final_query"; $query = mysql_query($strCount); $row = mysql_fetch_array($query); $total = $row["num_registros"]; if($total<=0) { echo "<center>Nenhum registro encontrado.</center>"; } else { $strQuery = "SELECT $campos_query $final_query LIMIT $inicio,$maximo"; $query = mysql_query($strQuery); while($row = mysql_fetch_array($query)) {?> <tr> <td align="heigth" width="44%"><? echo $row["nome"]." ";?> <input type="hidden" name="nome" type="text" option value="<? echo $row[nome];?>" size="2"> </td> <td align="center" width="12%"> <input name="presenca" type="text" option value="" size="2"> </td><? $newData = date("d/m/Y"); if (($row["aniversario"] >= SomarData(date("d/m/Y"), 6, 0, 0)) and ($row["aniversario"] <= $newData)) { ?> <td align="center" width="50%" class="destaque"><? echo $row["aniversario"]."<BR>"; } else {?> <td align="center" width="50%"><? echo $row["aniversario"]."<BR>"; } ?> <input type="hidden" name="aniversario" type="text" option value="<? echo $row[aniversario];?>" size="2"> </td> </tr><? }?> </table> <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="center"><input type="submit" value="Gravar"></td> <tr> </table> </form> <table align="center" border="0" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="right"> <h2> <? // Calculando pagina anterior $menos = $pagina - 1; // Calculando pagina posterior $mais = $pagina + 1; $pgs = ceil($total / $maximo); if($pgs > 1 ) { // Mostragem de pagina if($menos > 0) { echo "<a href=\"?pagina=$menos&\" class='texto_paginacao'>anterior</a> "; } // Listando as paginas for($i=1;$i <= $pgs;$i++) { if($i != $pagina) { echo " <a href=\"?pagina=".($i)."\" class='texto_paginacao'>$i</a>"; } else { echo " <strong lass='texto_paginacao_pgatual'>".$i."</strong>"; } } if($mais <= $pgs) { echo " <a href=\"?pagina=$mais\" class='texto_paginacao'>próxima</a>"; }?> </td> </tr> </table><? } }mando gravar em:chamada_grava.php if (getenv("REQUEST_METHOD") == "POST") { include("conexao.php"); $nome=$_POST['nome']; $presenca=$_POST['presenca']; $aniversario=$_POST['aniversario']; $query = mysql_query ( "INSERT INTO chamada (id, nome, presenca) VALUES ('','$nome','$presenca')" ); $query1 = "SELECT * FROM pessoas ORDER BY nome"; $resultado1 = mysql_query($query1); while ($linha1 = mysql_fetch_array($resultado1)) { $linha1['id']; $linha1['nome']; $linha1['presenca']; $linha1['aniversario']; } $query2 = "SELECT * FROM classes WHERE id='$classe'"; $resultado2 = mysql_query($query2); while ($linha2 = mysql_fetch_array($resultado2)) { $l=$linha2['classe']; }?><br> <center span class="style2">Chamada gravada com sucesso!<br><br> <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="center" width="44%" class="style1"> NOME </td> <td align="center" width="12%" class="style1"> PRESENÇA </td> <td align="center" class="style1"> CLASSE </td> </tr> </table> <? echo ' <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <span class="style1"> <tr> <td align="center" width="44%" class="style1"> '.$nome.'<br> </td> <td align="center" width="12%" class="style1"> '.$presenca.'<br> </td> <td align="center" class="style1"> '.$aniversario.'<br> </td> </tr> </span> </table>'; } ele esta gravando, porém eu só consigo gravar o último!!! Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Sabdini 0 Denunciar post Postado Abril 18, 2008 troque <input type="hidden" name="nome" type="text" option value="<? echo $row[nome];?>" size="2"> por <input type="hidden" name="aluno[<?=$row["id"]?>]" type="text" option value="<?=$row["id"]?>" size="2"> troque <input name="presenca" type="text" option value="" size="2"> por <input name="presenca[<?=$row["id"]?>]" type="text" option value="" size="2"> oq foi feito? Criamos um array com todos os alunos, o PHP vai entender assim: $_POST["aluno"][1] $_POST["aluno"][2] Ai, em $_POST["presenca"][1], temos guardado 'f' ou 'p'. Ta conseguindo acompanhar??? Pois bem, você vai fazer o seguinte: foreach($_POST["aluno"] as $aluno){ // varrer todos os alunos $presenca_do_aluno = $_POST["presenca"][$aluno]; # abaixo você faz a rotina com o banco de dados.. lembrando que $presenca_do_aluno contem a presença dele e $aluno contem o ID do alunol. } qq coisa posta. ah..outra coisa, na tabela "chamada", você usa o "nome" do aluno para relacionar.. mas o ideal eh usar o ID, por isso usei $row["id"]. Compartilhar este post Link para o post Compartilhar em outros sites
pcjardim 0 Denunciar post Postado Abril 18, 2008 Bom pelo que entendi em chamada.php substituo os input's e em chamada_grava.php faço o seguinte: <?php if (getenv("REQUEST_METHOD") == "POST") { include("conexao.php"); foreach($_POST["aluno"] as $aluno) { $presenca_do_aluno = $_POST["presenca"][$aluno]; } $id=$_POST['aluno']; $presenca=$_POST['presenca']; //$aniversario=$_POST['aniversario']; $query = mysql_query ( "INSERT INTO chamada (id, aluno, presenca) VALUES ('','$id','$presenca')" ); Ele esta gravando apenas a palavra "array" e apenas uma vez! Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 18, 2008 Vamos fazer 'TESTES' substitua o seu script por este aqui: <?php $campos_query = '*'; $final_query = "FROM pessoas"; // Declaração da pagina inicial $pagina = $_GET['pagina']; if($pagina == '') { $pagina = 1; } // Maximo de registros por pagina $maximo = 13; // Calculando o registro inicial $inicio = $pagina - 1; $inicio = $maximo * $inicio; // Conta os resultados no total da minha query $strCount = "SELECT COUNT(*) AS 'num_registros' $final_query"; $query = mysql_query($strCount); $row = mysql_fetch_array($query); $total = $row['num_registros']; if($total==0) { echo "<center>Nenhum registro encontrado.</center>"; } else { $strQuery = "SELECT $campos_query $final_query LIMIT $inicio,$maximo"; $query = mysql_query($strQuery); while($row = mysql_fetch_array($query)) {?> <tr> <td align="heigth" width="44%"><? echo $row['nome']." ";?> <input type="hidden" name="nome" type="text" value="<? echo $row['nome'];?>" size="2"> </td> <td align="center" width="12%"> <input name="presenca" type="text" option value="" size="2"> </td><? $newData = date("d/m/Y"); if (($row['aniversario'] >= SomarData(date("d/m/Y"), 6, 0, 0)) and ($row['aniversario'] <= $newData)) { ?> <td align="center" width="50%" class="destaque"><? echo $row['aniversario'].'<BR>'; } else {?> <td align="center" width="50%"><? echo $row['aniversario'].'<BR>'; } ?> <input type="hidden" name="aniversario" type="text" value="<? echo $row['aniversario'];?>" size="2"> </td> </tr><? }?> </table> <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="center"><input type="submit" value="Gravar"></td> <tr> </table> </form> <table align="center" border="0" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="right"> <h2> <? // Calculando pagina anterior $menos = $pagina - 1; // Calculando pagina posterior $mais = $pagina + 1; $pgs = ceil($total / $maximo); if($pgs > 1 ) { // Mostragem de pagina if($menos > 0) { echo "<a href=\"?pagina=$menos&\" class='texto_paginacao'>anterior</a> "; } // Listando as paginas for($i=1;$i <= $pgs;$i++) { if($i != $pagina) { echo " <a href=\"?pagina=".($i)."\" class='texto_paginacao'>$i</a>"; } else { echo " <strong lass='texto_paginacao_pgatual'>".$i."</strong>"; } } if($mais <= $pgs) { echo " <a href=\"?pagina=$mais\" class='texto_paginacao'>próxima</a>"; }?> </td> </tr> </table><? } } ?>e este também: <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { include('conexao.php'); $nome=$_POST['nome']; $presenca=$_POST['presenca']; $aniversario=$_POST['aniversario']; $query = mysql_query ( "INSERT INTO chamada (id, nome, presenca) VALUES ('$nome','$presenca')" ); $query1 = "SELECT * FROM pessoas ORDER BY nome"; $resultado1 = mysql_query($query1); while ($linha1 = mysql_fetch_array($resultado1)) { $linha1['id']; $linha1['nome']; $linha1['presenca']; $linha1['aniversario']; } $query2 = "SELECT * FROM classes WHERE id='$classe'"; $resultado2 = mysql_query($query2); while ($linha2 = mysql_fetch_array($resultado2)) { $l=$linha2['classe']; }?><br> <center span class="style2">Chamada gravada com sucesso!<br><br> <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="center" width="44%" class="style1"> NOME </td> <td align="center" width="12%" class="style1"> PRESENÇA </td> <td align="center" class="style1"> CLASSE </td> </tr> </table> <?php echo ' <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <span class="style1"> <tr> <td align="center" width="44%" class="style1"> '.$nome.'<br> </td> <td align="center" width="12%" class="style1"> '.$presenca.'<br> </td> <td align="center" class="style1"> '.$aniversario.'<br> </td> </tr> </span> </table>'; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Sabdini 0 Denunciar post Postado Abril 18, 2008 pcjardim, na verdade fica assim: <?php if (getenv("REQUEST_METHOD") == "POST") { include("conexao.php"); foreach($_POST["aluno"] as $aluno) { $presenca_do_aluno = $_POST["presenca"][$aluno]; $presenca=$_POST['presenca']; $query = mysql_query ( "INSERT INTO chamada (id, aluno, presenca) VALUES ('','$aluno','$presenca')" ); } coloquei a query q insere a chamada dentro do foreach postei errado: fica assim: <?php if (getenv("REQUEST_METHOD") == "POST") { include("conexao.php"); foreach($_POST["aluno"] as $aluno) { $presenca_do_aluno = $_POST["presenca"][$aluno]; $query = mysql_query ( "INSERT INTO chamada (id, aluno, presenca) VALUES ('','$aluno','$presenca_do_aluno')" ); } Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Abril 18, 2008 Bem Marcelo, já que você que está companhando o tópico do rapaz, vou deixar você conclua, não vou me meter heheh se não vai confundir tudo, mais se precisar de ajuda eu to aqui eim ;) PS: coloque os códigos dentro das tags CODE para facilitar o entendimento dos scripts, e para ficar de acordo as normas. Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Sabdini 0 Denunciar post Postado Abril 18, 2008 po... nem fragava isso hahaha Eh q voltei a ativa aqui no forum agora.. rsrsrs Valeu o toque Alaerte. Compartilhar este post Link para o post Compartilhar em outros sites
pcjardim 0 Denunciar post Postado Abril 18, 2008 assim esta gravando, porém só o último registro... <? $campos_query = '*'; $final_query = "FROM pessoas"; // Declaração da pagina inicial $pagina = $_GET['pagina']; if($pagina == '') { $pagina = 1; } // Maximo de registros por pagina $maximo = 13; // Calculando o registro inicial $inicio = $pagina - 1; $inicio = $maximo * $inicio; // Conta os resultados no total da minha query $strCount = "SELECT COUNT(*) AS 'num_registros' $final_query"; $query = mysql_query($strCount); $row = mysql_fetch_array($query); $total = $row['num_registros']; if($total==0) { echo "<center>Nenhum registro encontrado.</center>"; } else { $strQuery = "SELECT $campos_query $final_query LIMIT $inicio,$maximo"; $query = mysql_query($strQuery); while($row = mysql_fetch_array($query)) {?> <tr> <td align="left" width="49%" class="style1"><? echo $row['id']." ";?> <input type="hidden" name="aluno" type="text" value="<? echo $row['id'];?>" size="2"> </td> <td align="center" width="12%" class="style1"> <input name="presenca" type="text" option value="" size="2"> </td><? $newData = date("d/m/Y"); if (($row['aniversario'] >= SomarData(date("d/m/Y"), 6, 0, 0)) and ($row['aniversario'] <= $newData)) { ?> <td align="center" width="15%" class="style1"><? echo $row['aniversario'].'<BR>'; } else {?> <td align="center" width="15%" class="style1"><? echo $row['aniversario'].'<BR>'; } ?> <input type="hidden" name="aniversario" type="text" value="<? echo $row['aniversario'];?>" size="2"> </td> <td align="left" class="style1"><? echo $row['classe']." ";?> <input type="hidden" name="classe" type="text" value="<? echo $row['classe'];?>" size="2"> </td> </tr><? }?> </table> <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="center"><input type="submit" value="Gravar"></td> <tr> </table> </form> <table align="center" border="0" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="right"> <h2> <? // Calculando pagina anterior $menos = $pagina - 1; // Calculando pagina posterior $mais = $pagina + 1; $pgs = ceil($total / $maximo); if($pgs > 1 ) { // Mostragem de pagina if($menos > 0) { echo "<a href=\"?pagina=$menos&\" class='texto_paginacao'>anterior</a> "; } // Listando as paginas for($i=1;$i <= $pgs;$i++) { if($i != $pagina) { echo " <a href=\"?pagina=".($i)."\" class='texto_paginacao'>$i</a>"; } else { echo " <strong lass='texto_paginacao_pgatual'>".$i."</strong>"; } } if($mais <= $pgs) { echo " <a href=\"?pagina=$mais\" class='texto_paginacao'>próxima</a>"; }?> </td> </tr> </table><? } } ?> e <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { include('conexao.php'); $aluno=$_POST['aluno']; $presenca=$_POST['presenca']; $aniversario=$_POST['aniversario']; $classe=$_POST['classe']; $query = mysql_query ( "INSERT INTO chamada (id, aluno, presenca, classe) VALUES ('','$aluno','$presenca','$classe')" ); $query1 = "SELECT * FROM pessoas ORDER BY nome"; $resultado1 = mysql_query($query1); while ($linha1 = mysql_fetch_array($resultado1)) { $linha1['id']; $linha1['nome']; $linha1['presenca']; $linha1['aniversario']; } $query2 = "SELECT * FROM classes WHERE id='$classe'"; $resultado2 = mysql_query($query2); while ($linha2 = mysql_fetch_array($resultado2)) { $l=$linha2['classe']; }?><br> <center span class="style2">Chamada gravada com sucesso!<br><br> <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <tr> <td align="center" width="44%" class="style1"> ALUNO </td> <td align="center" width="12%" class="style1"> PRESENÇA </td> <td align="center" class="style1"> ANIVERSARIO </td> <td align="center" class="style1"> CLASSE </td> </tr> </table> <?php echo ' <table align="center" border="1" width="60%" cellspacing="0" cellpadding="5" bgcolor="#EAEBEF" bordercolorlight="#FFFFFF" bordercolordark="#E3E5EA"> <span class="style1"> <tr> <td align="center" width="44%" class="style1"> '.$aluno.'<br> </td> <td align="center" width="12%" class="style1"> '.$presenca.'<br> </td> <td align="center" class="style1"> '.$aniversario.'<br> </td> <td align="center" class="style1"> '.$classe.'<br> </td> </tr> </span> </table>'; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
pcjardim 0 Denunciar post Postado Abril 18, 2008 ficaria assim? if ($_SERVER['REQUEST_METHOD'] == 'POST') { include('conexao.php'); foreach($_POST["aluno"] as $aluno) { $presenca_do_aluno = $_POST["presenca"][$aluno]; echo presenca_do_aluno; $aniversario=$_POST['aniversario']; $classe=$_POST['classe']; $query = mysql_query ( "INSERT INTO chamada (id, aluno, presenca, classe) VALUES ('','$aluno','$presenca','$classe')" ); } ta dando o erro Warning: Invalid argument supplied for foreach() in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\ebd\chamada_grava1.php on line 28 Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Sabdini 0 Denunciar post Postado Abril 18, 2008 nao.. assim: if ($_SERVER['REQUEST_METHOD'] == 'POST') { include('conexao.php'); foreach($_POST["aluno"] as $aluno) { $presenca_do_aluno = $_POST["presenca"][$aluno]; echo presenca_do_aluno; $aniversario=$_POST['aniversario']; $classe=$_POST['classe']; $query = mysql_query ( "INSERT INTO chamada (id, aluno, presenca, classe) VALUES ('','$aluno','$presenca_do_aluno','$classe')" ); } Compartilhar este post Link para o post Compartilhar em outros sites
pcjardim 0 Denunciar post Postado Abril 18, 2008 alterei, esta assim: <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { include('conexao.php'); /* $aluno=$_POST['aluno']; $presenca=$_POST['presenca']; $aniversario=$_POST['aniversario']; $classe=$_POST['classe']; */ foreach($_POST['aluno'] as $aluno) { $presenca_do_aluno = $_POST["presenca"][$aluno]; echo presenca_do_aluno; $aniversario=$_POST['aniversario']; $classe=$_POST['classe']; $query = mysql_query ( "INSERT INTO chamada (id, aluno, presenca, classe) VALUES ('','$aluno','$presenca_do_aluno','$classe')" ); } mesmo assim continua dando o erro: Warning: Invalid argument supplied for foreach() in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\ebd\chamada_grava1.php on line 33 Compartilhar este post Link para o post Compartilhar em outros sites
Marcelo Sabdini 0 Denunciar post Postado Abril 18, 2008 da um echo "<pre>"; print_r($_POST['aluno']); echo "</pre>"; antes do foreach.. soh pra ver se vai imprimir o array mesmo.... Compartilhar este post Link para o post Compartilhar em outros sites
pcjardim 0 Denunciar post Postado Abril 28, 2008 só imprime o último e continua dando o erro: Warning: Invalid argument supplied for foreach() in C:\Arquivos de programas\Apache Software Foundation\Apache2.2\htdocs\ebd\chamada_grava1.php on line 36 Compartilhar este post Link para o post Compartilhar em outros sites