Ir para o conteúdo
HOliveira13

Inserção no formulario

Mensagens Recomendadas

HOliveira13

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

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
NunoDinis

if(!$ligax ){
 die('Erro::. <br />'.mysql_error());
}

Coloca isto no início para verificarmos se está a conetar à base de dados.

Editado por NunoDinis

Estranha forma de vida que tem a capacidade de transformar comandos em mensagens de erro.

ndsotware.org

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kikito

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.

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
kikito

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

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HOliveira13

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.

Editado por HOliveira13

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HOliveira13

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)) ?>

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo
$rprob_senior = mysqli_query($ligax, $pessoaresolveproblemas_senior);
$rprob_senior = mysqli_num_rows($resultactividades_senior);


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HOliveira13

ok, continuo sem perceber, seria algo assim:

$rprob_senior = mysqli_query($ligax, $pessoaresolveproblemas_senior);

$resprob_senior = mysqli_num_rows($rprob_senior);

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HOliveira13

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HOliveira13

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HOliveira13

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')

Editado por HOliveira13

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

isso não é erro nenhum ...

é a série de echo's e print_r's que tens no meio do código !!!

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HOliveira13

com ou sem os echo's e print_r, não insere na mesma eu alterei o codigo assim:

<?php
//conectar ao servidor de dados.
//se $ligax é zero então não fez ligação.
 $ligax = mysqli_connect('localhost', 'root');
if(!$ligax ){
die('Erro::. <br />'.mysql_error());
}

//seleccionar a BD .
 mysqli_select_db($ligax, 'mydb');

 $par_senior=$_GET['seniorid'];
 $pessoaresolveproblemas = $_POST['pessoaresolveproblemas'];
 $classifica=$_POST['classifica'];

 //echo $par_senior;

 //print_r($_POST);

 $sql = "INSERT INTO senior_has_pessoaresolveproblemas VALUES('{$par_senior}','{$pessoaresolveproblemas}','{$classifica}')";

 echo $sql;

 //$resultado = mysqli_query($ligax, $sql);

 $par_senior=mysqli_insert_id($ligax);


 mysqli_close($ligax);
 // echo $resultado;
?>

da-me este erro: INSERT INTO senior_has_pessoaresolveproblemas VALUES('94','5','Nunca')

Editado por HOliveira13

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

isso não é erro ... o o echo:

echo $sql;

se queres inserir, deverias era tirar o comentário da linha que faz realmente o query !!

//$resultado = mysqli_query($ligax, $sql);


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.