Tengo problemas al crear la web de la empresa. Estoy trabajando en PHP, mysql y Dreamweaver.

Error al cargar una página en php
Buenas noches.
Estoy trabajando php, mysql y dreamweaver. Cree una página en la empresa y todo me funciona bien, pero copie en mysql la carpeta c:mysqldata y en Apache la carpeta C:Archivos de programaApache GroupApachehtdoc en un cdy los copie a mi pc en la casa y cuando trato de hacer pruebas me sale los siguiente errores:
Notice: Undefined index: 5 in
1)
c:Archivos de programaapache groupapachehtdocssistemas_ventasconectar.php on line 105
2)Parse error: parse error, expecting `'('' in c:archivos de programaapache groupapachehtdocssistemas_ventasdetalle.php on line 56
Alguien me puede ayudar a solucionar este inconeniente. Y a que se debe cada error.
Ojala de una manera muy explicada ya que soy un poco huevo en este de php y mysql.
Gracias. Mi nombre es Wilman
Bogotá - Colombia
[email protected]

1 Respuesta

Respuesta
1
Lo que se me ocurre es lo siguiente:
- Primero debes determinar cuantos inmuebles van a aparecer en primera plana.
- Realizas una consulta a la base de datos seleccionando solo los que tengan nivel de internet igual a 9.
- Si tienes suficientes vas eligiendo de forma aleatoria los que necesites.
- Si no hay suficientes para rellenar la primera plana, muestras todos esos de forma aleatoria o secuencial, y realizas otra consulta con los de nivel 8.
- Repites esos pasos con los restantes niveles hasta tener suficientes. Siempre mostrando los de niveles superiores primero sin mezclarlo con los siguientes.
Por ejemplo, necesitas 4 inmuebles para primera plana. Seleccionas los de nivel 9, pero solo hay 2, entonces te quedas con esos dos. Ahora seleccionas los de nivel 8, y suponemos que hay 5. De esos cinco eliges 2 de forma aleatoria. Ya tienes 2 de nivel 9, y 2 de nivel 8 elegidos de forma aleatoria.
El código que puedes usar es algo parecido a lo siguiente:
$numInmuebles = 4;
$inmuebles = array();
$nivel = 9;
// mysql_connect();
// mysql_select_db();
$inmueblesSeleccionados = 0;
while( $inmueblesSeleccionados < $numInmuebles ) {
$consulta = "SELECT * FROM Inmuebles WHERE nivel_internet = nivel";
// $resultado = mysql_query();
$inmueblesValidos = mysql_num_rows($resultado);
while( ($inmueblesValidos > 0) and ($inmueblesSeleccionados < $numInmuebles) and ($inmueblesValidos > $inmueblesSeleccionados) ) {
$inmuebleActual = rand(0, $inmueblesValidos-1);
// Guardar en $inmuebles los datos del $inmuebleActual. Los puedes coger con mysql_result.
$inmueblesSeleccionados ++;
}
$nivel --;
}
// mysql_close();
// mostrar los inmuebles
El código que puedes usar es algo parecido a lo siguiente:
$numInmuebles = 4;
$inmuebles = array();
$nivel = 9;
// mysql_connect();
// mysql_select_db();
$inmueblesSeleccionados = 0;
while( $inmueblesSeleccionados < $numInmuebles ) {
$consulta = "SELECT * FROM Inmuebles WHERE nivel_internet = nivel";
// $resultado = mysql_query();
$inmueblesValidos = mysql_num_rows($resultado);
while( ($inmueblesValidos > 0) and ($inmueblesSeleccionados < $numInmuebles) and ($inmueblesValidos > $inmueblesSeleccionados) ) {
$inmuebleActual = rand(0, $inmueblesValidos-1);
// Guardar en $inmuebles los datos del $inmuebleActual. Los puedes coger con mysql_result.
$inmueblesSeleccionados ++;
}
$nivel --;
}
// mysql_close();
// mostrar los inmuebles
Todo me funciona a la perfección, la duda es la siguiente, como hago para coger los datos con mysql_result y cuando tu cierras la conexión como hago para mostar esos datos del inmueble,
Por favor explicame esa parte.
Yo estuve provando de la sgte manera:
while (($inmueblesValidos>0) and ($inmueblesSeleccionados< $numinmuebles) and ($inmueblesValidos>$inmueblesSeleccionados)){
$inmuebleActual = rand(0, $inmueblesValidos-1);
$inmueble=mysql_result($result,0)
//echo $row[0];
echo" <$inmuebleActual><br>";
$inmueblesSeleccionados++;
}
$nivel --;
}
Seria conveniente ver el contenido de las líneas 105 y 56 del archivo sistemas_ventasconectar.php
El segundo error parece de sintaxis, es decir, que se te ha pasado abrir un paréntesis en algún lado. Quizá en el trabajo no lo notas debido a la configuración de apache y de php. Se puede poner muy sensible a los errores o poco y quizá lo tengas configurado de diferente forma. Por eso en tu casa salta el error.
El primer error posiblemente se refiere a que estás usando un índice invalido para un array.
Si tienes acceso en tu empresa, coge los archivos httpd.conf de apache y php.ini de php, y los comparas con los de tu casa.
Dime que cosas tienes diferentes en ambos archivos. Para compararlos puedes usar el Word o cualquier otro programa que compare documentos, así no tienes que hacerlo linea por linea. También ponme algo de código, varias lieas antes y después de las que te da error.
Gracias por ayudarme, tu respuesta ha sido exacta para mi duda. Pero ahora tengo otra duda.
Yo quiero mostrar en la página que estoy haciendo las imágenes que tengan preferencias el cual manejo una tabla de inmuebles con un campo llamado nivel_de_internet el cual va de 1 a 9 teniendo en cuenta que me muestre los niveles ma altos de forma aleatoria. Eso es para darle preferencia a aquellos propietarios que quieran que su inmueble aparezca en primera plana. Pero teniendo en cuenta el nivel que tengan en internet.
Los niveles van de la siguiente manera:
Nivel valor
1 1000
2 2000
3 3000
4 4000
. .
. .
. .
9 9000
Gracias.
Wilman Javier Santiago Estrada
Bogotá - Colombia
Yo no pongo el código completo porque me faltan los campos de tu base de datos.
Pero donde pongo guardar datos en $inmuebles, también los puedes mostrar directamente. $Inmuebles sería un array asociativo con los campos de la base de datos, pero no te compliques demasiado. Si no puedes crearlo no lo uses, muestra los datos directamente.
Te propongo lo siguiente, es muy parecido pero mostrando los datos en el bucle:
$numInmuebles = 4;
$nivel = 9;
// mysql_connect() y mysql_select_db()
$inmueblesSeleccionados = 0;
while( $inmueblesSeleccionados < $numInmuebles ) {
$consulta = "SELECT * FROM Inmuebles WHERE nivel_internet = nivel";
// $resultado = mysql_query();
$inmueblesValidos = mysql_num_rows($resultado);
while( ($inmueblesValidos > 0) and ($inmueblesSeleccionados < $numInmuebles) and ($inmueblesValidos > $inmueblesSeleccionados) ) {
$inmuebleActual = rand(0, $inmueblesValidos-1);
$datos = mysql_fetch_row($resultado);
echo "Campo1= $datos[0] Campo2=$datos[1]...";
$inmueblesSeleccionados ++;
}
$nivel --;
}
// mysql_close();
Según este ejemplo, obtienes en $datos un array con los campos de la base de datos. Solo tienes que mostrarlos. Pruebalo con esa función mysql_fetch_row en vez de mysql_result.
Pruébalo y me comentas.
Me despisté. $InmuebleActual contiene un número aleatorio para seleccionar el registro de ese número, pero mysql_fetch_row, a pesar de su comodidad no se puede usar porque no permite seleccionar el registro que queremos.
Hay que usar mysql_result. El código quedaría de la siguiente forma:
$inmuebleActual=rand(0,$inmueblesValidos-1);
$cod_inm=mysql_result($resultado,$inmuebleActual,0);
$tipo_inmueble=mysql_result($resultado,$inmuebleActual,1);
$ciudad=mysql_result($resultado,$inmuebleActual,2);
$nivel_internet=mysql_result($resultado,$inmuebleActual,3);
$direccion=mysql_result($resultado,$inmuebleActual,4);
$valor=mysql_result($resultado,$inmuebleActual,5);
$caracteristicas=mysql_result($resultado,$inmuebleActual,6);
echo "$cod_inm, $tipo_inmueble, $ciudad, $nivel_internet, $direccion, $valor, $caracteristicas";
Esta vez si, ;-)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas