← PHP

Ajuda em PHP

Lida 5095 vezes

Offline

stén 
Membro
Mensagens 31 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Avatar

  Boa tarde! Estou a fazer um site para uma rádio online e um questionário de "Discos pedidos". O questionário é o seguinte:



Eu ao carregar em Submeter resultado, precisava de uma página PHP para tratar a informação mas eu não entendo nada da PHP. Só mesmo coisas básicas devido ao C.

A linha de código que coloquei é a seguinte:

<div class="block">
<div class="content"><form>
<table border="0" cellspacing="1" cellpadding="0">
<tbody>
<tr>
<td>Música Pretendida:</td>
<td><input id="cc_request_song" maxlength="127" name="request[song]" size="40" type="text" /></td>
</tr>
<tr>
<td>Dedicado para:</td>
<td><input id="cc_request_dedi" maxlength="127" name="request[dedication]" size="40" type="text" /></td>
</tr>
<tr>
<td>O teu nome:</td>
<td><input id="cc_request_sender" maxlength="127" name="request[sender]" size="40" type="text" /></td>
</tr>
<tr>
<td>O teu email:</td>
<td><input id="cc_request_email" maxlength="127" name="request[email]" size="40" type="text" /></td>
</tr>
<tr>
<td></td>
<td><input id="cc_request_button" onclick="cc_request_submit()" type="button" value="Submeter pedido de música" /></td>
</tr>
</tbody>
</table>
</form></div>
</div>


Alguém me ajuda nesta parte do site? É o que me falta :X

Obrigado!
Offline

Eduardo Santos 
Equipa
Mensagens 1097 Gostos 1
Feedback +4

Troféus totais: 29
Trófeus: (Ver todos)
Tenth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Sugestão: Não uses tabelas... :S
Offline

Bruno Mota 
Membro
Mensagens 1733 Gostos 3
Troféus totais: 28
Trófeus: (Ver todos)
Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3 Level 2 Level 1

Falta-te a parte do PHP por exemplo

$pedido=$_POST['request'];
$nome=$pedido['nome'];
Offline

stén 
Membro
Mensagens 31 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Avatar

Mas como isso funciona +/-?
Offline

stén 
Membro
Mensagens 31 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Avatar

Já encontrei uma pequena ajuda mas continua-me a dar um pequeno erro. Criei um "questionário" no site com a seguinte estrutura:

<form action="../discospedidos.php" method="post">

Música

<input name="music" type="text" />

Dedicatória

<input name="ddct" type="text" />

Nome

<input name="nome" type="text" />

Email:

<input name="email" type="text" />

<br />
<input type="submit" value="Submeter Pedido" />
<input type="reset" value="Limpar Dados" />

</form>&nbsp;

&nbsp;

Logo de seguida, criei uma base de dados chamadas "registo" e estabeleci a seguinte tabela:

CREATE TABLE discos (
codigo INT(20) NOT NULL AUTO_INCREMENT ,
music TEXT(100) NOT NULL ,
ddct TEXT(1000) NOT NULL ,
nome TEXT(100) NOT NULL ,
email TEXT(100) NOT NULL ,
PRIMARY KEY ( 'codigo')
)


Para estabelecer a ligação criei um ficheiro que se chama config.php e serve para estabelecer ligação entre a base de dados e o website e coloquei o seguinte:

<?php

$host = "localhost";
$user = "root";
$pass = "";
$database = "registo";
$a = mysql_connect($host, $user, $pass) or die(mysql_error());

@mysql_select_db($database, $a) or die("ERRO database");

?>

Para finalizar e guardar a tabela criei o ficheiro que liguei inicialmente ao questionário chamado discospedidos.php :

<?php

include ("config.php");

$music = $_POST['music'];
$ddct = $_POST['ddct'];
$nome = $_POST['nome'];
$email = $_POST['email'];

$x = mysql_query("INSERT INTO registo (music,ddct,nome,email) VALUES ('$music','$ddct','$nome','$email')");
if($x){
echo "Pedido efectuado com sucesso!";
}else{
echo "Pedido não foi enviado! Tente novamente";
}


?>


Mas continua-me a der um erro e diz-me sempre -> Pedido não foi enviado! Tente novamente


Notice: Undefined index: music in C:\xampp\htdocs\dance\discospedidos.php on line 5

