PHP, Select não devolve valores,,,

silvino

Power Member
Olá, tenho a seguinte form,

PHP:
if(additem() || empty($_POST)){
        echo '
            <form action="?a=livro_add.php" method="post">
                <fieldset>
                <legend>Adicionar Livro</legend>    
                <dl>
                    <dt><label for="titulo">Titulo</label></dt>
                    <dd><input type="text" size="25" name="titulo" value="'.$_POST["titulo"].'"></dd>
                    
                    <dt><label for="descricao">Descrição</label></dt>
                    <dd><textarea rows="5" cols="50" name="descricao">'.$_POST["descricao"].'</textarea></dd>
                    
                    <dt><label for="local">Local</label></dt>
                    <dd><input type="text" name="local" value="'.$_POST["local"].'"></dd>
                    
                    <dt><label for="ficheiro">Ficheiro</label></dt>
                    <dd><input type="text" name="ficheiro" value="'.$_POST["ficheiro"].'"></dd>                        
                    
                    <dt><label for="idtopico">Tópico</label></dt>
        ';

        $con=ligabd();
        mysql_select_db('docs',$con);
        
        $result=mysql_query("SELECT * FROM topicos");
        
        echo '<select name="idtopico">';
        while($linha=mysql_fetch_array($result)){
            echo '<option value="'.$linha["id"].'">'.$linha["titulo"].'</option>'."\n";;
        }

        echo '
                    </select>            
                <dt><input type="submit" name="livros" value="Adicionar"></dt>
             </dl>
        </form>';
        
}
Que passa os valores para a função additem

PHP:
function additem(){

$vazio = $post = array();
foreach ($_POST as $variavel => $valor) {
    if(empty($valor)){
        $vazio[$variavel] = $valor;
        echo $variavel;
    } else {
        $post[$variavel] = $valor;
           if($valor="Adicionar"){
                $op=$variavel;
        }
    }
}

if(count($vazio)==0){
    echo $op;
}else{
    return TRUE;
}
}
Funciona tudo bem menos o campo select com as option, não sei o que se passa para o foreach ($_POST as $variavel => $valor) não detectar o select option ,,,

Obrigado.
 
Desculpa :), Onde ? o objectivo é que detecte na função additem que não foi preenchido um determinado campo, neste caso, se
a selectbox não tiver nenhum valor o script deixa passar, eu não quero isso...
 
Estás a ser pouco especifico, não percebo bem o que queres.. queres isto?

if ($linha[0]==''] {
die("vazio");
} else {
//fazes o que quiseres
}

Se não é isso explica lá melhor com calma o que pretendes...
 
Olá,
Antes de mais Obrigado,

Chamo a form, que tem a seguinte condição,

PHP:
if(additem() || empty($_POST))
portanto se uma ou outra condição forem verdade, imprimo a from, a função additem é a seguinte

Crio dois arrays,
$vazio = $post = array();

Atribuo a $variável todas as que são passadas pelo post assim como o seu valor,
foreach ($_POST as $variavel => $valor) {

se o seu valor estiver vazio, a variável vazio toma valor de algo,,, só para saber mais a frente,,,
if(empty($valor)){
$vazio[$variavel] = $valor;
echo $variavel;

se não
} else {

o array $post no índice $variável toma o valor passado pelo $_POST
$post[$variavel] = $valor;

se valor for Adicionar então é porque é o botão submit, quero guardar o seu valor para ser usado
no futuro
if($valor="Adicionar"){
$op=$variavel;
}
}
}

Se o array vazio estiver vazio,,, vou realizar tarefas
if(count($vazio)==0){
echo $op;


Se não retorno o valor a form de verdade para que se apresente a fim de preencher
os campos em falta
}else{
return TRUE;
}

Funciona quase na perfeição embora não seja a melhor solução,,, apenas falha nas combobox

podem testar aqui http://debiminho.no-ip.org/?a=topico_add.php ,,, não precisam de login ;) Funciona
Mas este com Combo já não
http://debiminho.no-ip.org/?a=doc_add.php
 
Última edição:
não respondendo directamente à tua pergunta, chamava só a tua atenção para este pequeno typo

PHP:
if($valor="Adicionar")
deverá ser
PHP:
if($valor=="Adicionar")
 
Olá, já detectei o problema, não estava na função mas sim na Form,

Pois esta tinha o seguinte código,

PHP:
    $con=ligabd();
    mysql_select_db('docs',$con);
    
    $result=mysql_query("SELECT * FROM livros");
    
    echo '<select name="idlivro">';
    while($linha=mysql_fetch_array($result)){
        echo '<option value="'.$linha["id"].'">'.$linha["titulo"].'</option>';
    }
    echo '</select>

Claro que na função não podia detectar que não tinham sido introduzido dados se estes tb não tinham sido
declarados na form, pois a tabela esta vazia quando quando se da o preenchimento do select :nocom8le: ,,,, Obrigado pelas dicas,,,
 
Back
Topo