JoaoVM Posted August 6, 2013 at 04:33 PM Report #521001 Posted August 6, 2013 at 04:33 PM Boas pessoal, estava aqui a fazer a minha query para fazer um update a uma tabela mas esta a dar-me um erro..já pesquisei sobre o erro que me dá mas não percebi o porque isto acontecer na minha tabela. O erro que me dá é o seguinte: Citação Cannot add or update a child row: a foreign key constraint fails (`kpilinhas`, CONSTRAINT `flexibilidade_ibfk_11` FOREIGN KEY (`id_avaliacao`) REFERENCES `avaliacao` (`id_avaliacao`)) http://img850.imageshack.us/img850/7656/r9d3.png Podem ver as minhas tabelas que dizem respeito a este problema: http://img546.imageshack.us/img546/6797/psw.png if (isset($_POST['alter_aval'])){ $avaliacao = $_POST["alter_aval"]; } if (isset($_POST["alterar_avaliacao"])) { echo "passei aqui"; mysql_query("UPDATE `flexibilidade` SET `id_avaliacao`='$avaliacao' WHERE num_colab='890327' and id_linha='126' and id_posto='2937';") or die(mysql_error()); } echo "<form action='altera_avaliacao.php' name='alterar_avaliacao' id='alterar_avaliacao' method='POST'>"; //SELECIONAR AVALIAÇAO///////////////////////////////////////////////////////////////////////////////////////////////////////////////////// echo '<select id="alter_aval">'; $sql_alter_aval="SELECT id_avaliacao, avaliacao, descricao FROM avaliacao order by id_avaliacao asc"; $final_alter_aval = mysql_query($sql_alter_aval); echo "<option onclick='return false'>Selecione Avaliação</option>"; while($aval = mysql_fetch_array($final_alter_aval)) { echo '<option value="'. $aval['id_avaliacao'].'" id="alt_aval" name="alt_aval">'. $aval['id_avaliacao'] . " - " . $aval['avaliacao'] . " - " .$aval['descricao'].'</option>'; } echo '</select>'; echo "<input type='submit' id='alterar_avaliacao' name='alterar_avaliacao' value='Alterar'>"; echo "</form>"; Alguém me sabe ajudar?
taviroquai Posted August 6, 2013 at 06:06 PM Report #521008 Posted August 6, 2013 at 06:06 PM O erro de sql deve-se a atribuires um valor invalido ao campo id_avaliacao (chave externa). Por algum motivo o formulario nao passa os valores que esperas. Tens 2 elementos html com o mesmo id.
JoaoVM Posted August 6, 2013 at 07:09 PM Author Report #521011 Posted August 6, 2013 at 07:09 PM mesmo assim se alterar o id não funciona. já tinha tentado antes.. se inserir o valor na select e fizer um echo da variável ele devolve o valor do id_avaliacao. Porque é que o valor é invalido?quando executo apenas a consulta com os valores que quero ele funciona.
Rui Carlos Posted August 6, 2013 at 07:23 PM Report #521013 Posted August 6, 2013 at 07:23 PM Qual é a ideia de colocar uma mensagem de erro (texto) como imagem? E nem sequer colocas a imagem directamente no post... Rui Carlos Gonçalves
JoaoVM Posted August 6, 2013 at 10:44 PM Author Report #521031 Posted August 6, 2013 at 10:44 PM pensei que seria mais pratico..mas já altero..foi só tirar printscreen..
Rui Carlos Posted August 6, 2013 at 11:05 PM Report #521036 Posted August 6, 2013 at 11:05 PM O ideal era mesmo teres colocado o texto. Não faz qualquer sentido colocar mensagens de erro textuais como imagem. Quanto ao problema, a sugestão que te posso dar é imprimires a query e para a executares directamente no MySQL. Deve-te ajudar a isolar o problema. Mas isso aparenta ser um valor inválido da variável avaliacao. Rui Carlos Gonçalves
JoaoVM Posted August 6, 2013 at 11:07 PM Author Report #521037 Posted August 6, 2013 at 11:07 PM já o fiz..e quando executo a query no mysql ela funciona..e se fizer um echo da variável inserida ele devolve o valor correto, não sei o que se passa..
taviroquai Posted August 7, 2013 at 01:14 AM Report #521048 Posted August 7, 2013 at 01:14 AM Em vez de: mysql_query("UPDATE `flexibilidade` SET `id_avaliacao`='$avaliacao' WHERE num_colab='890327' and id_linha='126' and id_posto='2937';") or die(mysql_error()); Coloca isto e diz o que aparece: $sql = "UPDATE `flexibilidade` SET `id_avaliacao`='$avaliacao' WHERE num_colab='890327' and id_linha='126' and id_posto='2937';"; var_dump($sql); mysql_query($sql) or die(mysql_error());
JoaoVM Posted August 7, 2013 at 09:09 AM Author Report #521055 Posted August 7, 2013 at 09:09 AM Taviroquai, não acontece nada, ou melhor, não acontece nada de novo, na select insiro o valor..e com um echo ele mostra o valor da variável como acontecia antes..
taviroquai Posted August 7, 2013 at 07:30 PM Report #521142 Posted August 7, 2013 at 07:30 PM $sql = "UPDATE `flexibilidade` SET `id_avaliacao`='$avaliacao' WHERE num_colab='890327' and id_linha='126' and id_posto='2937';"; var_dump($sql); mysql_query($sql) or die(mysql_error()); Mostra aqui query SQL.
JoaoVM Posted August 7, 2013 at 10:31 PM Author Report #521158 Posted August 7, 2013 at 10:31 PM Este é o meu código no PHP: if (isset($_POST["alterar_avaliacao"])) { echo "passei aqui"; echo "<br>"; echo "$avaliacao"; $sql = "UPDATE `flexibilidade` SET `id_avaliacao`='$avaliacao' WHERE num_colab='890327' and id_linha='126' and id_posto='2937';"; echo "var_dump($sql)"; mysql_query($sql) or die(mysql_error()); } Este é o que coloco no mysql para testar, funciona na perfeição: UPDATE `flexibilidade` SET `id_avaliacao`=14 WHERE num_colab='890327' and id_linha='126' and id_posto='2937';
Rui Carlos Posted August 7, 2013 at 10:40 PM Report #521161 Posted August 7, 2013 at 10:40 PM Entre o código SQL e o PHP vejo pelo menos uma diferença com as plicas (que no SQL estão em falta). Rui Carlos Gonçalves
JoaoVM Posted August 7, 2013 at 10:47 PM Author Report #521164 Posted August 7, 2013 at 10:47 PM (edited) Como é obvio já experimentei dessa forma também..já experimentei de tantas formas que já me perdi...alias acabei de o fazer como disseste e não funcionou a mesma..tudo igual.. Edited August 7, 2013 at 10:48 PM by JoaoVM
Solution JoaoVM Posted August 8, 2013 at 01:50 PM Author Solution Report #521225 Posted August 8, 2013 at 01:50 PM (edited) Bem, já estava a ficar farto deste problema e comecei a fazer tudo de inicio e testar tudo ao pormenor.. cheguei aqui e funcionou. Obrigado Rui Carlos e Taviroquai 😉 Fica a solução: if (isset($_POST['avaliar'])){ $avaliacao = $_POST["avaliar"]; } if (isset($_POST["altera_avaliacao"])) { echo "passei aqui"; $sql = "UPDATE `flexibilidade` SET `id_avaliacao`=$avaliacao WHERE num_colab=890327 and id_linha=126 and id_posto=2937;"; mysql_query($sql) or die(mysql_error()); } echo "<form action='altera_avaliacao.php' id='alterar_avaliacao' name='alterar_avaliacao' method='POST'>"; echo "<select name='avaliar' id='avaliar'>"; $sql_alter_aval="SELECT id_avaliacao, avaliacao, descricao FROM avaliacao"; $final_alter_aval = mysql_query($sql_alter_aval); echo"<option onclick='return false'>Selecione Avaliação</option>"; while($aval = mysql_fetch_assoc($final_alter_aval)) { echo '<option value="'.$aval['id_avaliacao'].'">'.$aval['id_avaliacao'] . " - " . $aval['avaliacao'] . " - " .$aval['descricao'].'</option>'; } echo "<input type='submit' id='altera_avaliacao' name='altera_avaliacao' value='Alterar'>"; echo "</form>"; Agora e só alterar as variáveis e funciona. Edited August 8, 2013 at 01:50 PM by JoaoVM
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now