Notice: Undefined index: ddct in C:\xampp\htdocs\dance\discospedidos.php on line 6

Notice: Undefined index: nome in C:\xampp\htdocs\dance\discospedidos.php on line 7

Notice: Undefined index: email in C:\xampp\htdocs\dance\discospedidos.php on line 8

Pedido não foi enviado! Tente novamente

------------------------------------------

Alguém me diz o que falta ou o que está mal?!

Obrigado,
Hugo

Offline

jof 
Membro
Mensagens 1117 Gostos 35
Feedback +45

Troféus totais: 34
Trófeus: (Ver todos)
Avatar Signature Tenth year Anniversary Level 6 Quick Poster Linux User Mobile User Windows User Super Combination Combination

Coloca a função mysql_error() na query à bd.

Vai à variavel X e coloca algo como or die(mysql_error()); e analisa o erro.

Entretanto assegura que:

$music = $_POST['music'];
$ddct = $_POST['ddct'];
$nome = $_POST['nome'];
$email = $_POST['email'];

no código html o campo "name" tem o mesmo nome do $_POST.
Offline

stén 
Membro
Mensagens 31 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Avatar

Já o fiz! E deu-me este erro:

Table 'registo.registo' doesn't exist
jof relativamente ao que disseste não entendo onde tenho de alterar. O post nao é o nome que atribuímos no html? em ambos os casos?
Offline

jof 
Membro
Mensagens 1117 Gostos 35
Feedback +45

Troféus totais: 34
Trófeus: (Ver todos)
Avatar Signature Tenth year Anniversary Level 6 Quick Poster Linux User Mobile User Windows User Super Combination Combination

A tabela chama-se REGISTO correcto? verifica se a query está com o nome correcto da tabela e se estás a seleccionar a base de dados correcta.

Verifica se a query está correctamente digitada no seguinte formato:

INSERT INTO table_name (coluna1, coluna2, coluna3) VALUES (variavel1, variavel2, variavel3)
Offline

stén 
Membro
Mensagens 31 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Avatar

Já o fiz e agora diz-me o seguinte:

Table 'registo.table_name' doesn't exist

Offline

jof 
Membro
Mensagens 1117 Gostos 35
Feedback +45

Troféus totais: 34
Trófeus: (Ver todos)
Avatar Signature Tenth year Anniversary Level 6 Quick Poster Linux User Mobile User Windows User Super Combination Combination

O INSERT INTO é na tabela e não na base de dados.

Se a tabela é discos e a base de dados é REGISTO, o insert into é em DISCOS!!!

INSERT INTO registo (music,ddct,nome,email) VALUES ('$music','$ddct','$nome','$email ERRO

INSERT INTO discos (music,ddct,nome,email) VALUES ('$music','$ddct','$nome','$email
Offline

stén 
Membro
Mensagens 31 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Avatar

Sim, realmente não tinha reparado :O
Agora só tenho mais uma questão. As informações que eles submeterem é guardada aonde? É que sou novo em php :S
Offline

jof 
Membro
Mensagens 1117 Gostos 35
Feedback +45

Troféus totais: 34
Trófeus: (Ver todos)
Avatar Signature Tenth year Anniversary Level 6 Quick Poster Linux User Mobile User Windows User Super Combination Combination

Pelo que percebi no código na tabela "DISCOS".
Offline

stén 
Membro
Mensagens 31 Gostos 0
Troféus totais: 16
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 10 Posts First Post Karma Avatar

Muito obrigado jof. Mesmo muito! Agradeço imenso ;)
Feedback positivo .

Mais uma vez obrigado,
Hugo
Offline

jof 
Membro
Mensagens 1117 Gostos 35
Feedback +45

Troféus totais: 34
Trófeus: (Ver todos)
Avatar Signature Tenth year Anniversary Level 6 Quick Poster Linux User Mobile User Windows User Super Combination Combination

Sem problema.
 :obrigado:
Offline

diogoosorio 
Membro
Mensagens 134 Gostos 1
Feedback +1

Troféus totais: 22
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Tem atenção que com o código que colocaste ai, qualquer gajo te injecta o que quer na base de dados.

Diverte-te: http://dev.mysql.com/tech-resources/articles/guide-to-php-security-ch3.pdf