Jump to content
Umbus

Pesquisas e inserts na base de dados

Recommended Posts

Umbus

Boas pessoal,

Eu costumo fazer apenas pesquisas e inserts na base de dados com apenas um valor referencia. Mas agora queria aprender a fazer com varias, ou seja tenho por exemplo o seguinte:

<form name=myform>
<select name=mytextarea size=3 multiple>
<option name=one value=one> one </option>
<option name=two value=two> two </option>
<option name=three value=three> three </option>
<option name=four value=four> four </option>
</select>
</form> 

E o utilizador escolhe o one, o two e o four.

Como coloco na base de dados?

Depois numa pesquisa eu quero todos os utilizadores que tenham o one e o four, como faço a pesquisa?


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
ivanling

Não sou grande expert mas cá vai.

$myformvalue = trim($_GET['myform']);


$mysql_query("INSERT INTO dbname.dbtable (`coluna1` , `coluna2`)	VALUES ('1', 'myfromvalue') ");

Corigam se estiver errado, mas ja fiz algo parecido que trabalhou.

Share this post


Link to post
Share on other sites
brunoais

^ Deixa 'tar q eu trato disso. O que respondeste é só para qd só se escolhe 1 de cda vez no option box. E o que se quer não é o myform. Esse nome não é enviado.

<form name=myform>
<select name=mytextarea size=3 multiple>
<option name=one value=one> one </option>
<option name=two value=two> two </option>
<option name=three value=three> three </option>
<option name=four value=four> four </option>
</select>
</form> 

1º. Por favor segue a especificação do HTML.

2º. Se o name do select for cmo eu demonstro a seguir ajuda depois a fazer esse trabalho

<form name="myform">
<select name="mytextarea[]" size=3 multiple="multiple" >
<option name="one" value="one">one</option>
<option name="two" value="two">two</option>
<option name="three" value="three">three</option>
<option name="four" value="four">four</option>
</select>
</form> 

Assim ele envia isto num array.

Depois, no PHP:

$sql = 'INSERT INTO something(val) VALUES  ';
foreach ($_GET['mytextarea'] AS $mytextarea){
    $sql .= " ( '$mytextarea' ) ";
}
mysql_query ($sql);


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Umbus

Não percebi muito bem como fizeste, mytextarea[] é para um array, o html tem arrays?

depois no php, nao percebi o porquê do foreach. Eu quero usar num post ou seja:

$form = $_POST['mytextare']

$mysql_query("INSERT INTOtabela (FORM , TABELA2)  VALUES ('$form', 'teste') ");


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
socopo

Não percebi muito bem como fizeste, mytextarea[] é para um array, o html tem arrays?

depois no php, nao percebi o porquê do foreach. Eu quero usar num post ou seja:

$form = $_POST['mytextare']

$mysql_query("INSERT INTOtabela (FORM , TABELA2)  VALUES ('$form', 'teste') ");

Boas, sim, ao declarar como mytextarea[] o Post ou Get será feito em array sendo mytextarea[0] = "one" e por aí fora...

o foreach é basicamente um for em que vai do primeiro elemento do array até ao ultimo passando os elementos para a variável $mytextarea neste exemplo do brunoais.

Agora não sei se isto te ajuda porque ainda não percebi ao certo a estrutura da tabela onde queres inserir os valores.

Share this post


Link to post
Share on other sites
brunoais

Não percebi muito bem como fizeste, mytextarea[] é para um array, o html tem arrays?

Não é para ser mostrado a utilziador um array. É uma instrução ao browser q, qd o form for submetido, aquela informação daquele select é enviado cmo array

depois no php, nao percebi o porquê do foreach.

Simples. Pode haver várias opções escolhidas, certo? Aí tens a razão.

Cada iteração trata de uma resposta.

Eu quero usar num post ou seja:

$form = $_POST['mytextare']

$mysql_query("INSERT INTOtabela (FORM , TABELA2)  VALUES ('$form', 'teste') ");

Então vais ter que desistir da selecção multipla ou então tratares disso de outra maneira.

