• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

diokhan

SELECT php

32 mensagens neste tópico

boas,

agora a minha duvida é, eu consigo gerar automaticamente varias "input type=text", mas preciso de tambem criar dinamicamente as SELECT BOX, tenho uma funçao feita em pdo que gera a SELECT e preenche as OPTIONS com os dados da tabela. mas nao sei como interligar uma coisa e outra. alguem pode ajudar-me? aqui fica a funçao que tenha feita:

function GetClient()
	{
		$sql = "SELECT ID_CLIENT, NAME_CLIENT FROM client ORDER BY ID_CLIENT ASC";
    		$stmt = $this->dbh->prepare($sql);
    		$stmt->execute();
	    
    		$res = $stmt->fetchAll(PDO::FETCH_ASSOC);
    		$clients = array();
    		foreach( $res as $client )
	    {
	        $clients[$client['ID_PROJECT']] = $client['NAME_PROJECT'];
	    }
	    return $clients;
	    
	   echo '<select name="IdClient" size="50">';
		foreach($clients as $row)
		{
			echo '<option value="'.$row['ID_CLIENT'].'"';
			echo '>'.$row['NAME_CLIENT'].'</option>';
	   	}
		echo '</select>';	
	}

desculpa a pergunta, mas é possivel fazer uma query dentro do javascript?

APARTE: Usa o Geshi, torna o post mais legível. :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

desculpa a pergunta, mas é possivel fazer uma query dentro do javascript?

Não, só com PHP. Podes usar AJAX pelo meio para não teres de recarregar a página.

Quanto à tua outra dúvida, não percebi o que queres. Queres, ao carregar a página, através de PHP, criares inputs dinamicamente?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pelo que eu percebi o que o meu chefe disse, preciso criar uma pagina onde ao criar um novo projecto tenha 2 botoes, o SAVE PROJECT e o NEW TASK. ao clicar no save project grava a informaçao que aparece e vai po index, se clicar no new task, o projecto e gravado mas aparece outro menu para introduzir outra tarefa, basicamente, no inicio temos um form do projecto e um form de tarefa, ao clicar no new task os dados que estava na form da task desaparecem e dao lugar a outra tarefa, mas os dados que esta na form do projecto mantenhem-se e ja estao gravados na base de dados, porque sao tabelas diferentes, tanto a dos projectos como as das tarefas. espero ter-me feito perceber. aquilo é por dias, hoje querem assim amanha ja querem tudo diferente, ja nem eu percebo bem

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quanto a isso o meu chefe nao me disse nada. sou livre de fazer o que quiser desde que o resultado final seja o que ele quer, ele nao se importa como faço desde que funcione. eu inda nao pensei muito bem no assunto, porque ele disse-me isto faltava 5min para sair por isso nao pensei nisso, mas agora a noite vou tirar um tempo para pensar um pouco tambem :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sempre que ele clica no botão New Task, ele deve submeter o formulário para uma página PHP que trata os dados. Neste caso insere os dados da tarefa que lá estão, suponho que seja isso que queiras, e depois redirecciona para outra página que mostre de novo o formulário, pronto para uma nova tarefa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

exatamente..ao inicio tenho como inserir um novo projecto e uma nova tarefa, depois de clicar no save task ele guarda na base de dados a informaçao que la tinha e volta a dar-me o formulario da nova tarefa para inserir mais uma tarefa. ate que o utilizador insira as tarefas necessarias, que podem ser uma duas ou mais. mas isso como vai usar smp a mesma pagina e sempre a mesma query para guardar nao ha crise.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu pensei numa soluçao,

<?php 
if(isset($_POST["saveproject"]))
{
	header('Location: new/insertProject.php');
}
if(isset($_POST["addtask"]))
{
	header('Location: new/insertProject2.php');
}
?>
<form name=project action='#' method=POST>
...
<input type='submit' src='images/user.png' alt='New Project' name='saveproject' border='0' id='Submit_btn' value='Save Project'>
    <input type='submit' src='images/user.png' alt='Add Task' name='addtask' border='0' id='Submit_btn' value='Add Task'>

