Foros del Web » Programando para Internet » PHP »

cosa rara, antes me iba ahora no

Estas en el tema de cosa rara, antes me iba ahora no en el foro de PHP en Foros del Web. Hola, el trozo en negrita, deberia recoger algun registro... he comprobado desde consola, y hay un registro que cumple la condicion, ¿porque no entra dentro? ...
  #1 (permalink)  
Antiguo 13/05/2010, 15:25
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
cosa rara, antes me iba ahora no

Hola, el trozo en negrita, deberia recoger algun registro... he comprobado desde consola, y hay un registro que cumple la condicion, ¿porque no entra dentro? Gracias

echo 'He hecho las conexiones';

for($i=0;$i<$valor;$i++)
{
/*$otra="select titol,subtitol,ISBN,numero,edicio,estat,preu_eur,p resd,pagines,pes,format,bn_color,encuadernacio, tapa,text_castella,text_angles,id_col from articles where titol like '" . $titol[$i] . "'"; */
$otra="select titol from articles where titol like '" . $titol[$i] . "'";
echo "$otra";
$result = mysql_query($otra, $link);
while ($row=mysql_fetch_array($result)) echo 'dentro del bcule';


}

mysql_close($backup);
mysql_close($link);
  #2 (permalink)  
Antiguo 13/05/2010, 15:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: cosa rara, antes me iba ahora no

Probablemente no entra a tu for, comprueba que tenga algo la variable $valor.

Saludos.
  #3 (permalink)  
Antiguo 13/05/2010, 15:27
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
Al for entra... a donde no entra es al while....

$titol=$_POST["titol"];
$valor=count($titol);
echo 'He hecho las conexiones';

for($i=0;$i<$valor;$i++)
{
/*$otra="select titol,subtitol,ISBN,numero,edicio,estat,preu_eur,p resd,pagines,pes,format,bn_color,encuadernacio, tapa,text_castella,text_angles,id_col from articles where titol like '" . $titol[$i] . "'"; */
$otra="select titol from articles where titol like '" . $titol[$i] . "'";
echo "$otra";
$result = mysql_query($otra, $link);
while ($row=mysql_fetch_array($result)) echo 'dentro del bcule';


}

mysql_close($backup);
mysql_close($link);

He hecho las conexiones hay 2 items chequeadosselect titol from articles where titol like '4 SEGUNDOS'select titol from articles where titol like 'AGUJERO NEGRO'

Última edición por GatorV; 13/05/2010 a las 16:16
  #4 (permalink)  
Antiguo 13/05/2010, 16:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: cosa rara, antes me iba ahora no

Prueba usar:

$result = mysql_query($otra, $link) or die(mysql_error());

Luego comprueba si realmente tienes filas usando mysql_num_rows($result);

Saludos.
  #5 (permalink)  
Antiguo 13/05/2010, 16:36
 
Fecha de Ingreso: diciembre-2009
Mensajes: 612
Antigüedad: 10 años, 1 mes
Puntos: 16
Respuesta: cosa rara, antes me iba ahora no

Cita:
Iniciado por jordixip2 Ver Mensaje
Al for entra... a donde no entra es al while....

$titol=$_POST["titol"];
$valor=count($titol);
echo 'He hecho las conexiones';

for($i=0;$i<$valor;$i++)
{
/*$otra="select titol,subtitol,ISBN,numero,edicio,estat,preu_eur,p resd,pagines,pes,format,bn_color,encuadernacio, tapa,text_castella,text_angles,id_col from articles where titol like '" . $titol[$i] . "'"; */
$otra="select titol from articles where titol like '" . $titol[$i] . "'";
echo "$otra";
$result = mysql_query($otra, $link);
while ($row=mysql_fetch_array($result))
{
echo 'dentro del bcule';
}


}

mysql_close($backup);
mysql_close($link);

He hecho las conexiones hay 2 items chequeadosselect titol from articles where titol like '4 SEGUNDOS'select titol from articles where titol like 'AGUJERO NEGRO'

¿Puede ser eso?¿los {} del while?
__________________
Tengo una pregunta que a veces me tortura... ¿El loco soy yo o los locos son los demás?
  #6 (permalink)  
Antiguo 13/05/2010, 16:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: cosa rara, antes me iba ahora no

No, eso no tiene nada que ver.
  #7 (permalink)  
Antiguo 13/05/2010, 22:37
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
No, al ser una unica linea, no son necesarias las llaves... probare eso en unas horas y volvemos al lio.

Mmmm me sale 0; no entiendo, si hago la misma consulta desde mysql me sale un registro. Voy a revisar 'letra a letra' el select porque no me cuadra, sera una solemne tonteria, seguro!

Pues la unica diferencia es el punto y coma que le pongo al final... desde la consola mysql, asi que ... help!!!! Me sale un registro y desde php me dice 0.

