joaocasta Posted July 31, 2012 at 09:22 PM Report #471149 Posted July 31, 2012 at 09:22 PM Boa noite, tenho aqui este codigo que tem um select option para gravar qual a categoria daquela reserva: <?php include "template.php"; ?> <div class="content-box"> <h1 align="center">Área das Reservas!</h1> </div><br> <?php $error = ""; $success = ""; if (!empty($_POST['reserva'])) { if (!$_POST['release'] || !$_POST['categoria']) { print "<div align='center'><h4>Tem de preencher todos os campos.</h4></div>"; exit; } if (empty($error )) { $release = mysql_real_escape_string($_POST['release']); $categoria = $_POST['categoria']; // escaping not needed when hashing. Should use a salt for md5 $id_utilizador = $_SESSION['id']; $data_reserva = date("d F Y"); if (empty($error)) { $registerquery = mysql_query("INSERT INTO reservas (release, id_categoria, id_utilizador, data_reserva) VALUES('".$release."', '".$categoria."', '".$id_utilizador."', '".$data_reserva."')"); if($registerquery) { $success .= "<div align='center'>A sua conta foi criada. Por favor <a href=\"login.php\">clique aqui para login</a>.</div>"; } else { $error .= "<div align='center'>Desculpe, o registo falhou. Por favor tente de novo.</div>"; } } } } ?> <div class="content-box"> <?php if (!empty($error)) { ?> <h1 align='center'>Erro</h1> <?php echo $error; ?> <?php }elseif (!empty($success)) { echo $success; }else { ?> <form method="post" action="reserva.php" name="reserva"> <table> <tr> <td> Release: </td> <td> <input name="release" type="text" class="input" size="25"/> </td> </tr> <tr><td><select name='categoria'> <?php $getips = mysql_query("SELECT * FROM categoria"); while($r = mysql_fetch_array($getips)) { echo "<option value='$r[nome_categoria]'>$r[nome_categoria]</option>"; } echo "</select></td></tr>"; ?> </table> <input type="submit" name="reserva" id="reserva" value="Enviar" /> </form></div></div> <?php } ?> </div> Na base de dados tenho isto: e queria que no select aparecesse tudo o que aparece no "nome_categoria", mas quero que seja inserido na outra tabela o id e nao o nome da categoria.... Espero por ajuda obrigado...
MoshMage Posted July 31, 2012 at 10:53 PM Report #471160 Posted July 31, 2012 at 10:53 PM (edited) Eu não testei o code, mas deve funcionar 🙂 $q = 'SELECT id, nome_categoria FROM categorias'; $result = mysql_query($q); echo '<select name=selector>'; $c=''; while ($row = mysql_fetch_array($result)) { echo '<option value="'.$row['id'].'">'.$row['nome_categoria'].'</option>' $c++; } if (empty($c)) echo '<option value=0>No Values</option>'; echo '</select>'; Edited August 2, 2012 at 09:54 AM by MoshMage If all Else fails, use Else If;
joaocasta Posted August 1, 2012 at 07:42 AM Author Report #471173 Posted August 1, 2012 at 07:42 AM Agora tenho algo assim: <?php include "template.php"; ?> <div class="content-box"> <h1 align="center">Área das Reservas!</h1> </div><br> <?php $error = ""; $success = ""; if (!empty($_POST['reserva'])) { if (!$_POST['release'] || !$_POST['selector']) { print "<div align='center'><h4>Tem de preencher todos os campos.</h4></div>"; exit; } if (empty($error )) { $release = mysql_real_escape_string($_POST['release']); $categoria = $_POST['selector']; // escaping not needed when hashing. Should use a salt for md5 $id_utilizador = $_SESSION['id']; $data_reserva = date("d F Y"); if (empty($error)) { $registerquery = mysql_query("INSERT INTO reservas (release, id_categoria, id_utilizador, data_reserva) VALUES('".$release."', '".$categoria."', '".$id_utilizador."', '".$data_reserva."')"); if($registerquery) { $success .= "<div align='center'>A sua conta foi criada. Por favor <a href=\"login.php\">clique aqui para login</a>.</div>"; } else { $error .= "<div align='center'>Desculpe, o registo falhou. Por favor tente de novo.</div>"; } } } } ?> <div class="content-box"> <?php if (!empty($error)) { ?> <h1 align='center'>Erro</h1> <?php echo $error; ?> <?php }elseif (!empty($success)) { echo $success; }else { ?> <form method="post" action="reserva.php" name="reserva"> <table> <tr> <td> Release: </td> <td> <input name="release" type="text" class="input" size="25"/> </td> </tr> <?php $q = 'SELECT id, nome_categoria FROM categoria'; $result = mysql_query($q); echo '<select name=selector[]>'; $c=''; while ($row = mysql_fetch_array($result)) { echo '<option value="'.$row['id'].'">'.$row['nome_categoria'].'</option>'; } if (empty($c)) echo '<option value=0>No Values</option>'; echo '</select>'; ?> </table> <input type="submit" name="reserva" id="reserva" value="Enviar" /> </form></div></div> <?php } ?> </div> mas diz-me sempre "ERRO Desculpe, o registo falhou. Por favor tente de novo."
HappyHippyHippo Posted August 1, 2012 at 07:59 AM Report #471175 Posted August 1, 2012 at 07:59 AM echo '<select name="selector">'; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
joaocasta Posted August 1, 2012 at 08:35 AM Author Report #471178 Posted August 1, 2012 at 08:35 AM Nao resolveu... Inseri isso que disseste e continua o mesmo erro
HappyHippyHippo Posted August 1, 2012 at 08:56 AM Report #471179 Posted August 1, 2012 at 08:56 AM nesse caso é necessário ver exatamente qual o erro : $error .= "<div align='center'>Desculpe, o registo falhou. Por favor tente de novo. (erro : ".mysql_error().")</div>"; IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
joaocasta Posted August 1, 2012 at 09:41 AM Author Report #471182 Posted August 1, 2012 at 09:41 AM (edited) Desculpe, o registo falhou. Por favor tente de novo. (erro : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'release, id_categoria, id_utilizador, data_reserva) VALUES('oaoaoaoa', '1', '44'' at line 1) EDIT: descobri o erro: $registerquery = mysql_query("INSERT INTO `reservas` (`release`, `id_categoria`, `id_utilizador`, `data_reserva`) VALUES('".$release."', '".$categoria."', '".$id_utilizador."', '".$data_reserva."')"); tinha de meter `` Edited August 1, 2012 at 09:45 AM by joaocasta
HappyHippyHippo Posted August 1, 2012 at 09:49 AM Report #471186 Posted August 1, 2012 at 09:49 AM vês como é fácil detectar um erro de SQL ... basta fazer output do comando e ler com bons olhos ... release é uma palavra reservada, logo para ser usada como nome de um campo é necessa´rio então adicionar os acentos graves IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
joaocasta Posted August 1, 2012 at 10:14 AM Author Report #471189 Posted August 1, 2012 at 10:14 AM ah ok, obrigado Hippo 😉
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