1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Mostrar imagens da base de dados

Discussão em 'Programação' iniciada por patita86, 3 de Janeiro de 2013. (Respostas: 14; Visualizações: 2022)

  1. patita86

    patita86 Power Member

    Boa noite pessoal, estou a tirar um curso onde tenho que responder a umas perguntas com avaliação e gostava de saber se me podem ajudar. Eu ponho aqui as perguntas e as respostas e será que me podem confirmar se estou errado ou certo?

    How many times can you tear a 1,024-page phonebook into equal halves, each time throwing away one of the halves, before only one page remains?
    10 (x)
    32
    512
    1,024

    How many bits do you need, minimally, in order to represent the (decimal) number 7 in binary?
    3 (x)
    4
    7
    8

    How many n-letter keywords are possible when using Vigenère's cipher, assuming a 26-letter alphabet?
    n
    26
    26n (x)
    n26

    GDB is a debugger.
    True (x)
    False

    GetString uses malloc in order to allocate memory for users' input.
    True (x)
    False

    make is a compiler.
    True (x)
    False

    main must be the first function defined in a .c file.
    True (x)
    False
     
    Última edição: 6 de Março de 2013
  2. ixjf

    ixjf Power Member

    1. Certo.
    2. Don't remembah.
    3. I don't know what's that, never heard about it before.
    4. Certo.
    5. Não te sei responder porque nunca estudei C.
    6. Certo.
    7. Falso, pelo menos em C++. Não precisa de ser a primeira função, apenas precisa de estar definida.
     
  3. Sl0w

    Sl0w Power Member

    Make não é um compilador! O Make é algo mais generalista e abrangente que isso; a função do make é orquestrar o processo de compilação/build, resolvendo automaticamente dependências inerentes entre ficheiros. Claro que não é totalmente automático, tu tens de especificar essas dependências por via de uma DSL -- o make com base nessa relações que tu especificaste, faz uma ordenação topológica, filtra e manda compilar e linkar o que é necessário para chegar à build final. Dito isto, o MAKE não faz qualquer distinção semântica entre ficheiros, gera ASTs, compila código ou qualquer outra função do compilador...porque não é um compilador; usa sim eventuais compiladores (e outras ferramentas) no processo de build.

    A terceira não estou a perceber muito bem...Em teoria, um cifra de Vigenère com uma alfabeto de n chars permite n! keywords. Talvez não esteja a captar bem o que é pedido.
     
  4. Ace-_Ventura

    Ace-_Ventura Power Member

    1. Certo
    2. Certo.
    3. Não conheço.
    4. Certo.
    5. Presumo que seja a gets. Se é, não aloca, daí o buffer overflow.
    6. Errado.
    7. Errado.
     
  5. patita86

    patita86 Power Member

    #include <stdio.h>



    int main(void)

    {

    for (int i = 1; i != 0; i++)

    printf("%d\n", i);

    return 0;

    }

    Ele vai ficar num loop infinito até atingir o "integer overflow". Qual é o valor máximo que o integer poderá obter? Pelo que vi na net o valor máximo seria 2147483647. é esse o ultimo numero que ira aparecer? já meti esse e tirando uns quantos mas ele em vez de continuar a incrementar 1 esta a diminuir o valor que foi inicializado.
     
  6. Mach4_PT

    Mach4_PT Power Member

    ele está sempre a aumentar*, presta lá atenção ao output.
    PROTIP: -5 é menor que -4



    * só há uma ocorrencia em que esse loop diminui o valor de i
     
  7. patita86

    patita86 Power Member

    Tenho que fazer uma pagina em php que faça o registo de um utilizador na BD mas que valide os campos user pass e confirmação da pass.

    If $_POST["username"] ou $_POST["password"] esta vazio ou if $_POST["password"] diferente de $_POST["confirmation"], informar que existe um determinado erro.


    a query para inserir supostamente é esta ("INSERT INTO users (username, hash, cash) VALUES(?, ?, 10000.00)", $_POST["username"], crypt($_POST["password"]));


    a query tem de retornar false if INSERT falhar caso o username já exista.


    Caso o registo seja efetuado ele deve relembrar a sessão e passar para a pagina índex.php

    a única coisa que consegui fazer ate agora foi a validação e mesmo assim não sei se esta correto.

    $username = $_POST['username'];
    $password = $_POST['password'];
    $confirmation = $_POST['confirmation'];

    if (empty($_POST['username'])) { $add_errors['username'] = 'Please enter the name!'; }

    if (!empty($_POST['password']) or !empty($_POST['confirmation'])) {
    $add_errors['password'] = 'Please enter the password!'; }

    if ($_POST['password'] != $_POST['confirmation']) {
    $error[] = 'Your passwords did not match.'; }
    else {
    $password = $_POST['password']; } }
    else {
    $errors[] = '<font color="red">Please provide a password.</font>'; }
     
    Última edição: 7 de Janeiro de 2013
  8. barricas

    barricas Power Member

    se queres ver se o user já existe fazes um select no username escolhido no registo. Se devolver 1 row ou + é porque existe.

    Para lembrar a sessão fazes tipo: $_SESSION['loggedIn'] = true; e $_SESSION['userId'] = $id-primario-retirado-da-bd; (há uma função qualquer que vai buscar o last insert ID)
     
  9. patita86

    patita86 Power Member

    Já consegui obrigado.

    Agora um duvida de sql.

    como é que ligo duas tabelas. Neste caso tenha a tabela users e outra images. Quero que cada imagem inserida na tabela image fique associada ao user que esta logado no site.
     
  10. barricas

    barricas Power Member

    Com o JOIN do MySQL

    Algo assim:


    SELECT users.nome, imagens.link FROM users JOIN imagens ON users.id = imagens.id_proprietario
    WHERE users.id = 1

    Isto iria devolver um resultado para o user com id = 1 onde cada row teria:
    (se tirasses o WHERE aparecia todas as imagens com os seus donos)

    Nome utilizador <-> Link da imagem
    1 <-> link
    1 <-> outrolink
    ... <-> ...

    Uma coisa assim. No select podes fazer select do que quiseres mas como estás a usar o JOIN tens de usar "tabela.coluna"
    E a tabela das imagens tem de ter um ID do dono da imagem (o ex que usei foi id_proprietario) que é igual ao ID principal do user.
     
  11. patita86

    patita86 Power Member

    tenho a tabela users com os campos id, username, firstname, lastname e tenho a tabela images com os campos id, image, description.

    Terei então que criar um campo na tabela imagens que serve como chave estrangeira para a tabela users certo?


    Tenho outra situação, estou com a página Search para permitir fazer pesquisas por username, primeiro ou ultimo nome mas quando entro na página aquilo mostra as pesquisas feitas anteriormente e aparece um erro como este:

    [​IMG]

    O codigo que tenho é esse:

    <form action="search.php" method="post">
    <input type="text" style="width: 291px; padding: 2px" name="term" value="Search username, first name or last name" onclick="this.value='';" onblur="this.value=!this.value?'Search username, first name or last name':this.value;"/><br />
    <input type="submit" name="submit" value="Submit" />
    </form>

    <?php
    mysql_connect ("localhost", "jharvard","crimson") or die (mysql_error());
    mysql_select_db ("photobook");

    $term = $_POST['term'];

    $sql = mysql_query("select * from users where username like '%$term%'");

    while ($row = mysql_fetch_array($sql)){
    echo '<br/> First Name: '.$row['firstname'];
    echo '<br/> Last Name: '.$row['lastname'];
    echo '<br/> Username: '.$row['username'];
    echo '<br/><br/>';
    }

    ?>
     
  12. barricas

    barricas Power Member

    Ao contrário. Crias um campo na tabela users e nesse campo tens a ID primária da imagem correspondente na tabela imagens
     
  13. patita86

    patita86 Power Member

    Quanto a cena da imagem estive a ver e o que quero é o seguinte.

    Cada user pode fazer o upload de X fotos. quero que a foto tenha o user logado associado. O que isso me faz entender é que a imagem é que tem que ter o user associado logo a FK devia ser na tabela imagens ou o raciocínio está errado?
     
    Última edição: 8 de Março de 2013
  14. patita86

    patita86 Power Member

    Já consigo fazer o upload das fotos para a base de dados ou melhor fica o caminho guardado na bd e a imagem numa pasta.

    Agora so me falta mostrar, ele não dá erro mas a imagem simplesmente não aparece.

    O código que tenho.

    página upload:
    <form enctype="multipart/form-data" action="uploaded.php" method="POST">
    Name: <input type="text" name="name"><br>

    Photo: <input type="file" name="photo"><br>
    <input type="submit" value="Add">
    </form>


    página uploaded:


    <?php

    //This is the directory where images will be saved
    $target = "images/";
    $target = $target . basename( $_FILES['photo']['name']);

    //This gets all the other information from the form
    $name=$_POST['name'];
    $pic=($_FILES['photo']['name']);

    // Connects to your Database
    mysql_connect("localhost", "user", "pass") or die(mysql_error()) ;
    mysql_select_db("photobook") or die(mysql_error()) ;

    //Writes the information to the database
    mysql_query("INSERT INTO `employees` VALUES ('$name', '$pic')") ;

    //Writes the photo to the server
    if(move_uploaded_file($_FILES['photo']['tmp_name'], $target))
    {

    //Tells you if its all ok
    echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
    }
    else {

    //Gives and error if its not
    echo "Sorry, there was a problem uploading your file.";
    }
    ?>

    página photos:

    <?php
    // Connects to your Database
    mysql_connect("localhost", "user", "pass") or die(mysql_error()) ;
    mysql_select_db("photobook") or die(mysql_error()) ;

    //Retrieves data from MySQL
    $data = mysql_query("SELECT * FROM employees") or die(mysql_error());
    //Puts it into an array
    while($info = mysql_fetch_array( $data ))
    {

    //Outputs the image and other data
    Echo "<img src=images/".$info['photo'] ."> <br>";
    Echo "<b>Name:</b> ".$info['name'] . "<br> ";
    }
    ?>


    a pasta imagens está na mesma onde estão os ficheiros das paginas. alguém me consegue ajudar?
     

Partilhar esta Página