Foros del Web » Programando para Internet » PHP »

error de sintaxis

Estas en el tema de error de sintaxis en el foro de PHP en Foros del Web. hola a todos, tengo el siguiente codigo, pero no me funciona: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <?php               ...
  #1 (permalink)  
Antiguo 17/11/2011, 11:04
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
error de sintaxis

hola a todos, tengo el siguiente codigo, pero no me funciona:

Código PHP:
Ver original
  1. <?php
  2.                      $sql ="SELECT MAX(id) FROM noticias ";
  3.                      $res = mysql_query($sql,$link);
  4.                      $mayor =  mysql_fetch_array($res);  
  5.                 ?>
  6.                
  7.                 <?php
  8.                     $sql2 = "SELECT MIN(id) FROM noticias";
  9.                     $r2 = mysql_query($sql2,$link);
  10.                     $menor = mysql_fetch_array($r2);
  11.                 ?>
  12.                     <script language="javascript">
  13.  
  14.                         function recargar(){   
  15.                             var rango_superior = <?php echo($mayor); ?>;  
  16.                             var rango_inferior = <?php echo($menor); ?>;  
  17.                             var variable_post= Math.floor(Math.random()*(rango_superior-(rango_inferior-1))) + rango_inferior;
  18.                             alert(variable_post);
  19.                             /*
  20.                             $.post("recuperarNoticias.php", { variable: variable_post }, function(data){
  21.                             $("#carganoticiasIzq").html(data);
  22.                             }); */     
  23.                         }
  24.                     </script>


mi problema es q no esta pasando bien el numero mayor aki

$mayor = mysql_fetch_array($res);

y lo mismo para el menor.

entonces cuando hago el alert con lo q deberia ser un numero aleatorio entre ambos valores me muestra esto:

NaNfunction Array() {
[native code]
}


alguien sabe donde esta el error o a q es debido esto

esq no se si esta linea esta bien:
$mayor = mysql_fetch_array($res);

aki $mayor contiene el numero mayor? o contiene un vector?

saludos
  #2 (permalink)  
Antiguo 17/11/2011, 11:10
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: error de sintaxis

mysql_fetch_array, siempre te va a devolver un array, por lo que tendrías que descargar el valor del array, o usar mysql_fetch_num para usar un indice numérico:
Código PHP:
Ver original
  1. $mayorArr = mysql_fetch_num($res);
  2. $mayor = $mayorArr[0];

Saludos.
  #3 (permalink)  
Antiguo 22/11/2011, 03:57
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: error de sintaxis

php no me reconoce la funcion mysql_fetch_num, no sera otra??
  #4 (permalink)  
Antiguo 22/11/2011, 04:45
 
Fecha de Ingreso: junio-2011
Mensajes: 68
Antigüedad: 12 años, 10 meses
Puntos: 4
Respuesta: error de sintaxis

Que yo sepa mysql_fetch_array devuelve un array....

Si hacer $mayor = mysql_fetch_array($res) estás igualando la variable mayor a un array.
Ahora para mostrar el numero mayor tienes que hacer $mayor['max'] aunque no se si te funcionara, yo le pondria un alias al max de esa select.
  #5 (permalink)  
Antiguo 22/11/2011, 05:09
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: error de sintaxis

Veamos

Código PHP:
 $sql ="SELECT MAX(id) FROM noticias ";
                     
$res mysql_query($sql,$link);
                     
$mayor =  mysql_fetch_array($res); 
Mysql_fetch_array por defecto, devuelve un array asociativo, y numérico. Es decir, te vendrá tanto [0] como ['MAX'].

Por tanto, podrías hacer algo así como:
Código PHP:
 $sql ="SELECT MAX(id) FROM noticias ";
                     
$res mysql_query($sql,$link);
                     
$mayorArr =  mysql_fetch_array($res);  
                     
$mayor $mayorArr[0]; 



GatorV probablemente se referia a mysql_fetch_row, que devuelve sólo los indices numéricos (tb en array), y por si quieres saberlo, mysql_fetch_assoc devuelve sólo los indices "asociativos" (q llevan el nombre del campo!).

Está todo aqui explicado http://es2.php.net/mysql_fetch_array

Es el segundo parametro de la función ;)

Un saludo!
__________________
>> Eleazan's Source
>> @Eleazan
  #6 (permalink)  
Antiguo 22/11/2011, 05:12
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: error de sintaxis

ya consegui q me funcionase, pero ahora el problema lo tengo en q al pasar ese nuemero a la BD no me devuelve el resultado
  #7 (permalink)  
Antiguo 22/11/2011, 05:13
 
Fecha de Ingreso: marzo-2011
Mensajes: 226
Antigüedad: 13 años, 1 mes
Puntos: 1
Respuesta: error de sintaxis

Código PHP:
Ver original
  1. if(!empty($id)){
  2.     while($acierto){
  3.         //echo("hola buvle while");
  4.         //exit;
  5.        
  6.         $sql = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  7.         $res = mysql_query($sql,$link);
  8.         if(mysql_num_rows($res) == 0){
  9.             echo("no hay consulta");
  10.             exit;
  11.             $id++;
  12.             $acierto = false;
  13.         }
  14.         else{
  15.             //echo($id);
  16.             //exit;
  17.            
  18.             $sql1 = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  19.             $r1 = mysql_query($sql1,$link);
  20.             $noticiaArr = mysql_fetch_array($r1);
  21.             $noticia = $noticiaArr[0];
  22.             echo($noticia);
  23.             $acierto = true;
  24.         }
  25.     }
  26. }
  27.  
  28. no se xq no me devuelve el resultado
  #8 (permalink)  
Antiguo 22/11/2011, 05:16
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: error de sintaxis

PD: Si haces esto, te ahorras una consulta ;)

Código PHP:
$sql ="SELECT MAX(id), MIN(id) FROM noticias ";
                     
$res mysql_query($sql,$link);
                     
$array =  mysql_fetch_num($res);  
                     
$mayor $array[0];
                     
$menor $array[1
Edit:

Cita:
Iniciado por viringas Ver Mensaje
Código PHP:
Ver original
  1. if(!empty($id)){
  2.     while($acierto){
  3.         //echo("hola buvle while");
  4.         //exit;
  5.        
  6.         $sql = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  7.         $res = mysql_query($sql,$link);
  8.         if(mysql_num_rows($res) == 0){
  9.             echo("no hay consulta");
  10.             exit;
  11.             $id++;
  12.             $acierto = false;
  13.         }
  14.         else{
  15.             //echo($id);
  16.             //exit;
  17.            
  18.             $sql1 = "SELECT titulo FROM noticias WHERE id ='".$id."'";
  19.             $r1 = mysql_query($sql1,$link);
  20.             $noticiaArr = mysql_fetch_array($r1);
  21.             $noticia = $noticiaArr[0];
  22.             echo($noticia);
  23.             $acierto = true;
  24.         }
  25.     }
  26. }
  27.  
  28. no se xq no me devuelve el resultado
¿Eso es el archivo 'recuperarNoticias.php' ?
¿De donde obtienes $id?
¿Q error da?

¿Q valor tiene $acierto antes de empezar el bucle? ;)
¿Pq haces un while cuando solo va a ser recorrido una vez?
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: html, mysql, sintaxis, sql, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:35.