Sorpresa... he quitado todo lo que hacia referencia a la segunda conexion y lo he dejado integro asi, y funciona, ahora lo que tengo que hacer es que lo devuelto, debo hacer un insert en la otra base de datos.

<?php
$titol=$_POST["titol"];
$valor=count($titol);

$link=mysql_connect('localhost','XXX','SSSSS') or die('Could not connect: '.mysql_error());
if (!mysql_select_db('DDDDDD', $link))
{
echo 'Could not select database';
exit;
}
else
echo '<br>Base de datos abierta ss<br>';
echo '<br>He hecho la conexiones hay ' . $valor . ' items chequeados<br>';
for($i=0;$i<$valor;$i++)
{
$otra="select titol from articles where titol like '" . $titol[$i] . "'";
echo "<br>$otra<br>";
$result = mysql_query($otra, $link) or die(mysql_error());
$cuenta=mysql_num_rows($result);
echo "<br>numero de registros devueltos: " . $cuenta . "<br>";
while ($row=mysql_fetch_array($result)) echo 'dentro del bcule';
}

mysql_close($link);

?>

Actualizo... no me escribe lo que esta en negrita, al final... porque??????????

<?php
$titol=$_POST["titol"];
$valor=count($titol);

$link=mysql_connect('localhost','KKKLLL','KKKKK') or die('Could not connect: '.mysql_error());

echo '<br>Servidor abierto<br>';
echo '<br>He hecho la conexiones hay ' . $valor . ' items chequeados<br>';

for($i=0;$i<$valor;$i++)
{
$otra="select titol from ss.articles where titol like '%" . $titol[$i] . "%'";
echo "<br>$otra<br>";
$result = mysql_query($otra, $link) or die(mysql_error());
$cuenta=mysql_num_rows($result);
echo "<br>numero de registros devueltos: " . $cuenta . "<br>";
while ($row=mysql_fetch_array($result))
{
echo '<br>dentro del bucle<br>';

echo "<br>$row["titol"]<br>";
}
}

mysql_close($link);

?>

Última edición por GatorV; 14/05/2010 a las 09:01
  #8 (permalink)  
Antiguo 14/05/2010, 07:13
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
2 bases de datos

Hola,

tengo un problema, tengo un script en php que debe hacer un select en una tabla de una base de datos, y dentro de un while hacerme x inserts en otra tabla de otra base de datos.

Mi forma de conectarme es:

$link=mysql_connect('localhost','XXX','SSSSS') or die('Could not connect: '.mysql_error());
if (!mysql_select_db('ss', $link))
{
echo 'Could not select database';
exit;
}

Por lo que veo que al crearme otro mysql_connect, realmente no me hace falta, ya lo que variaria o deberia variar es el mysql_select_db, pero no puedo tener dos db seleccionadas.

Como digo... tengo un select en donde se me devuelven x registros, y un bucle while, en donde deberia hacer un insert de cada uno de esos.... solo se me ocurre guardarme los datos en algun array y luego abrir la conexion cno la otra base de datos.

¿Alguna sugerencia?
  #9 (permalink)  
Antiguo 14/05/2010, 07:24
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 13 años
Puntos: 126
Respuesta: 2 bases de datos

Hola

Personalmente montaría, como tú bien dices, un array y después insertaría eses valores. De esa manera, me evitaría problemas si en algún momento falla el ataque a la bd

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #10 (permalink)  
Antiguo 14/05/2010, 07:46
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: 2 bases de datos

Se me ha ocurrido otra manerla y es hacer las selects y los inserts con tabla.columna, pero aun y asi.... tengo un problema, no me muestra lo que esta en negrita. Sorry pq he repetido el codigo en otro hilo.

<?php
$titol=$_POST["titol"];
$valor=count($titol);

$link=mysql_connect('localhost','kkkk','OOOOO') or die('Could not connect: '.mysql_error());

echo '<br>Servidor abierto<br>';
echo '<br>He hecho la conexiones hay ' . $valor . ' items chequeados<br>';

for($i=0;$i<$valor;$i++)
{
$otra="select titol from ss.articles where titol like '%" . $titol[$i] . "%'";
echo "<br>$otra<br>";
$result = mysql_query($otra, $link) or die(mysql_error());
$cuenta=mysql_num_rows($result);
echo "<br>numero de registros devueltos: " . $cuenta . "<br>";
while ($row=mysql_fetch_array($result))
{
echo '<br>dentro del bucle<br>';

echo "<br>$row["titol"]<br>";
}
}

mysql_close($link);

?>

Última edición por jordixip2; 14/05/2010 a las 08:00
  #11 (permalink)  
Antiguo 14/05/2010, 07:55
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 13 años
Puntos: 126
Respuesta: 2 bases de datos

Hola

Eso es un problema menos, ya que puede hacer