Como é que queres que a string que metes na base de dados fique formatada?

E tb n percebo o pq é q fazes

$form = $_POST['mytextare']

. É inútil. Só serve para ocupar espaço e processamento.

"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Umbus

Ou seja se eu nao quizer fazer isto com gets, mas sim com post. Como faço?

Se em vez de apenas something(val) tiver something(val, val2) Como faco isto com o foreach no meio?

Peço desculpa pelas perguntas noobs, mas nunca fiz nada parecido a isto :S


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
brunoais

Ou seja se eu nao quizer fazer isto com gets, mas sim com post. Como faço?

Se em vez de apenas something(val) tiver something(val, val2) Como faco isto com o foreach no meio?

Peço desculpa pelas perguntas noobs, mas nunca fiz nada parecido a isto :S

Para a parte q percebi:

A maneira de trabalhar com o $_GET é igual à maneira de trabalhar com o $_POST.

Não percebi o resto que escreveste.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Umbus

O que quero é o seguinte numa tabela "something", tenho os seguintes atributos:

ID | val | ola | mundo

Depois tenho um formulario com um input para o ola e o mundo, e um selectbox multiple para o val, eu quero que por exemplo no ID 1 apareca todos os valores da selectbox escolhidos no atributo val. Para postriormente voltar a velos e pesquisa-los.

Assim quero:

$sql = 'INSERT INTO something(val, ola, mundo) VALUES  ';

foreach ($_POST['mytextarea'] AS $mytextarea){

    $sql .= " ( '$mytextarea' ) ";

}

mysql_query ($sql);

Mas com o foreach ele vai inserir tudo no val no mesmo ID? Se sim depois como faço para colocar os restantes atributos ola e mundo (ou seja o $_POST['ola'] e o $_POST['mundo'])?


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
brunoais

Isso é muito má ideia para option boxes. Nunca sabes quantas opções irão ser escolhidas. Mesmo que o tamanho seja 3 ele pode escolher mais ou pode enviar mais do que querias.

De qualquer modo:

$sql = 'INSERT INTO something (val, ola, mundo) VALUES  (';
foreach ($_GET['mytextarea'] AS $mytextarea){
    $sql .= "  '$mytextarea',";
}
mysql_query (substr($sql, 0, -1). ') ' );


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Umbus

Então como fazias o seguinte:

Por exemplo num registo tens o seguinte:

Nick:

email:

Password:

Repetir Password:

Cursos: (informática, gestão, medicina)

área: (informática -> eng. informática, eng. telecomunicações e informática | gestão -> gestão de empresas, gestão de hotelaria|medicina -> medico, enfermeiro, fisioterapeuta)

sub-area: (fisioterapeuta -> reabilitação, pediatria)

Imaginando que Nick, email, Password e Repetir Password, são inputs.

E imaginando que cursos, area e sub-area são select box com multipla resposta.

É que o que quero e exactamente isto mas não estou a perceber como faço algo deste genero. Ainda por cima as sub-areas so aparecem com as area e as areas com os cursos :S


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
Umbus

Exactamente é exactamente isso ;). O meu problema é como o faço, tanto para inserir como para fazer uma pesquisa de por exemplo um ou dois elementos nessa tabela.


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
brunoais

Exactamente é exactamente isso ;). O meu problema é como o faço, tanto para inserir como para fazer uma pesquisa de por exemplo um ou dois elementos nessa tabela.

Fazer o select tens aí explicado.

http://dev.mysql.com/tech-resources/articles/mysql-set-datatype.html

Depois no PHP:

explode (',', $resultadoDaQuery);


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
Umbus

Ali nao diz como passo de um multiple select box para a base de dados, aquilo ja vem com virgulas quando colocamos o $_POST na base de dados?

Mas para procurar apenas um ou dois dados na base de dados, onde no codigo é WHERE ola = 'xxx' como faço?


Eu sou eu e eu sou aquele que sou eu...

Share this post


Link to post
Share on other sites
brunoais

Tenta:

implode(',' , $_POST['mytextarea']);


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

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.