Ayuda con una consulta sql en PHP

Buenas, tengo una duda con una consulta SQL que tengo que realizar en PHP, el caso es que tengo una tabla así:

Pedido Producto Cantidad
9 A 1
10 A 1
10 B 2
11 A 1

El caso es que quiero recorrer la tabla y extraer las filas asociadas a un pedido de manera individual para trabajar con cada producto de forma independiente entonces en este caso si quiero extraer el pedido 10 tendría que sacar primero la fila:
10 A 1

y después la fila:

10 B 2

Había pensado en un bucle for en la web PHP que haga las consultas SQL pero luego me di cuenta de que no veo muy bien los parámetros de inicio y final, a ver si me podéis echar una ayuda.

:p
O no entiendo bien cual es la pregunta (y he leído 3 veces el post), o me da que no estás muy puesto en SQL / bases de datos relacionales. Esto no es un Excel o un Array en donde accedes a la fila tal, sacas los datos, y luego a la fila cual, etc. Si haces:

SELECT * FROM tabla WHERE Pedido=10

ya te devuelve las filas que te interesan, que en el ejemplo que has puestos son 2, pero si por ejemplo el pedido 10 tuviera 100 productos, pues te devolvería 100 filas. Vamos que para un sólo pedido no habría que estar haciendo varias consultas por muchos productos que el pedido tenga, tan sólo recorrer el resultado de la consulta de principio a fin.


EDITO: Por si acaso, creo que esto te vendrá bien:
http://www.sqlcourse.com/
xzibit escribió:O no entiendo bien cual es la pregunta (y he leído 3 veces el post), o me da que no estás muy puesto en SQL / bases de datos relacionales. Esto no es un Excel o un Array en donde accedes a la fila tal, sacas los datos, y luego a la fila cual, etc. Si haces:

SELECT * FROM tabla WHERE Pedido=10

ya te devuelve las filas que te interesan, que en el ejemplo que has puestos son 2, pero si por ejemplo el pedido 10 tuviera 100 productos, pues te devolvería 100 filas. Vamos que para un sólo pedido no habría que estar haciendo varias consultas por muchos productos que el pedido tenga, tan sólo recorrer el resultado de la consulta de principio a fin.


EDITO: Por si acaso, creo que esto te vendrá bien:
http://www.sqlcourse.com/


umm creo que no me he explicado bien.
Mi problema era saber el número de filas asociadas a un pedido para ir recorriéndolas, he pensado en un código así en PHP pero creo que así no estoy seguro de si me vale para ir tratando los datos de una fila y luego de otra y así.
$sql=mysql_query("SELECT *
         FROM tabla_pedidos
         WHERE (`pedido` = $pedido)"
         );
$resultado = mysql_fetch_assoc($sql);
$numerodefilas = mysql_num_rows($resultado);

if($numerodefilas ==0)
            echo "<center><i> - No se han encontrado resultados - </i></center>";
      else{
while($fila = mysql_fetch_row($resultado)){
              $i = 0;
              $filaextraida = $fila[i];
              //Hacer lo que tenga que hacer con cada fila
              $i = $i+1;
}
En principio te vale, pero hay fallos en el código:

  • mysql_query lo que te devuelve es un resultado
  • mysql_fetch_assoc no devuelve un resultado, devuelve una fila. Es prácticamente lo mismo que mysql_fetch_row salvo que en vez de hacer $fila[0] para acceder a la primera columna, haríamos un $fila["Pedido"], porque accedemos a cada columna por su nombre (array asociativo)
  • Si haces un mysql_num_rows sobre una fila => ERROR, hay que hacerlo sobre un resultado
  • Si haces un mysql_fetch_row sobre una fila => ERROR, hay que hacerlo sobre un resultado



PD: yo utilizaría la clase mysqli (es prácticamente lo mismo), ya que esas funciones están marcadas como "deprecated".
3 respuestas