Código PHP:
Ver original
  1. echo "<br>".$titol[$i]."<br>";

Edita tu último post, la conexión tiene el pass

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #12 (permalink)  
Antiguo 14/05/2010, 08:04
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
Respuesta: 2 bases de datos

Me haces dudar.... yo busco por ejemplo %A%, o sea... que titol$i, seria A, pero puede ser que se llame BAB,GAC y estos ultimos serian $row['titol'], no se si me explico.... a parte luego se complica cuando esos $row['titol'] tengo q copiar el resto de los campos, y meterlos en otra tabla, y encima esa tabla tiene relaciones con otra tabla que tambien debo copiar, y para mas inri, al final, borrar todas esas referencias de la primera tabla de la primera base de datos.

Y ya para habernos matao.... puede ser que hay dos row[titol] iguales literalmente, pero con algun campo diferente, y haciendo referencia a otra relacion de la otra table en cuestion.

O sea, q en cada vuelta de while, tengo q hacer toda la operacion.. me imagino que hacer una funcion y demas... espero no perder variables de por medio.

Me explico?
  #13 (permalink)  
Antiguo 14/05/2010, 08:41
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: cosa rara, antes me iba ahora no

<?php

//Se supone que aqui el usuario pondra un termino de busqueda,no...?
//$titol=$_POST["titol"];

//Si escribo Af me devuelve: Afganistán y República Centroafricana
//o sea que funciona
$titol="Af";

$valor=count($titol);

//que importa que ponga mi calve: no va a entrar en mi maquina totoal
$link=mysql_connect('localhost','root','1234') or die('Could not connect: '.mysql_error());

echo '<br>Servidor abierto<br>';
echo '<br>He hecho la conexiones hay ' . $valor . ' items chequeados<br>';

IMPORTANTE: SELECCIONAR LA DB DONDE SE HALLA TU TABLA
mysql_query("use paises");


OJO: mysql_select_db depende de que version de php es obsoleta

for($i=0;$i<$valor;$i++){

//quite el $i y con esto se hace mas espesifica la busqueda
$otra="select * from pais_es where paisNAME like '%".$titol."%';";

echo "<br>$otra<br>";

$result = mysql_query($otra, $link) or die(mysql_error());
$cuenta=mysql_num_rows($result);
echo "<br>numero de registros devueltos: " . $cuenta . "<br>";

while ($row=mysql_fetch_array($result)){
echo '<br>dentro del bucle<br>';
echo "<br>". $row["paisNAME"] ."<br>";
}
}
mysql_close($link);

?>


En este codigo sobran cosas pero las dejo...

Saludos...
  #14 (permalink)  
Antiguo 14/05/2010, 09:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: cosa rara, antes me iba ahora no

El problema es tu uso de las comillas:
Código PHP:
Ver original
  1. // mal:
  2. echo "<br>$row["titol"]<br>";
  3.  
  4. // bien:
  5. echo "<br>$row[titol]<br>";
  6.  
  7. // mejor:
  8. echo "<br>" . $row["titol"] . "<br>";

Saludos.
  #15 (permalink)  
Antiguo 14/05/2010, 09:22
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: cosa rara, antes me iba ahora no

Cita:
Iniciado por GatorV Ver Mensaje
El problema es tu uso de las comillas:
Código PHP:
Ver original
  1. // mal:
  2. echo "<br>$row["titol"]<br>";
  3.  
  4. // bien:
  5. echo "<br>$row[titol]<br>";
  6.  
  7. // mejor:
  8. echo "<br>" . $row["titol"] . "<br>";

Saludos.


No me habras copiadola idea, no...:
echo "<br>". $row["paisNAME"] ."<br>";
  #16 (permalink)  
Antiguo 14/05/2010, 09:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 7 meses
Puntos: 2135
Respuesta: cosa rara, antes me iba ahora no

¿Copiado? Es el uso de las comillas, te invito a que leas los Aportes del Foro hay un muy buen post explicando el buen uso de las comillas.

Saludos.
  #17 (permalink)  
Antiguo 14/05/2010, 11:12
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
No os peleeis... ya comprendi el tema de las comillas; asi funciona e incluso ya intenta hacer el insert a la otra tabla de la otra bbdd. Ahora viene el tema de las relaciones, que tendre que hacer primero el insert de la otra taba relacionada (la que manda, y antes del otro select.. en fin al principio de todo)... en fin, al lio

<?php
$titol=$_POST["titol"];
$valor=count($titol);

$link=mysql_connect('localhost','FFFF','FFFFFF') or die('Could not connect: '.mysql_error());

echo "<br>Servidor abierto<br>";
echo "<br>He hecho la conexiones hay " . $valor . " items chequeados<br>";

