Ayuda con combobox en PHP
De nuevo molestándote.
Estaba haciendo el típico juego de combobox (3) que al seleccionar un valor del primero, el segundo muestra opciones relacionadas al primero, y al seleccionar un valor del segundo, el tercero muestra opciones relacionadas al segundo. El típico: provincia, canton, distrito (en mi país).
Lo estoy haciendo con dreamweaver y me encontré un código que funciona con dos combobox pero al hacerlo con tres me da un error de sintaxis en SQL que no sé qué es.
Este el código con dos combobox:
<?php require_once('Connections/retc.php'); ?>
<?
mysql_select_db($database_retc, $retc);
$query_provincias = "SELECT * FROM provincias";
$provincias = mysql_query($query_provincias, $retc) or die(mysql_error());
$row_provincias = mysql_fetch_assoc($provincias);
$totalRows_provincias = mysql_num_rows($provincias);
$colname_provincia = "-1";
if (isset($_POST['id_provincia'])) {
$colname_provincia = (get_magic_quotes_gpc()) ? $_POST['id_provincia'] : addslashes($_POST['id_provincia']);
}
mysql_select_db($database_retc, $retc);
$query_cantones = sprintf("SELECT id_canton, canton FROM cantones WHERE id_provincia = %s", $colname_provincia);
$cantones = mysql_query($query_cantones, $retc) or die(mysql_error());
$row_cantones = mysql_fetch_assoc($cantones);
$totalRows_cantones = mysql_num_rows($cantones);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<p>
<select name="id_provincia" id="id_provincia" onChange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['id_provincia']))) {echo "selected=\"selected\"";} ?>>-Provincia-</option>
<?php
do {
?><option value="<?php echo $row_provincias['id_provincia']?>"<?php if (!(strcmp($row_provincias['id_provincia'], $_POST['id_provincia']))) {echo "selected=\"selected\"";} ?>><?php echo $row_provincias['provincia']?></option>
<?php
} while ($row_provincias = mysql_fetch_assoc($provincias));
$rows = mysql_num_rows($provincias);
if($rows > 0) {
mysql_data_seek($provincias, 0);
$row_provincias = mysql_fetch_assoc($provincias);
}
?>
</select>
</p>
<p>
<select name="id_canton" id="id_canton" onchange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['id_canton']))) {echo "selected=\"selected\"";} ?>>-Cantón-</option>
<?php
do {
?><option value="<?php echo $row_cantones['id_canton']?>"<?php if (!(strcmp($row_cantones['id_canton'], $_POST['id_canton']))) {echo "selected=\"selected\"";} ?>><?php echo $row_cantones['canton']?></option>
<?php
} while ($row_cantones = mysql_fetch_assoc($cantones));
$rows = mysql_num_rows($cantones);
if($rows > 0) {
mysql_data_seek($cantones, 0);
$row_cantones = mysql_fetch_assoc($cantones);
}
?>
</select>
</p>
</form>
</body>
</html>
<?php
mysql_free_result($provincias);
mysql_free_result($cantones);
?>
Al hacerlo con tres le agrego en la primera sección esto:
$colname_canton = "-1";
if (isset($_POST['id_canton'])) {
$colname_canton = $_POST['id_canton'];
}
mysql_select_db($database_retc, $retc);
$query_distritos = sprintf("SELECT id_distrito, distrito FROM distritos WHERE id_canton = %s", $colname_canton);
$distritos = mysql_query($query_distritos, $retc) or die(mysql_error());
$row_distritos = mysql_fetch_assoc($distritos);
$totalRows_distritos = mysql_num_rows($distritos);
Y en el formulario el otro combobox:
<p>
<select name="id_distrito" id="id_distrito" onchange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['id_distrito']))) {echo "selected=\"selected\"";} ?>>-Distrito-</option>
<?php
do {
?><option value="<?php echo $row_distritos['id_distrito']?>"<?php if (!(strcmp($row_distritos['id_distrito'], $_POST['id_distrito']))) {echo "selected=\"selected\"";} ?>><?php echo $row_distritos['distrito']?></option>
<?php
} while ($row_distritos = mysql_fetch_assoc($distritos));
$rows = mysql_num_rows($distritos);
if($rows > 0) {
mysql_data_seek($distritos, 0);
$row_distritos = mysql_fetch_assoc($distritos);
}
?>
</select>
</p>
Si lo ejecuto con dos combobox funciona, pero al agregarle el tercero me da esto:
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 '' at line 1
En realidad estoy iniciando con PHP y no se por dónde anda el error. A ver si me puedes ayudar.
Estaba haciendo el típico juego de combobox (3) que al seleccionar un valor del primero, el segundo muestra opciones relacionadas al primero, y al seleccionar un valor del segundo, el tercero muestra opciones relacionadas al segundo. El típico: provincia, canton, distrito (en mi país).
Lo estoy haciendo con dreamweaver y me encontré un código que funciona con dos combobox pero al hacerlo con tres me da un error de sintaxis en SQL que no sé qué es.
Este el código con dos combobox:
<?php require_once('Connections/retc.php'); ?>
<?
mysql_select_db($database_retc, $retc);
$query_provincias = "SELECT * FROM provincias";
$provincias = mysql_query($query_provincias, $retc) or die(mysql_error());
$row_provincias = mysql_fetch_assoc($provincias);
$totalRows_provincias = mysql_num_rows($provincias);
$colname_provincia = "-1";
if (isset($_POST['id_provincia'])) {
$colname_provincia = (get_magic_quotes_gpc()) ? $_POST['id_provincia'] : addslashes($_POST['id_provincia']);
}
mysql_select_db($database_retc, $retc);
$query_cantones = sprintf("SELECT id_canton, canton FROM cantones WHERE id_provincia = %s", $colname_provincia);
$cantones = mysql_query($query_cantones, $retc) or die(mysql_error());
$row_cantones = mysql_fetch_assoc($cantones);
$totalRows_cantones = mysql_num_rows($cantones);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin título</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<p>
<select name="id_provincia" id="id_provincia" onChange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['id_provincia']))) {echo "selected=\"selected\"";} ?>>-Provincia-</option>
<?php
do {
?><option value="<?php echo $row_provincias['id_provincia']?>"<?php if (!(strcmp($row_provincias['id_provincia'], $_POST['id_provincia']))) {echo "selected=\"selected\"";} ?>><?php echo $row_provincias['provincia']?></option>
<?php
} while ($row_provincias = mysql_fetch_assoc($provincias));
$rows = mysql_num_rows($provincias);
if($rows > 0) {
mysql_data_seek($provincias, 0);
$row_provincias = mysql_fetch_assoc($provincias);
}
?>
</select>
</p>
<p>
<select name="id_canton" id="id_canton" onchange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['id_canton']))) {echo "selected=\"selected\"";} ?>>-Cantón-</option>
<?php
do {
?><option value="<?php echo $row_cantones['id_canton']?>"<?php if (!(strcmp($row_cantones['id_canton'], $_POST['id_canton']))) {echo "selected=\"selected\"";} ?>><?php echo $row_cantones['canton']?></option>
<?php
} while ($row_cantones = mysql_fetch_assoc($cantones));
$rows = mysql_num_rows($cantones);
if($rows > 0) {
mysql_data_seek($cantones, 0);
$row_cantones = mysql_fetch_assoc($cantones);
}
?>
</select>
</p>
</form>
</body>
</html>
<?php
mysql_free_result($provincias);
mysql_free_result($cantones);
?>
Al hacerlo con tres le agrego en la primera sección esto:
$colname_canton = "-1";
if (isset($_POST['id_canton'])) {
$colname_canton = $_POST['id_canton'];
}
mysql_select_db($database_retc, $retc);
$query_distritos = sprintf("SELECT id_distrito, distrito FROM distritos WHERE id_canton = %s", $colname_canton);
$distritos = mysql_query($query_distritos, $retc) or die(mysql_error());
$row_distritos = mysql_fetch_assoc($distritos);
$totalRows_distritos = mysql_num_rows($distritos);
Y en el formulario el otro combobox:
<p>
<select name="id_distrito" id="id_distrito" onchange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['id_distrito']))) {echo "selected=\"selected\"";} ?>>-Distrito-</option>
<?php
do {
?><option value="<?php echo $row_distritos['id_distrito']?>"<?php if (!(strcmp($row_distritos['id_distrito'], $_POST['id_distrito']))) {echo "selected=\"selected\"";} ?>><?php echo $row_distritos['distrito']?></option>
<?php
} while ($row_distritos = mysql_fetch_assoc($distritos));
$rows = mysql_num_rows($distritos);
if($rows > 0) {
mysql_data_seek($distritos, 0);
$row_distritos = mysql_fetch_assoc($distritos);
}
?>
</select>
</p>
Si lo ejecuto con dos combobox funciona, pero al agregarle el tercero me da esto:
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 '' at line 1
En realidad estoy iniciando con PHP y no se por dónde anda el error. A ver si me puedes ayudar.
2 Respuestas
Respuesta de ditman
1
Respuesta de Jorge Vila
1