gpt4 book ai didi

PHP/MYSQL : How to order a list of items clicking a link

转载 作者:行者123 更新时间:2023-11-29 08:17:53 25 4
gpt4 key购买 nike

我正在练习从 SQL 数据库获取产品列表(不使用对象)。我已经做对了,但现在我想添加根据用户在我放置在每个表标题旁边的微小向上和向下箭头中的点击以升序或降序排列结果的可能性。

这是我的原始代码:

<?php
@$link=mysqli_connect('127.0.0.1','root','','phpdb')
OR die('No se pudo conectar a la base');
$sql='SELECT p.cod_producto,
p.nombre,
p.precio,
p.stock,
p.cod_categoria,
c.descripcion,
p.cod_marca,
m.nombre_marca
FROM productos p JOIN categorias c, marcas m
WHERE p.cod_categoria=c.cod_categoria
AND p.cod_marca=m.cod_marca';

@$rs=mysqli_query($link,$sql)
OR die('No se puede ejecutar la consulta a la base');
?>

<table border='1'>
<tr>
<th>Cod. Producto</th>
<th>Nombre</th>
<th>Precio</th>
<th>Stock</th>
<th>Cod. Categoría</th>
<th>Descripción</th>
<th>Cod. Marca</th>
<th>Nombre Marca</th>
</tr>
<?php
$linea=1;

while($v=mysqli_fetch_assoc($rs)){
if($linea%2==1) $color='#ccccff';
else $color='#ffffff';
?>
<tr>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['cod_producto']; ?></td>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['nombre']; ?></td>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['precio']; ?></td>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['stock']; ?></td>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['cod_categoria']; ?></td>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['descripcion']; ?></td>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['cod_marca']; ?></td>
<td bgcolor="<?php echo $color; ?>"><?php echo $v['nombre_marca']; ?></td>
</tr>
<?php
$linea++;
}
?>
<tr>
<td colspan='<?php echo mysqli_num_fields($rs);?>' align="center">
Registros: <?php echo mysqli_num_rows($rs);?></td>
</tr>
<?php
mysqli_close($link);
?>
</table>

现在,为了做到这一点,我考虑使用 switch 语句,但这不起作用(我认为我应该使用 $_GET 或 $_POST,但不知道如何在这里使用它,我还认为我不应该再次复制整个查询...)我尝试了这个更改,但没有运气:

<?php
@$link=mysqli_connect('127.0.0.1','root','','phpdb')
OR die('No se pudo conectar a la base');

$sql='SELECT p.cod_producto,
p.nombre,
p.precio,
p.stock,
p.cod_categoria,
c.descripcion,
p.cod_marca,
m.nombre_marca
FROM productos p JOIN categorias c, marcas m
WHERE p.cod_categoria=c.cod_categoria
AND p.cod_marca=m.cod_marca';

switch ($sql) {
case 'codProdUp':
'SELECT p.cod_producto,
p.nombre,
p.precio,
p.stock,
p.cod_categoria,
c.descripcion,
p.cod_marca,
m.nombre_marca
FROM productos p JOIN categorias c, marcas m
WHERE p.cod_categoria=c.cod_categoria
AND p.cod_marca=m.cod_marca
ORDER BY p.cod_producto ASC ';
break;
case 'codProdDown':
'SELECT p.cod_producto,
p.nombre,
p.precio,
p.stock,
p.cod_categoria,
c.descripcion,
p.cod_marca,
m.nombre_marca
FROM productos p JOIN categorias c, marcas m
WHERE p.cod_categoria=c.cod_categoria
AND p.cod_marca=m.cod_marca
ORDER BY p.cod_producto DESC ';
break;
}

请注意,我已阅读 this solution建议使用 isset(),但不明白如何在这里复制它。我还认为使用 switch 会更容易......

最佳答案

现在这是您的基本查询

$sql='SELECT p.cod_producto,
p.nombre,
p.precio,
p.stock,
p.cod_categoria,
c.descripcion,
p.cod_marca,
m.nombre_marca
FROM productos p JOIN categorias c, marcas m
WHERE p.cod_categoria=c.cod_categoria
AND p.cod_marca=m.cod_marca ';

我们需要在 $sql 末尾有额外的空间,或者我们每次都需要把它放在那里。

现在,如果我们想添加 order by,我们可以将其添加到该字符串的末尾。所以:

$sql .= 'ORDER BY p.cod_producto ASC';

现在我们有多个排序依据条件,这样的东西可能会起作用

switch($_GET['sort']){
case "codProdUp":
$sql .= 'ORDER BY p.cod_producto ASC';
break;
case "codProdDown":
$sql .= 'ORDER BY p.cod_producto DESC';
break;
}

现在你的 $sql 将在末尾包含基本 + 条件 order by 。

现在,如果您查询 www.example.com/site.php?sort=codProdUp 或 www.example.com/site.php?sort=codProdDown,表格将以不同的顺序排序。

这个

$sql .= "ORDER BY"; 

相同
$sql = $sql . "ORDER BY";

关于PHP/MYSQL : How to order a list of items clicking a link,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20179215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com