for($i=0;$i<$valor;$i++)
{
$otra="select * from ss.articles where titol like '%" . $titol[$i] . "%'";
echo "<br>$otra<br>";
$result = mysql_query($otra, $link) or die(mysql_error());
$cuenta=mysql_num_rows($result);
echo "<br>numero de registros devueltos: " . $cuenta . "<br>";
while ($row=mysql_fetch_array($result))
{
echo "<br>dentro del bucle<br>";
echo "<br>" . $row["titol"] . "<br>";
$nueva="insert into backup.articles (titol,subtitol,ISBN,numero,edicio,estat,preu_eur, presd,pagines,pes,format,bn_color,encuadernacio ,tapa,text_castella,text_angles,id_col) values ('" . $row['titol'] . "','" . $row['subtitol'] . "','" . $row['ISBN']. "','" . $row['numero']. "','" . $row['edicio']. "','" . $row['estat']. "','" . $row['preu_eur']. "','" . $row['presd']. "','" . $row['pagines']. "','" . $row['pes']. "','" . $row['format']. "','" . $row['bn_color']. "','" . $row['encuadernacio']. "','" . $row['tapa']. "','" . $row['text_castella']. "','" . $row['text_angles']. "','" . $row['id_col'] . "')";
if (!mysql_query($nueva,$link))
{
die('Error: ' . mysql_error());
}
else echo "1 record added";
echo "<br>" . $nueva . "<br>";
}
}

mysql_close($link);

?>

He creado esta funcion:

function lee_col($identificador)
{
echo "Estoy dentro... con " . $identificador . "leido";
return;
}

y la llamo asi:

lee_coleccion('$row['id_col']');

o asi:

lee_coleccion("$row['id_col']");

y se me queda frito... donde puede estar el error?

Gracias

Última edición por GatorV; 14/05/2010 a las 12:44
  #18 (permalink)  
Antiguo 14/05/2010, 11:28
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 10 años, 8 meses
Puntos: 1517
Respuesta: Creacion de funcion

Cuando usas variables no es necesario encerrarlo entre comillas y si las encierras entre comillas las llaves no puedes encerrarla entre comillas.
Código PHP:
Ver original
  1. //Puedes ser de esta forma:
  2. lee_coleccion("$row[id_col]");
  3.  
  4. //Forma recomendada:
  5. lee_coleccion($row['id_col']);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #19 (permalink)  
Antiguo 14/05/2010, 11:49
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
El tema esta relacionado con esto, al hacerse ya largo queria ponerlo en una funcion para que fuera mas legible. Por cierto nuevamente... lo que esta en negrita no me lo muestra, y me dice que efectivamente hay un resultado:

$otra="select nom from ss.coleccions where id=" . $coleccion;
echo "<br>cadena " . $otra . "<br>";
$result_otra = mysql_query($otra, $link) or die(mysql_error());
$cuenta_otra=mysql_num_rows($result_otra);
echo "<br>numero de registros devueltos: " . $cuenta_otra . "<br>";
while ($row_otra=mysql_fetch_array($result_otra)) echo "<br>nom:" . $row['nom'] . "<br>";

Ok, la funcion pude hacerla y llamarla bien, pero no me muestra el campo 'nom', he revisado el tema de las dobles comillas y demas para ver si era el mismo error, pero no lo veo.

function lee_col($identificador,$link_n)
{
echo "Estoy dentro... con " . $identificador . "leido";
$otra="select nom from ss.coleccions where id=" . $identificador;
echo "<br>cadena " . $otra . "<br>";
$result_otra = mysql_query($otra, $link_n) or die(mysql_error());
$cuenta_otra=mysql_num_rows($result_otra);
echo "<br>numero de registros devueltos: " . $cuenta_otra . "<br>";
while ($row_otra=mysql_fetch_array($result_otra)) echo "<br>NOMBREEEE:" . $row['nom'] . "<br>";

return;
}

Última edición por GatorV; 14/05/2010 a las 12:43
  #20 (permalink)  
Antiguo 14/05/2010, 13:07
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 13 años
Puntos: 126
Respuesta: cosa rara, antes me iba ahora no

Hola

¿No ha de ser $row_otra['nom'] ?

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #21 (permalink)  
Antiguo 14/05/2010, 13:18
 
Fecha de Ingreso: mayo-2010
Mensajes: 112
Antigüedad: 9 años, 8 meses
Puntos: 0
cierto.. un lapsus, pruebo esto y a descansar; mañana sera otro dia.

Perfecto..y sigue.. deberia abrir otro hilo?

ahora tengo un error en el mysql: Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't see anywhere else. The underground label with most priced authors in "El Sal� ' at line 1

Son problemas con los acentos.. que deberia hacer primero para que no me diera el error, y luego para que imprimiera bien los registros? Es algo de codificacion de idioma, o caracteres.

Gracias

Última edición por GatorV; 14/05/2010 a las 15:03

Etiquetas: Ninguno
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:51.