Foros del Web » Programando para Internet » PHP »

problemas con mysql y los espacios en blanco

Estas en el tema de problemas con mysql y los espacios en blanco en el foro de PHP en Foros del Web. wenas, tengo una tabla en mysql, y cuando intento cargar en una variable una celda especifica que contiene un nombre con espacios entre medio, en ...
  #1 (permalink)  
Antiguo 16/08/2005, 13:22
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
problemas con mysql y los espacios en blanco

wenas, tengo una tabla en mysql, y cuando intento cargar en una variable una celda especifica que contiene un nombre con espacios entre medio, en la variable solo se carga asta el primer espacio, el resto se pierde.
¿Como puedo solucionear esto?¿a que es devido?
  #2 (permalink)  
Antiguo 16/08/2005, 13:28
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 14 años, 7 meses
Puntos: 35
loading..........



muestra tu pequeño script

Te refieres al mostrar el nombre de la columna? o el dato de la columna con el nombre que contiene espacios en blanco.


connection closed.
__________________

Maborak Technologies
  #3 (permalink)  
Antiguo 16/08/2005, 14:43
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
$tabla=mysql_db_query("bd","select * from tabla);
while($row=mysql_fetch_array($tabla)){
if($row["nombre"]==$algo){
break;
}
}


si en la tabla hay dos entradas como por ejemplo:
hola que tal
hola ya me voy

si $algo es igual a "hola ya me voy" me posiciona en el primer "hola" que encuentra, en este caso hola que tal
  #4 (permalink)  
Antiguo 16/08/2005, 14:49
Avatar de compositor19  
Fecha de Ingreso: junio-2005
Ubicación: Zaragoza
Mensajes: 215
Antigüedad: 12 años, 5 meses
Puntos: 2
prueba con esto

Código PHP:
 if($row["nombre"]==trim($algo)){ 
un saludo
  #5 (permalink)  
Antiguo 16/08/2005, 15:39
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
el problema no esta en los espacios que hay al principio ni al final, el problema esta en los espacios que estan dentro de la cadena
  #6 (permalink)  
Antiguo 16/08/2005, 15:43
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
A que te refieres cuando dices: "si $algo es igual a "hola ya me voy" me posiciona en el primer "hola" que encuentra.."
  #7 (permalink)  
Antiguo 16/08/2005, 23:47
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
con el while y mysql_fetch_array me va recorriendo las filas de la tabla de la base de datos. Con eso voy buscando la que quiero para cargar en una variable $row toda la fila con sus columnas. Si en la primera fila de la bd la columna "nombre" se llama "hola que tal" y la segunda "hola ya me voy" si voy comparando solo me compara por hola.
  #8 (permalink)  
Antiguo 17/08/2005, 12:13
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
He hecho una prueba en mi base de datos y no veo ese comportamiento, siempre me saca el correcto. Ahora, si tu haces mysql_fetch_array() el puntero interno a un registro se corre al siguiente, por tanto, si haces un break, y luego haces msyql_fetch_array() te va a sacar el siguente.
Aunque mejor es buscar asi:

Código PHP:
<?php
  $tabla
=mysql_db_query("bd","select * from tabla where campo='$algo';"); 
  if (
$tabla && mysql_num_rows($tabla)>0)
  {
     
$row=mysql_fetch_array($tabla);
     echo 
$row['campo'];
  }
?>
  #9 (permalink)  
Antiguo 17/08/2005, 12:22
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 15 años, 5 meses
Puntos: 1
Esto q dices de q solo se carga hasta el primer espacio..te refieres a q si haces un echo $variable no te sale toda la frase? pq me estraña...

veo q haces una comparacion..con un == esto solo sirve para comaprar palabras...como mucho...pero si ya es una frase tendrias q utilizar funciones específicas para estring o expresiones regulares...

mirate strcmp() o ereg()

Salu2.
  #10 (permalink)  
Antiguo 17/08/2005, 14:06
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
Bueno, gracias, ya está mas o menos solucionado. Ahora va otro problema, mas raro aun xDDDD.
aqui os pongo el codigo (mas o menos)

$tabla=mysql_db_query("bd","select * from tabla);
echo "<table border=\"1\" width=\"600\">";
echo "<tr><td colspan=\"3\" width=\"600\">Cabecera</td></tr>";
while($row=mysql_fetch_array($tabla)){
ehco "<tr>";
echo "<td width=\"200\">".$row["nombre"]."</td>";
echo "<td width=\"200\">".$row["descripcion"]."</td>";
//aqui el problema
echo "<td width=\"200\">";
echo "<form method=\"post\" action=\"pagina\">";
echo "<input type=\"text\" name=\"cantidad\">";
echo "<input type=\"submit\" value=\"enviar\" name=\"enviar\">";
echo "</td></tr>";
}
echo "</table>";

este es el codigo y el problema es el siguiente. La pagina se crea bien sin problema, el problema esta en los datos que recibe la pagina. El $enviar lo recibe bien (con valor enviar) pero el $cantidad recibe el último campo que salga. Es decir, si con el codigo sale una tabla de dos filas y meto la cantidad en la primera de 50 y en la segunda fila pongo 0 y apreto enviar en la primera fila, el valor de $cantidad es igual a 0 en vez de 50 que sería lo normal no¿?

Espero que puedan tmb solvetar este pequeño atasco
  #11 (permalink)  
Antiguo 17/08/2005, 14:44
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 15 años, 5 meses
Puntos: 1
el problema está en q creas inputs con el mismo name por lo tanto cuando haces el submit debe enviar el del ultimo name q haya...

si al enviar solo queires mandar el campo de una fila...sua la opcion button en vez de submit y pon un onclick q llame a una funcion de javascript donde le pasas el valor y q se encargue de mandarte a la pagina correspondiente.

Salu2.
  #12 (permalink)  
Antiguo 17/08/2005, 16:36
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
me podrías explicar unpoco mejor eso¿?
  #13 (permalink)  
Antiguo 17/08/2005, 16:43
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 14 años, 1 mes
Puntos: 11
Crea un arreglo de cantidades
Código PHP:
<?php
$tabla
=mysql_db_query("bd","select * from tabla);
echo "
<table border="1\" width=\"600\">";
echo 
"<tr><td colspan=\"3\" width=\"600\">Cabecera</td></tr>";
while(
$row=mysql_fetch_array($tabla)){
ehco "<tr>";
echo 
"<td width=\"200\">".$row["nombre"]."</td>";
echo 
"<td width=\"200\">".$row["descripcion"]."</td>";
//aqui el problema
echo "<td width=\"200\">";
echo 
"<form method=\"post\" action=\"pagina\">";
echo 
"<input type=\"text\" name=\"cantidad[]\">";
echo 
"<input type=\"submit\" value=\"enviar\" name=\"enviar\">";
echo 
"</td></tr>";
}
echo 
"</table>";
?>
Luego en el script que recibe usas esto, para mostrar todas

Código PHP:
<?php
    
foreach($_POST['cantidad'] as $cant)
        echo 
$cant."<br>":
?>
  #14 (permalink)  
Antiguo 17/08/2005, 17:20
 
Fecha de Ingreso: junio-2002
Mensajes: 243
Antigüedad: 15 años, 5 meses
Puntos: 1
claudiovega creo q AzAtOrEch queire poner un boton de enviar en cada fila y q al darle al boton de la correspondiente fila solo mande el valor del input de esa fila.

Pues lo q yo te decia antes es...

haces el bucle y tal...entonces usas un contador....y en cada fila pones algo asi...

<tr><td>
<input type='text' name='contador'>
<input type='button' onclick='mandar_dato(<? echo $cont;?>)'>
</td></tr>

y luego en la funcion javascript mandar_dato()

accedas a docuemnt.form1.contador[cont].value
y luego con un parent.location envies el dato al php q quieras...

te lo he explicado un poco por encima..para q veas la idea...

Salu2.
  #15 (permalink)  
Antiguo 18/08/2005, 06:21
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 3 meses
Puntos: 0
ok muxas gracias a todos, mas o menos ya me he enterado de la historia :). Tendré que investigar como hacer eso del javascript pero ya con la idea espero poder hacerlo
Gracias y un saludo
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 12:16.