Jump to content

Recommended Posts

Posted (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 by brunoais
geshi
Posted (edited)
if(!$ligax ){
 die('Erro::. <br />'.mysql_error());
}

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

Edited by NunoDinis

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

ndsotware.org

Posted (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 by brunoais
geshi
Posted (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 by brunoais
geshi
Posted

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
Posted

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
Posted (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 by HOliveira13
  • 3 weeks later...
Posted

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

Posted

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;
?>
Posted (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 by HOliveira13

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.