ja funciona melhor, mas nao esta a passar as variaveis para o outro lado  :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas....

Na realidade isso vai envolver javascript...

<form name="project" id="frmProject" action="" method="POST">
<!-- AQUI TENS OS OUTROS CAMPOS TODOS -->
<input type='button' onclick="this.form.action = 'new/insertProject.php'; this.form.submit();" src='images/user.png' alt='New Project' name='saveproject' border='0' id='Submit_btn' value='Save Project' />
<input type='button' onclick="this.form.action = 'new/insertProject2.php'; this.form.submit();" src='images/user.png' alt='Add Task' name='addtask' border='0' id='Submit_btn' value='Add Task'>

Assim ele passa-te os valores do form :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas,

e que codigo seria este javascript? se puderes dar umas indicaçoes eu agradecia imenso :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O código javascript já está no exemplo que dei antes... Repara no evento 'onclick' de cada botão... :) Ele assim, dependendo do botao que clicares, muda a action do form e faz post para lá (presumo que as 'variáveis' que falaste constam no formulário, certo?)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim..estao dentro dos formularios as variaveis..o problema é que sempre que ia guardar na tabela guardava tudo em branco, parece que as variaveis nao estavao a passar..mas vou tentar a tua dica e ja digo algo :)

esta a funcionar..obrigado :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas,

surgiu-me um problema neste sistema. a primeira vez que corre a pagina grava na base de dados tudo muito bem, na segunda vez quando vou inserir outra tarefa referente ao mesmo projecto já nem um botão funciona nem outro. deixo aqui o meu código para caso alguém queira ver para ser mais fácil ajudar-me:

<script language="JavaScript">

if(isset($_POST["saveproject"]))
{
	header('Location: new/insertProject.php');
}
if(isset($_POST["addtask"]))
{
	header('Location: new/insertProject2.php');
}
</script>
<?php 

require_once ('../Project Manager/functions.php');

$projects = new Project;
$projects->GetProjectById($_GET['id']);
$nameproject = $projects->GetNameProject();
$description = $projects->GetDescription();
$idplate = $projects->GetIdPlate();
echo"
	<form name='project' id='frmProject' action='' method='POST'>
		<h4>Project:</h4>
			<div id='maintask' style='border-width:1px; border-style:solid; border-color:grey'>
				Name Project:<span style='padding-left: 10px'><input type='text' name='nameProject' size='100' value='$nameproject' readonly='readonly'></span><br>
			    Description:<span style='padding-left: 24px'><textarea name='description' cols='75' rows='5' value='$description' readonly='readonly'></textarea></span><br>
			    ID Plate:<span style='padding-left: 49px'><input type='text' name='idPlate' size='100' value='$idplate' readonly='readonly'></span><br><br>
    			</div>";

echo"
    	<hr>
    	<h5>Task:</h5>
    		<div id='maintask' style='border-width:1px; border-style:solid; border-color:grey'>
		    	Client Name:<span style='padding-left: 44px'>";

						$clients = $projects->GetClient();
			    		echo'<select name="idClient">';
							foreach($clients as $key=>$value)
							{
								echo '<option value="'.$key.'">'.$value.'</option>';
		   					}		
						echo '</select>';

				echo" </span><br>
		    	Task Name:<span style='padding-left: 50px'><input type='text' name='taskname' size='95'></span><br>
		    	Description:<span style='padding-left: 48px'><textarea name='description2' cols='72' rows='5'></textarea></span><br>
		    	Plate Number:<span style='padding-left: 34px'><input type='text' name='platenumber' size='95'></span><br>
		    	Task Reference:<span style='padding-left: 20px'><input type='text' name='reftask' size='95'></span><br>
    		</div>
    	<hr>
	    <center>
		    <input type='button' onclick='this.form.action='new/insertProject.php'; this.form.submit();' alt='New Project' name='saveproject' id='Submit_btn' value='Save Project' />
			<input type='button' onclick='this.form.action='new/insertProject2.php'; this.form.submit();' alt='Add Task' name='addtask' id='Submit_btn' value='Add Task' />
		</center>
	</form>";
