HOliveira13 Posted March 18, 2013 at 05:37 PM Report #499577 Posted March 18, 2013 at 05:37 PM (edited) Estou a fazer um projecto, para inserção de dados, de voluntariado para a Santa Casa de Misericordia. Isto é uma das partes, o problema está na inserção do Resolver Problema e nas actividades. No resolver problema quando faço inserir, ele vai ao outro ficheiro 'Essa Pessoa já foi inserida' e não insere. Nas actividades dá o seguinte erro: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\teste\terceiraparte.php on line 168 Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\teste\terceiraparte.php on line 177 Este é o ficheiro da inserçao: <?php //conectar ao servidor de dados. //se $ligax é zero então não fez ligação. $ligax = mysqli_connect('localhost', 'root'); //seleccionar a BD cdcol. mysqli_select_db($ligax, 'mydb'); $par_senior=$_GET['seniorid']; //Resolver Problemas $pessoaresolveproblemas = "SELECT * FROM pessoaresolveproblemas;"; $resultpessoaresolveproblemas = mysqli_query($ligax, $pessoaresolveproblemas); $pessoaresolveproblemas_senior = "select Senior_SeniorID AS seniorid, classifica from senior_has_pessoaresolveproblemas as ds inner join pessoaresolveproblemas as dp ON ds.PessoaResolveProblemas_PessoaResProbID=dp.PessoaResProbID where Senior_SeniorID=$par_senior order by classifica ;"; $rprob_senior = mysqli_query($ligax, $pessoaresolveproblemas_senior); $rprob_senior = mysqli_num_rows($resultactividades_senior); // $nr_autonomia = mysqli_num_rows($rprob_senior); //echo $nr_autonomia; //actividades $actividades = "SELECT * FROM actividades;"; $resultactividades = mysqli_query($ligax, $actividades); $actividades_senior = "select Senior_SeniorID AS seniorid ,actividades ,ds.Actividades_ActividadesID AS actividadeid ,classifica from actividades_has_senior as ds inner join actividades as dp on ds.Actividades_ActividadesID=dp.ActividadesID where Senior_SeniorID=$par_senior order by classifica;"; $resultactividades_senior = mysqli_query($ligax, $actividades_senior); //$nr_actividades = mysqli_num_rows($resultactividades_senior); //Frequencia visita $frequenciavisita = "SELECT * FROM frequenciavisita;"; $resultfrequenciavisita = mysqli_query($ligax, $frequenciavisita); $frequenciavisita_senior = "select Senior_SeniorID AS seniorid ,frequenciavisita ,ds.FrequenciaVisita_FrequenciaVisitaID AS frequenciavisitaid ,classifica from frequenciavisita_has_senior as ds inner join frequenciavisita as dp on ds.FrequenciaVisita_FrequenciaVisitaID=dp.FrequenciaVisitaID where Senior_SeniorID=$par_senior order by classifica ;"; $resultfrequenciavisita_senior = mysqli_query($ligax, $frequenciavisita_senior); $nr_frequenciavisita = mysqli_num_rows($resultfrequenciavisita_senior); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title></title> <style type="text/css"> .show { display: block; } .hide { display: none; } </style> </head> <body> <form method="POST" action="ligterceiraparte.php"> <table> <td>Costuma passar muito tempo sozinho(aproximadamente quantas horas)?</td> <td><input type="text" name="TempoSozinho" value=""></td> </table> </form> <!-- Resolver Problemas--> <h2>Resolver Problemas</h2> <?php echo mysqli_num_rows($rprob_senior); print($rprob_senior); $lprob_senior = mysqli_fetch_assoc($rprob_senior); print($rprob_senior); Do { ?> <table border="1"> <thead> <th>Resolver Problemas</th> <th>Classificação</th> </thead> <tr> <td><?php echo $lprob_senior['pessoaresolveproblemas']; ?></td> <td><?php echo $lprob_senior['classifica']; ?></td> <td><a href="rem_pessoaresolveproblemas.php?pessoaresolveproblemasid=<?php echo $lprob_senior['pessoaresolveproblemasid'] . "&seniorid="; echo $linhapessoaresolveproblemas_senior['seniorid'];?>">Remover</a></td> </tr> <?php } while ($lprob_senior = mysqli_fetch_assoc($rprob_senior)) ?> </table> <form method="POST" action="PessoaResProb.php?seniorid=<?php echo $par_senior; ?>"> Quanto necessita de tomar um decisão importante ou de resolver um problema, a</br> qual das seguintes pessoas recorre prederencialmente e com que frequência? (coloque</br> por oedem de preferência). <table> <tr> <td><select name="pessoaresolveproblemas"> <?php while ($linhapessoaresolveproblemas = mysqli_fetch_assoc($resultpessoaresolveproblemas)) { ?> <option value="<?php echo $linhapessoaresolveproblemas['PessoaResProbID']; ?>" selected><?php echo $linhapessoaresolveproblemas['PessoaResProb']; ?></option> <?php } ?> </select></td> <td><select name="classifica"> <?php ?> <option value="Nunca" selected>Nunca</option> <option value="Raras vezes">Raras vezes</option> <option value="Frequentemente">Frequentemente</option> <option value="Diariamente">Diariamente</option> </select></td> <td><select name="preferencia"> <?php // ?> <option value="1" selected>1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select></td> </tr> <tr> <td><input type="text" name="senior" value="1" class="hide"></td> </tr> <tr> <td><input type="submit" value="Inserir" name="submit" /></td> </tr> </table> </form> <!-- Actividades--> <h2>Actividades</h2> <?php //if (!$nr_actividades) { //echo "Sem valores!!";} //else { ?> <table border="1"> <thead> <th>Actividades</th> <th>Classificação</th> </thead> <?php //$linhaActividades_senior = mysqli_fetch_assoc($resultactividades_senior); while ($linhaActividades_senior = mysqli_fetch_assoc($resultactividades_senior)) { ?> <tr> <td><?php echo $linhaActividades_senior['actividades']; ?></td> <td><?php echo $linhaActividades_senior['classifica']; ?></td> <td><a href="rem_actividades.php?ActividadeID=<?php echo $linhaActividades_senior['ActividadeID'] . "&seniorid="; echo $linhaActividades_senior['seniorid'];?>">Remover</a></td> </tr> <?php //} ?> </table> <?php } ?> <form method="POST" action="actividades.php?seniorid=<?php echo $par_senior; ?>"> Qual a periodicidado com que realiza as seguintes atividades? <table> <tr> <td><select name="actividades"> <?php while ($linhaactividades = mysqli_fetch_assoc($resultactividades)) { ?> <option value="<?php echo $linhaactividades['ActividadesID']; ?>" selected><?php echo $linhaactividades['Actividade']; ?></option> <?php } ?> </select></td> <td><select name="classifica"> <?php ?> <option value="Nunca">Nunca</option> <option value="Anual">Anual</option> <option value="Bianual">Bianual</option> <option value="Mensal">Mensal</option> <option value="Semanal">Semanal</option> <option value="Diário">Diário</option> </select></td></tr> <tr> <td><input type="text" name="senior" value="1" class="hide"></td> </tr> <td><input type="submit" value="Inserir" name="submit" /></td> </table> </form> <!-- Frequencia visita--> <h2>Frequencia visita</h2> <?php if (!$nr_frequenciavisita) { echo "Sem valores!!"; } else { ?> <table border="1"> <thead> <th>Frequencia visita</th> <th>Classificação</th> </thead> <?php $linhaFrequenciavisita_senior = mysqli_fetch_assoc($resultfrequenciavisita_senior); Do { ?> <tr> <td><?php echo $linhaFrequenciavisita_senior['frequenciavisita']; ?></td> <td><?php echo $linhaFrequenciavisita_senior['classifica']; ?></td> <td><a href="rem_frequenciavisita.php?frequenciavisitaid=<?php echo $linhaFrequenciavisita_senior['frequenciavisitaid'] . "&seniorid="; echo $linhaFrequenciavisita_senior['seniorid'];?>">Remover</a></td> </tr> <?php } while ($linhaFrequenciavisita_senior = mysqli_fetch_assoc($resultfrequenciavisita_senior)) ?> </table> <?php } ?> <form method="POST" action="Frequenciavisita.php?seniorid=<?php echo $par_senior; ?>"> Qual a periodicidado com que realiza as seguintes atividades? <table> <tr> <td><select name="frequenciavisita"> <?php while ($linhafrequenciavisita = mysqli_fetch_assoc($resultfrequenciavisita)) { ?> <option value="<?php echo $linhafrequenciavisita['FrequenciaVisitaID']; ?>" selected><?php echo $linhafrequenciavisita['FrequenciaVisita']; ?></option> <?php } ?> </select></td> <td><select name="classifica"> <?php ?> <option value="N/ se aplica" selected>N/ se aplica</option> <option value="Nunca">Nunca</option> <option value="Raras vezes">Raras vezes</option> <option value="Frequentemente">Frequentemente</option> <option value="Diariamente">Diariamente</option> </select></td></tr> <tr> <td><input type="text" name="senior" value="1" class="hide"></td> </tr> <td><input type="submit" value="Inserir" name="submit" /></td> </table> </form> <form method="POST" action="quartaparte.php?seniorid=<?php echo $par_senior; ?>"> <td><input type="submit" value="Proximo" name="submit" /></td> </form> </body> </html> Este é o ficheiro do Resolver problema: <?php //conectar ao servidor de dados. //se $ligax é zero então não fez ligação. $ligax = mysqli_connect('localhost', 'root'); //seleccionar a BD . mysqli_select_db($ligax, 'mydb'); $par_senior=$_GET['seniorid']; $pessoaresolveproblemas = $_POST['pessoaresolveproblemas']; $classifica=$_POST['classifica']; $preferencia=$_POST['preferencia']; echo $par_senior; print_r($_POST); $sql = "INSERT INTO senior_has_pessoaresolveproblemas VALUES('$pessoaresolveproblemas','$par_senior','$classifica','$preferencia');"; echo $sql; $resultado = mysqli_query($ligax, $sql); $par_senior=mysqli_insert_id($ligax); if (!$resultado) { echo "<script> alert('Essa Pessoa já foi inserida') window.location='terceiraparte.php?seniorid=$par_senior'; </script>"; } { echo "<script> window.location='terceiraparte.php?seniorid=$par_senior'; </script>"; } mysqli_close($ligax); echo $resultado; ?> Edited March 18, 2013 at 10:54 PM by brunoais geshi
NunoDinis Posted March 18, 2013 at 06:37 PM Report #499588 Posted March 18, 2013 at 06:37 PM (edited) if(!$ligax ){ die('Erro::. <br />'.mysql_error()); } Coloca isto no início para verificarmos se está a conetar à base de dados. Edited March 18, 2013 at 06:37 PM by NunoDinis Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro. ndsotware.org
kikito Posted March 18, 2013 at 07:18 PM Report #499594 Posted March 18, 2013 at 07:18 PM (edited) Viva! Eu estive a ver o código que pusestes em cima, e aquilo que poderias tentar fazer era em vez de teres: $sql = "INSERT INTO senior_has_pessoaresolveproblemas VALUES('$pessoaresolveproblemas','$par_senior','$classifica','$preferencia');"; Substituir por: $sql = "INSERT INTO `senior_has_pessoaresolveproblemas` VALUES('{$pessoaresolveproblemas}','{$par_senior}','{$classifica}','{$preferencia}')"; As variáveis para serem "introduzidas" dentro de uma string, convêm que elas estejam entre "{}" Se não quiseres adicionar as "{}" podes fazer, por exemplo: $sql = "INSERT INTO `senior_has_pessoaresolveproblemas` VALUES('".$pessoaresolveproblemas."','".$par_senior."','".$classifica."','".$preferencia."')"; Já agora, adiciona o "mysqli_error" apos do "mysqli_query"[mysqli_query($mysql, "bla bla bla") or die(mysqli_error());" Porque na "mysql_fetch_array" pareçe que o query nao foi executado. A conexão a base de dados mysql foi efectuada, portanto o problema não esta ai. 🙂 Cumps. Edited March 18, 2013 at 10:56 PM by brunoais geshi
HappyHippyHippo Posted March 18, 2013 at 07:29 PM Report #499596 Posted March 18, 2013 at 07:29 PM esse estilo de comando insert só é permitido se forneceres dados para todas as colunas da tabela, isso está correcto ? já agora, conheces o Bobby Tables ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
kikito Posted March 18, 2013 at 07:44 PM Report #499597 Posted March 18, 2013 at 07:44 PM (edited) esse estilo de comando insert só é permitido se forneceres dados para todas as colunas da tabela, isso está correcto ? Sim e não, dependendo do caso. Se você tiver colunas, nas quais aceitem "NULL" ou tenham o "default"[se não estou em erro], não é obrigatório inserir os dados. Se não, é obrigatório inserir todos os dados. exemplo, uma tabela na qual existem colunas que permitem "null", só temos de por o nome das colunas, e o valor para ser inserido. INSERT INTO `tabela`('nome', 'pronome', 'mail') VALUES ('o meu nome', 'o meu pronome', 'o meu email'); Se a tabela não tiver colunas que aceitem "NULL", só o: INSERT INTO `tabela` VALUES ('numero_cliente', 'o meu nome', 'o meu pronome', 'o meu email'); Sobre o bobby-tables, eu não conheço, mas eu dou clean up nos dados antes de serem introduzidos na base de dados pelo lado do utilizador. 🙂 Edited March 18, 2013 at 10:57 PM by brunoais geshi
HappyHippyHippo Posted March 18, 2013 at 08:40 PM Report #499602 Posted March 18, 2013 at 08:40 PM Sim e não, dependendo do caso. Se você tiver colunas, nas quais aceitem "NULL" ou tenham o "default"[se não estou em erro], não é obrigatório inserir os dados. Se não, é obrigatório inserir todos os dados. exemplo, uma tabela na qual existem colunas que permitem "null", só temos de por o nome das colunas, e o valor para ser inserido. http://dev.mysql.com/doc/refman/5.5/en/insert.html If you do not specify a list of column names for INSERT ... VALUES or INSERT ... SELECT, values for every column in the table must be provided by the VALUES list or the SELECT statement. If you do not know the order of the columns in the table, use DESCRIBE tbl_name to find out. IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
kikito Posted March 19, 2013 at 03:41 PM Report #499671 Posted March 19, 2013 at 03:41 PM http://dev.mysql.com/doc/refman/5.5/en/insert.html Era isso que eu queria explicar, mas disse por outras palavras :$
HappyHippyHippo Posted March 19, 2013 at 03:44 PM Report #499672 Posted March 19, 2013 at 03:44 PM Era isso que eu queria explicar, mas disse por outras palavras :$ olha bem para o que eu disse : esse estilo de comando insert só é permitido se forneceres dados para todas as colunas da tabela, isso está correcto ? e que estilo é esse ? o não usar/atribuir o nome das colunas correspondentes ao valores a serem inseridos não tem nada haver com o disseste ou dizes ter dito IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
HOliveira13 Posted March 20, 2013 at 02:40 PM Author Report #499764 Posted March 20, 2013 at 02:40 PM (edited) Boas, Eu coloquei o codigo if(!$ligax ){ die('Erro::. <br />'.mysql_error()); } e não da erro de conexão a base de dados. Eu tambem usei $sql = "INSERT INTO `senior_has_pessoaresolveproblemas` VALUES('".$pessoaresolveproblemas."','".$par_senior."','".$classifica."','".$preferencia."')"; e é igual. O problema está mesmo antes de inserir dá o seguinte erro (no ficheiro da inserção): Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, integer given in C:\xampp\htdocs\teste\terceiraparte.php on line 77 5 Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, integer given in C:\xampp\htdocs\teste\terceiraparte.php on line 79 5 Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, integer given in C:\xampp\htdocs\teste\terceiraparte.php on line 95 quando vou para inserir aparece o seguinte(no ficheiro Resolver Problema): 91Array ( [pessoaresolveproblemas] => 3 [classifica] => Frequentemente [preferencia] => 1 [senior] => 1 [submit] => Inserir ) INSERT INTO senior_has_pessoaresolveproblemas VALUES('3','91','Frequentemente','1') e não insere. Edited March 20, 2013 at 02:41 PM by HOliveira13
HappyHippyHippo Posted March 20, 2013 at 02:48 PM Report #499765 Posted March 20, 2013 at 02:48 PM quais são as linhas 77, 79 e 95, e quais são os SQL's correspondentes à execução das queries que resultaram nos valores que foram dados às funções mysqli_fetch_* ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
HOliveira13 Posted March 20, 2013 at 03:56 PM Author Report #499773 Posted March 20, 2013 at 03:56 PM a linha 77: echo mysqli_num_rows($rprob_senior); linha 79: $lprob_senior = mysqli_fetch_assoc($rprob_senior); linha 95: <?php } while ($lprob_senior = mysqli_fetch_assoc($rprob_senior)) ?>
HappyHippyHippo Posted March 20, 2013 at 04:03 PM Report #499774 Posted March 20, 2013 at 04:03 PM $rprob_senior = mysqli_query($ligax, $pessoaresolveproblemas_senior); $rprob_senior = mysqli_num_rows($resultactividades_senior); IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
HOliveira13 Posted March 20, 2013 at 04:25 PM Author Report #499776 Posted March 20, 2013 at 04:25 PM ok, continuo sem perceber, seria algo assim: $rprob_senior = mysqli_query($ligax, $pessoaresolveproblemas_senior); $resprob_senior = mysqli_num_rows($rprob_senior);
HappyHippyHippo Posted March 20, 2013 at 05:20 PM Report #499783 Posted March 20, 2013 at 05:20 PM ok, continuo sem perceber, seria algo assim: $rprob_senior = mysqli_query($ligax, $pessoaresolveproblemas_senior); $resprob_senior = mysqli_num_rows($rprob_senior); sim IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
HOliveira13 Posted April 5, 2013 at 03:48 PM Author Report #501829 Posted April 5, 2013 at 03:48 PM Boas, os erros como este Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, integer given in C:\xampp\htdocs\teste\terceiraparte.php on line 77 eu já consegui resolver, agora o problema está quando clico no inserir (na parte do resolver problemas) dá o seguinte erro: 93Array ( [pessoaresolveproblemas] => 5 [classifica] => Nunca [senior] => 1 [submit] => Inserir ) INSERT INTO senior_has_pessoaresolveproblemas VALUES('5','93','Nunca') não estou a perceber porque dá erro o array...
HappyHippyHippo Posted April 5, 2013 at 04:05 PM Report #501833 Posted April 5, 2013 at 04:05 PM e o código ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
HOliveira13 Posted April 7, 2013 at 10:07 AM Author Report #502018 Posted April 7, 2013 at 10:07 AM este é o ficheiro do inserção: <?php //conectar ao servidor de dados. //se $ligax é zero então não fez ligação. $ligax = mysqli_connect('localhost', 'root'); //seleccionar a BD . mysqli_select_db($ligax, 'mydb'); $par_senior=$_GET['seniorid']; $pessoaresolveproblemas = $_POST['pessoaresolveproblemas']; $classifica=$_POST['classifica']; $preferencia=$_POST['preferencia']; echo $par_senior; print_r($_POST); $sql = "INSERT INTO senior_has_pessoaresolveproblemas VALUES('$pessoaresolveproblemas','$par_senior','$classifica','$preferencia');"; echo $sql; $resultado = mysqli_query($ligax, $sql); $par_senior=mysqli_insert_id($ligax); if (!$resultado) { echo "<script> alert('Essa Pessoa já foi inserida') window.location='terceiraparte.php?seniorid=$par_senior'; </script>"; } { echo "<script> window.location='terceiraparte.php?seniorid=$par_senior'; </script>"; } mysqli_close($ligax); echo $resultado; ?>
HappyHippyHippo Posted April 7, 2013 at 10:09 AM Report #502020 Posted April 7, 2013 at 10:09 AM os erros como este Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, integer given in C:\xampp\htdocs\teste\terceiraparte.php on line 77 porque é que eu não vejo a chamada da função "mysqli_num_rows" no código que apresentaste ? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
HOliveira13 Posted April 7, 2013 at 04:23 PM Author Report #502041 Posted April 7, 2013 at 04:23 PM (edited) este os erros como este Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, integer given in C:\xampp\htdocs\teste\terceiraparte.php on line 77[/background][/size] era o erro que dava inicialmente, que já esta resolvido. o problema está na inserção, quando eu clico no inserir da o seguinte erro: 93Array ( [pessoaresolveproblemas] => 5 [classifica] => Nunca [senior] => 1 [submit] => Inserir ) INSERT INTO senior_has_pessoaresolveproblemas VALUES('5','93','Nunca') Edited April 7, 2013 at 04:24 PM by HOliveira13
HappyHippyHippo Posted April 7, 2013 at 05:49 PM Report #502049 Posted April 7, 2013 at 05:49 PM (edited) isso não é erro nenhum ... é a série de echo's e print_r's que tens no meio do código !!! Edited April 7, 2013 at 05:56 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now