necesito ayuda en serio

JUAN TRUJILLO
20 de Diciembre del 2005
amigos del foro
tengo varias bases de datos cargadas en sql, estas bases de datos tienen un campo codigo que es alfanumerico, hice una rutina htm que llama a una php y funciona mientras el codigo sea numerico si empieza con caracterme da el siguiente error ¨
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in E:hshomejuantrujradiadoresoriginales.comgm.php on line 40¨ el link de la rutina htm es http://www.radiadoresoriginales.com/gm.htm el codigo lo pueden ver desde el explorador y el codigo de la rutina php es la siguiente

<?
# recogemos en una variable el nombre de BASE DE DATOS

$base="xxxxxxxxxxxxxx";

# recogemos en una variable el nombre de la TABLA

$tabla="xxxxxxxxxxxxxxxx";


# establecemos la conexion con el servidor

$conexion=mysql_connect("xxxxxxxxxxxxxxxxxxxxx");

#asiganamos la conexión a una base de datos determinada

mysql_select_db($base,$conexion);

# establecemos el criterio de SELECCION
# en este caso los campos Contador, Nombre, Apellido1, Apellido2 unicamente
# añadimos un criterio de seleccion WHERE
# que como puedes ver es simple en este caso
# el resultado de esta consulta serán los registros en los que
# el campo Nombre contenga una S en la primera posicion

$resultado= mysql_query("SELECT codigo, descripcion, precio_venta FROM $tabla WHERE (codigo = $codigo) ",$conexion);


# CREAMOS UNA CABECERA DE UNA TABLA (codigo HTML)

echo "<table align=center border=2>";

# establecemos un bucle que recoge en un array
# cada una de las LINEAS DEL RESULTADO DE LA CONSULTA
# utilizamos en esta ocasión «mysql_fetch_row»
# en vez de «mysql_fetch_array» para EVITAR DUPLICADOS
# recuerda que esta ultima función devuelve un array escalar
# y otro asociativo con los resultados

while ($registro = mysql_fetch_row($resultado))
{

# insertamos un salto de línea en la tabla HTML

echo "<tr>";

# establecemos el bucle de lectura del ARRAY
# con los resultados de cada LINEA
# y encerramos cada valor en etiquetas <td></td>
# para que aparezcan en celdas distintas de la tabla

foreach($registro as $clave){
echo "<td>",$clave,"</td>";
}
}
echo "</table>";


# cerramos la conexion

mysql_close();

?>
los campos los he definido como varchar, char, tinytext, longtext,text etc etc etc etc y no funciona agradezco la ayuda que me puedan facilitar ya que
esto forma parte de un proyecto mas grande y esta tonteria me tiene detenido

saludos buena gente




Califa
20 de Diciembre del 2005
Hola, me parece que el problema está en la consulta:

$resultado= mysql_query("SELECT codigo, descripcion, precio_venta FROM $tabla WHERE (codigo = $codigo) ",$conexion);

Por lo que veo, la variable $codigo no está definida. Debería tener algún valor (¿probablemente un valor ingresado por un usuario a través de un formulario?). Además, si el campo es alfanumérico, debe ser un String (o cadena de texto). Entonces, la variable tendría que estar entre comillas (te conviene usar comillas simples; si usas dobles, tendrás que escaparlas con la barra invertida ).

Entonces, la consulta quedaría así (pero debes definir $codigo en algún lado):

$resultado= mysql_query("SELECT codigo, descripcion, precio_venta FROM $tabla WHERE codigo = '$codigo'",$conexion);

Adicionalmente, creo que hay otro problema en el loop while con el código HTML (faltan tags):

echo "<table align='center' border='2'>"; // escribe el tag que abre la tabla
while ($registro = mysql_fetch_row($resultado)) // por cada registro crea un array numérico de tres posiciones ([0]=codigo,[1]=descripcion,[2]=precio_venta) y lo guarda en la variable $registro
{
echo "<tr>"; // inicia una fila en la tabla html
foreach($registro as $clave) { // recorre cada una de las posiciones del array $registro
echo "<td>$clave</td>"; // imprime cada valor de la fila en una nueva celda en la tabla html
}
echo "</tr>"; // después de sacar los valores de cada registro, cierra la fila html
}
echo "</table>"; // cuando termina, cierra la tabla.

Espero que te sea de ayuda.

Suerte!

Califa