?>

pode parecer meio confuso o código :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

soluçao encontrada. troquei todo o meu codigo. estava tudo em php dentro de echo e assim, coloquei tudo em html e so usei o php onde era necessario, ficou a funcionar 5* :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas, para nao abrir um novo topico pensei que era melhor manter neste.

eu tenho uma SELECT e quero guardar numa variavel a opçao, eu vou colocar aqui o codigo para explicar melhor a ideia:

<SELECT name=lst_client>
        	<option value=NAME_CLIENT>Client Name</option>
        	<option value=ADDRESS>Address</option>
        	<option value=CITY>City</option>
        	<option value=INSTITUTION>Institution</option>
        </SELECT>

e tenho em baixo:

if (isset($_POST['consulta'])) 
        {
        	echo 'Searching for:<strong> '.$consulta. '</strong> in:<strong> '.$lst_client.'</strong>';
        }

mas gostaria que na variavel $lst_client nao fosse o valor da OPTION mas sim o valor que é apresentado na SELECT, o valor que o utilizador ve. Tenho de colocar um name na OPTION? :hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ora bem, tu é que controlas o que vai em Value certo? Se quiseres, metes o texto da option no value :D

A não ser que queiras que ambos os valores passem... Aí deves considerar passar o texto da select como hidden, através de javascript:

<input id="opcao_texto" name="opcao_texto" type="hidden" value="" />
<select onchange="document.getElementById('opcao_texto').value = this.options[this.selectedIndex].text;">
(...)
</select>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya sou eu que controlo o valor da VALUE, e por acaso depois da tua resposta sinto-me parvo, que ao pensar bem na pergunta vejo que nao havia necessidade de tal pergunta :wallbash:

mas obrigado a mesma :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

por acaso ja percebi o porque da minha pergunta :D

tipo..o value eu nao posso mudar..porque quando faço a pesquisa uso o VALUE para indicar o campo da tabela onde pesquisar..agora que lembrei disso porque dava-me erros quando mudei os valores

eu deixo aqui a parte do codigo que interessa:

<form method="POST" action="restrito.php?opcao=admin&op=users">
      <fieldset>
        Search:
        <input type="text" id="consulta" name="consulta" maxlength="100" />
         <SELECT name="lst_user">
        	<option value="NAME">Name</option>
        	<option value="USER">Username</option>
        	<option value="EMAIL">E-Mail</option>
       		</SELECT>
		<input type="submit" value="Search" />
		<br><br>';
			if (isset($_POST['consulta'])) 
			{
				echo 'Searching for:<strong> '.$consulta. '</strong> in:<strong> '.$lst_user.'</strong>';
			}
		echo' </fieldset>

....


if (!isset($_POST['consulta'])) {
		$paginacao->sql = "SELECT * FROM user ORDER BY ID_USER ASC";
	}
	else{
		$paginacao->sql = "SELECT * FROM user WHERE ".$_POST['lst_user']."
									LIKE '%".$_POST['consulta']."%' ORDER BY ID_USER ASC";
	}

eu so quero o valor que é apresentado ao utilizador na SELECT para escrever a frase:

if (isset($_POST['consulta'])) 
{
	echo 'Searching for:<strong> '.$consulta. '</strong> in:<strong> '.$lst_user.'</strong>';
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

crias um "alias"


$alias = array(
                'NAME_CLIENT' => 'Client Name',
                'ADDRESS' => 'Address',
                'CITY' => 'City',
                'INSTITUTION' => 'Institution'
};

// depois é só ...

$lst_client = $alias[$_POST['lst_client']];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

crias um "alias"


$alias = array(
                'NAME_CLIENT' => 'Client Name',
                'ADDRESS' => 'Address',
                'CITY' => 'City',
                'INSTITUTION' => 'Institution'
};

// depois é só ...

$lst_client = $alias[$_POST['lst_client']];

e como isso funciona? troco a select pelo alias?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

isso troca o valor que vem da select pelo que queres (conteudo visivel da select)

0

Partilhar esta mensagem


Link 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