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

duvida simples

Discussão em 'Web Development' iniciada por iGMBroken, 19 de Junho de 2007. (Respostas: 8; Visualizações: 670)

  1. iGMBroken

    iGMBroken Power Member

    boas,
    tenho um uma base de dados com registos e quando pretendo alterar os campos do registo e chamo o formulario deste que permite fazer esta alteração ele vem com os campos das listbox nao veem preenchidos e queria saber como recupero esses valores visto que são campos de diferentes dos outros.

    abraços, broken
     
  2. scroll

    scroll Power Member

    boas,

    Linguagem ?
    Base de Dados ?


    cumps,
     
  3. iGMBroken

    iGMBroken Power Member

  4. p3dro

    p3dro Power Member

    o texto tá 1 pouco confuso, ou então é do adiantado da hora :002:

    se bem percebi tu guardas 1 valor na bd, valor esse que é proveniente de uma listbox e o que tu pretendes fazer é que (quando estiveres a editar o formulário) na listbox (respeitante a esse tal campo) seja selecionado automaticamente o tal valor armazenado no campo, é isto? :wow:

    se for esta a situação vê se os 2 exemplos em baixo te ajudam em alguma coisa:

    caso as opções da listbox sejam "estáticas":
    PHP:
        <select name="teste" size="5">
          <?php $selectedValue="batatas"//por ex pode ser o valor do campo da BD ?>
          <option value="batatas" <?php if ($selectedValue=="batatas") echo "selected"?> >Opção 1</option>
          <option value="couves" <?php if ($selectedValue=="couves") echo "selected"?> >Opção 2</option>
          <option value="cebolas" <?php if ($selectedValue=="cebolas") echo "selected"?> >Opção 3</option>
        </select>
    caso a própria listbox vá obter informação a uma tabela, poderia funcionar algo semelhante a isto:
    PHP:
      $selectedValue=2//por ex pode ser o valor do campo da BD, pode ser kker coisa, texto, numero, ...
      
    $listbox="<select name='teste' size='5'>";

      
    //fazer ligação à BD ...
      
    $sql=mysql_query("select id, nome from opcoes_listbox");
      while (
    $myrow=mysql_fetch_array($sql)){
        
    $listbox.="<option value='$myrow[id]' ";
        
    $listbox.=($selectedValue==$myrow["id"])?" selected ":"";
        
    $listbox.=">$myrow[nome]</option>";
      }
      
    $listbox.="</select>";

      echo 
    $listbox;
    senão for isto que tu pretendes, desculpa lá o tempo que te fiz perder para leres o post :x2:
     
  5. iGMBroken

    iGMBroken Power Member

    PHP:
    <select name="tipo">
            <?php
                $query 
    "SELECT * FROM tipo";
                
    $result mysql_query($query);
            
                while (
    $record mysql_fetch_assoc($result)) {
                    while (list (
    $fieldname$fieldvalue) = each ($record)) {
                      if (
    $fieldname == "id") { $id=$fieldvalue; }    
                      elseif (
    $fieldname == "nome") { $nome=$fieldvalue; }
                    }
                    if(
    $tipo == $id) {$selected="selected";} else{$selected="";}
                    echo 
    "<option value='$nome$selected>$nome</option>";
                }
            
            
    ?>
            </select>
    [​IMG]
    na imagem acima como vez eu edito o registo e os campos a vermelhor voltam á estaca 0 em vez de ficar aquilo que selecionei. :|

    ele detecta os campos que estao na BD mas é suposto selecionar o campo também.

    o que esta errado ? :<

    abraço, broken
     
  6. p3dro

    p3dro Power Member

    tu tás a guardar o value da option com o "$nome", mas depois tás a comparar o "$tipo" com o "$id", ou seja qdo o formulário é submetido o valor que vai ser guardado é o "$nome" e não o "$id", daí que depois a comparação dê smp falso

    altera isto
    PHP:
    if($tipo == $id) {$selected="selected";} else{$selected="";}
    echo 
    "<option value='$nome$selected>$nome</option>"
    para isto
    PHP:
    if($tipo == $id) {$selected="selected";} else{$selected="";}
    echo 
    "<option value='$id$selected>$nome</option>"
    e vê se funciona
     
  7. iGMBroken

    iGMBroken Power Member

    Código:
          <select name="tipo">
              <option id=""></option>
            <?php
                $query = "SELECT * FROM tipo";
                $result = mysql_query($query);
            
                while ($record = mysql_fetch_assoc($result)) {
                    while (list ($fieldname, $fieldvalue) = each ($record)) {
                      if ($fieldname == "id") { $id=$fieldvalue; }    
                      elseif ($fieldname == "nome") { $nome=$fieldvalue; }
                    }
                      if($tipo == $id) {$selected="selected";} else{$selected="";}
                      echo "<option value='$id' $selected>$nome</option>";              
                    }
            
            ?>
            </select> 
    
    LOL! tipo.. eu pos funciona mas quando quero ver se o campo la esta n mostra nada , continua sem mostrar o campo.
    ---------------------------

    outra duvida, aqui ha uns tempos mostraste me um exemplo de um codigo de como mostrar uma msg de erro. epah ok ficou a funcionar mt bem.

    mas eu alterei todo o codigo, ou seja juntei agr o campo de estrutura com o campo de pesquisa.
    se fizer uma pesquisa ele vai so buscar os campos relacionados com a pesquisa se pedir a estrutura ele mostra toda a tabela.

    so que agr queria que kuando fizesse a pesquisa ele se n encontrar nada desse uma msg de erro.
    ------------------------

    PHP:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
            <title>Workmedia - Hardware Management</title>
            <link href="estilo.css" rel="stylesheet" type="text/css" />
        
          <script type="text/javascript"> 
            function ConfirmarRemover(){ 
              return confirm("Deseja remover este registo?"); 
            } 
          </script>
    </head>
    <body>

    <?php include 'principal.php'?>
    <br>
    <?
        require("connect.php");
        
        // SQL Base
        $sql_base = "SELECT * FROM hardware";
        
        // WHERE clause ... caso exista
        $sql_where = "";
        if (isset ($_POST['palavra']))
        {
            if ($_POST['campo'] == 'Todas')
            {
                $sql_where = " WHERE (id LIKE '%".$_POST['palavra']."%') OR (caracteristicas LIKE '%" . $_POST['palavra'] . 
                    "%') OR (tipo LIKE '%".$_POST['palavra']."%') OR (quantidade LIKE '%".$_POST['palavra'] . 
                    "%') OR (estado LIKE '%".$_POST['palavra']."%') OR (local LIKE '%".$_POST['palavra'].
                    "%') OR (fornecedor LIKE '%".$_POST['palavra']."%')";
            }
            else
            {
                $sql_where = " WHERE " . $_POST['campo'] . " LIKE '%".$_POST['palavra']."%'";
            }
        }
         
        // ORDER BY
        $sql_order = "";
        if (isset ( $_GET['ordem']) ) 
            $sql_order = " ORDER BY " . mysql_real_escape_string($_GET['ordem']);

        // CONTAGEM
        $sql_count = "SELECT COUNT(*) AS total FROM hardware $sql_where";
        $recordset = mysql_query( $sql_count , $db ) or die( mysql_error().":".$sql_count);   
        if (mysql_num_rows($recordset) == 0) die (mysql_error());
        $row_recordset = mysql_fetch_assoc( $recordset );
        $nr_resultados = $row_recordset["total"];
        
        // LIMIT (paginar)
        $sql_limit = "";
        $entries_per_page = 10;
        if(isset ($_POST['page'])) 
        {
            if ($_POST['page'] <= 0) $page_nr = 1;
            elseif ($_POST['page'] > (floor($nr_resultados / $entries_per_page) + 1)) 
                $page_nr = (floor($nr_resultados / $entries_per_page) + 1);
            else
                $page_nr = $_POST['page'];
        }
        else $page_nr = 1;
        
        $offset = ($page_nr - 1) * $entries_per_page;
        $sql_limit = " LIMIT $offset, $entries_per_page"; 


        // SQL FINAL PAGINADA
        $sql = $sql_base . $sql_where . $sql_order . $sql_limit;
        
      
    ?>
    </p>  
      <table class="estrutura">
      <tr align="center">
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=id">ID</a></strong></span></td>
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=caracteristicas">Caracteristicas</a></strong></span></td>
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=tipo">Tipo</a></strong></span></td>
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=quantidade">Quantidade</a></strong></span></td>
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=data">Data</a></strong></span></td>
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=estado">Estado</a></strong></span></td>
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=local">Local</a></strong></span></td>
        <td class="titulotabela" height="23"><span class="style3"><strong><a href="lista.php?ordem=garantia">Garantia</a></strong></span></td>
        <td class="titulotabela" height="23"><span><strong><a href="lista.php?ordem=fornecedor">Fornecedor</a></strong></span></td>
        <td class="titulotabela" height="23" colspan="2"><span class="style3"><strong>Op&ccedil;&otilde;es</strong></span></td>
      </tr>
    <? 
        $resultado = mysql_query($sql,$db);
        if ($resultado) 
        {
              while ($linha = mysql_fetch_array($resultado)) {
    ?>
      <TR align="center" valign="middle">
        <TD width="33" class="cordacell"><? echo $linha['id']?></td>
        <Td width="146" class="cordacell2"><? echo $linha['caracteristicas']?></td>
        <TD width="80" class="cordacell"><? echo $linha['tipo']?></td>
        <Td width="65" class="cordacell2"><? echo $linha['quantidade']?></Td>
        <TD width="86" class="cordacell"><? echo $linha['data']?></Td>
        <TD width="106" class="cordacell2"><? echo $linha['estado']?></Td>
        <TD width="76" class="cordacell"><? echo $linha['local']?></Td>
        <TD width="76" class="cordacell2"><? echo $linha['garantia']?></Td>
        <TD width="169" class="cordacell"><? echo $linha['fornecedor']?></Td>
        <TD class="opcoes">
            <form name="form1" method="post" action="alter1.php">
                <input name="id" type="hidden"  value="<? echo $linha['id']?>">
                <input name="caracteristicas" type="hidden"  value="<? echo $linha['caracteristicas']?>">
                <input name="tipo" type="hidden"  value="<? echo $linha['tipo']?>">
                <input name="quantidade" type="hidden"  value="<? echo $linha['quantidade']?>">
                <input name="data" type="hidden"  value="<? echo $linha['data']?>">
                <input name="estado" type="hidden"  value="<? echo $linha['estado']?>">
                <input name="local" type="hidden"  value="<? echo $linha['local']?>">
                <input name="garantia" type="hidden"  value="<? echo $linha['garantia']?>">
                <input name="fornecedor" type="hidden"  value="<? echo $linha['fornecedor']?>">
                <input  type="submit"  value="Editar">
            </form>    </TD>
        <TD class="opcoes">
            <form name="form1" method="get" onClick="return ConfirmarRemover();" action="eliminar.php">
                <input name="id" type="hidden"  value="<? echo $linha['id']?>">
                <input name="campo" type="hidden"  value="<? $_GET["campo"]; ?>">
                <input name="palavra" type="hidden"  value="<? $_GET["palavra"]; ?>">
                <input name="ordem" type="hidden"  value="<? $_GET["ordem"]?>">
                <input  type="submit"  value="Apagar">
            </form>    </TD>
      </TR>
    <?
        }
        }
    ?>
    </table>
      <br />
    <table class="navegar2" >
        <tr>
          <td >
            <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" name="previous_page" id="previous_page">
                <input name="page" type="hidden"  value="<? echo ($page_nr - 1); ?>" />
                <? if (isset ($_POST["campo"])) { ?>
                <input name="campo" type="hidden"  value="<? echo $_POST["campo"]; ?>" />
                <? } ?>
                <? if (isset ($_POST["palavra"])) { ?>
                <input name="palavra" type="hidden"  value="<? echo $_POST["palavra"]; ?>" />
                <? } ?>
                <? if (isset ($_POST["ordem"])) { ?>
                <input name="ordem" type="hidden"  value="<? echo $_POST["ordem"]; ?>" />
                <? } ?>
                <input type="submit"  value="&lt;" />
            </form>
          </td>
          <td  ><? echo "$page_nr/" . (floor($nr_resultados / $entries_per_page) + 1) . ""; ?></td>
          <td >
            <form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" name="next_page" id="next_page">
                <input name="page" type="hidden"  value="<? echo ($page_nr + 1); ?>" />
                <? if (isset ($_POST["campo"])) { ?>
                <input name="campo" type="hidden"  value="<? echo $_POST["campo"]; ?>" />
                <? } ?>
                <? if (isset ($_POST["palavra"])) { ?>
                <input name="palavra" type="hidden"  value="<? echo $_POST["palavra"]; ?>" />
                <? } ?>
                <? if (isset ($_POST["ordem"])) { ?>
                <input name="ordem" type="hidden"  value="<? echo $_POST["ordem"]; ?>" />
                <? } ?>
              <input type="submit"  value="&gt;" />
            </form>
          </td>
        </tr>
      </table>
      <? include 'footer.php'; ?>
    <br />
    <br />


    <? //<b><? echo $sql; ?>
    </body>
    </html>

    ok este ultimo codigo e o que estava a dizer, e onde gostaria implementar a msg.
     
    Última edição: 20 de Junho de 2007
  8. anjo2

    anjo2 Power Member

    Se bem percebi, tu mandas logo colocar o primeiro como nulo, se carregares lá não há mais opções?
     
  9. p3dro

    p3dro Power Member

     

Partilhar esta Página