question

Como corrigir o erro "undefined indice" em php?

Eu estou seguindo um tutorial de álbum de foto do usuário.
Para criar o álbum eu tenho este script.

createalbum.php

<?php?>

session_start ();

conectar $ = mysql_connect("localhost","root","")
ou morrer ("não poderia conectar...");
banco de dados //Connecting
mysql_select_db("MyDatabase")
ou morrer ("não poderia encontrar db");

$id = $ _ SESSION ['id'];

$albumname = $ _ post ['albumname'];
$albumdescription = $ _ post ['albumdescription'];

se ($albumdescription) {
$create = mysql_query ("INSERT INTO álbuns valores (', '$ id', '$ albumname', '$ albumdescription', '0',
'store/nocover.jpg') ");
eco "Álbum criado.";
}

se ($albumname) {
eco"
<table cellpadding='7' width='100%'>
<tr>
<td>
<font face='arial' size='2'>
Por favor, dê uma descrição ao álbum<b>
$albumname</b>

<form action='createalbum.php' method='POST'>
<textarea name='albumdescription'></textarea>
<input type='submit' name='submit' value='Create'>
<input type='hidden' name='albumname'>
valor = '$ albumname' >
</form>
</font>
</td>
</tr>
</table>
";
}

?>

Vem depois de entrar na página createalbum.php
o nome neste código em album.php

Criar um álbum

<form action='createalbum.php' method='POST'>
<input type='text' name='albumname' maxlength='20'><input type='submit' name='submit' value='Create'>
</form>

Agora quando eu digite o nome do álbum e clique em criar,
Eu tenho esse erro na página createalbum.php.

"Aviso: índice indefinido: albumdescription em
C:\wamp\www\post\createalbum.php on line 12"

Eu tentei repará-lo por "isset" ele não mostra o erro mas
também não tome a descrição do álbum.
Diga-me por favor como corrigi-lo?
resposta Resposta
OK, o problema é com este código aqui: $albumname = $ _ post ['albumname']; $albumdescription = $ _ post ['albumdescription'];

se ($albumdescription) {O problema é que você está tentando acessar e armazenar dados apresentados ($ _ post ['albumname'], $_POST['albumdescription']), independentemente de se ele é foi apresentado sob a forma ou não que é acionado, mesmo se você não estiver). Em seguida, você vagamente está tentando ver se $albumdescription - lê-lo literalmente - não é 0/falso/NULL antes da alimentação no banco de dados.

Do PHP basicamente tentando dizer-lhe que você está tentando acessar e usar algo que não existe (porque, mais uma vez, ele é não foram apresentado sob a forma ainda!).

Assim, dado que você é também usando esses dados como valores padrão em seu formulário, você pode tentar, em primeiro lugar, atribuindo valores padrão para $albumname e $albumdescription (ou seja, ') para certificar-se de que eles são capazes de ser usado em seu abaixo de forma independente e, em seguida, verificar se os dados do formulário da foi apresentados antes de configuração $albumname e $albumdescription para os dados de formulário enviado & inseri-los no banco de dados.

Há algumas maneiras que você pode fazer isto, mas uma solução poderia ser algo como isto (por favor, note que eu tentei mantê-lo como perto de sua lógica original como eu poderia, mas por favor, leia sobre os comentários): / / dar o álbum valores padrão nome & descrição pela primeira vez. $albumname = '; $albumdescription = ';

/ / Certifique-se de que eles existem antes de configurá-lo para evitar o aviso. se (isset($_POST['albumdescription'])) $albumdescription = $ _ post ['albumdescription']; se (isset($_POST['albumname'])) $albumname = $ _ post ['albumname'];

/ / Certifique-se de que a descrição do álbum nem nome estão vazios se (! empty($albumdescription) &&! empty($albumname)) {/ / NOTE: tenha cuidado com sua entrada aqui. / / Você vai querer certificar-se de que ele é validado antes de ir para impedir que qualquer coisa desagradável aconteça. / / MySQL suporta uma função genérica para isso; mysql_real_escape_string (), que é citado na fonte, no entanto, você ainda deve fazer com certeza entrada é apenas o que você quer que seja. $create = mysql_query ("INSERT INTO álbuns valores (', '$ id', '$ albumname','$ albumdescriptio… 'store/nocover.jpg') "); eco "Álbum criado."; } / / Você está verificando se o albumname é definida aqui, não tenho certeza se que tem de ser o caso (amostra não indicá-lo). Eu deixei aqui apenas no caso. se (! empty($albumname)) {eco "<table cellpadding='7' width='100%'> <tr> <td> <font face='arial' size='2'>Por favor, dê uma descrição para álbum <b>$albumname</b>

<form action='createalbum.php' method='POST'> <textarea name='albumdescription'></textarea> <input type='submit' name='submit' value='Create'> <input type='hidden' name='albumname' value='$albumname'> </form> </font> </td> </tr> </table>"; }

Boa sorte!

ComentáriosComentários
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta



Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved