Foros del Web » Programando para Internet » PHP »

¿Dónde estoy fallando...?

Estas en el tema de ¿Dónde estoy fallando...? en el foro de PHP en Foros del Web. Hola a todos: Hace unos día lance una pregunta a un problemilla que tenía. Nexus10 y JMSystem me dieron dos respuestas pero no me sirvieron. ...
  #1 (permalink)  
Antiguo 11/05/2011, 01:59
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
¿Dónde estoy fallando...?

Hola a todos:

Hace unos día lance una pregunta a un problemilla que tenía.

Nexus10 y JMSystem me dieron dos respuestas pero no me sirvieron.

Muy agradecido de todas formas...

La cuestión era la siguiente:

Tengo dos tablas, con los siguientes datos:

portfolioclientes
portfolioclientesid
portfolioclientestitulo
portfolioclientesfoto
portfolioclientestexto

portfolio
portfolioid
portfolioclientesid
portfoliofoto
portfoliotitulo
portfoliotexto

La id de la tabla portfolioclientes está unida a la tabla portfolio.

La cosa era tener una lista desplegable en una página donde se mostrarían todos los portfolioclientestitulo de la tabla portfolioclientes.

Al seleccionar uno de ellos, y sin salir de la página, debería de mostrar sus resultados correspondientes de la tabla portfolio.

Usando un viejo código que tenía de un buscador (que técnicamente hacía algo parecido) he llegado a montar este código:

Código:
<?php
				// CONECTANDO CON LA BASE DE DATOS
				require_once("../incluye/config.php");
				require_once("../incluye/funciones.php");
				// CONECTANDO A MYSQL
				$cnx = conectar();
				// CONSULTANDO PARA CLIENTES DEL PORTFOLIO
				$query_portfolioclientes = "SELECT * FROM portfolioclientes ORDER BY portfolioclientestitulo";
				$portfolioclientes = mysql_query($query_portfolioclientes, $cnx) or die(mysql_error());
				$row_portfolioclientes = mysql_fetch_assoc($portfolioclientes);
				$totalRows_portfolioclientes = mysql_num_rows($portfolioclientes);
				?>
				<form enctype="multipart/form-data" name="form1" method="post" action="">
			<tr>
			
				<td colspan="2" class="texto_paginas_formularios2">¡<U>Seleccionar primero un Cliente:</U>!&nbsp;&nbsp;&nbsp;
					<select name="portfolioclientesid" id="portfolioclientesid" onChange="submit()" class='texto_buscador'>
					<option value="" <?php if (!(strcmp("", $_POST['portfolioclientesid']))){echo "SELECTED";} ?>><?php 
					$numero_portfolioclientes = mysql_num_rows($portfolioclientes); 
					?>Hay <?php echo "$numero_portfolioclientes";  ?> Clientes en el Portfolio</option>
			      	<?php
					do {  
					?>
      				<option value="<?php echo $row_portfolioclientes['portfolioclientesid']?>"<?php if (!(strcmp($row_portfolioclientes['portfolioclientesid'], $_POST['portfolioclientesid']))) {echo "SELECTED";} ?>><?php echo $row_portfolioclientes['portfolioclientestitulo']?></option>
      				<?php
					} while ($row_portfolioclientes = mysql_fetch_assoc($portfolioclientes));
  					$rows = mysql_num_rows($portfolioclientes);
  					if($rows > 0) {
      				mysql_data_seek($portfolioclientes, 0);
	  				$row_portfolioclientes = mysql_fetch_assoc($portfolioclientes);
  					}
					?>
    				</select></td>
			</tr>
				</form>
				<?php
				// SI SE HA SELECCIONADO UN CLIENTE
				if (isset($_POST['portfolioclientesid'])) {
				$resultado = $_POST['portfolioclientesid'];
				}
				// CONSULTANDO
				$select = "SELECT DISTINCT portfolioid, portfolio.portfolioclientesid, portfoliofoto, portfoliotitulo, portfoliotexto, portfolioclientes.portfolioclientestitulo";
				$from = " FROM portfolio, portfolioclientes";
				$where = " WHERE portfolioclientes.portfolioclientesid=$resultado ORDER BY portfolioclientes.portfolioclientestitulo";
				
				if ($portfolioclientesid != "") {
				// SE HA SELECCIONADO UNA CATEGORIA
  				$where .= " AND portfolioclientes.portfolioclientesid=portfolio.portfolioclientesid ORDER BY portfolioclientes.portfolioclientestitulo";
				}

				$bus = mysql_query($select . $from . $where);
				//IMPRESION DE LOS DATOS
				while ($bu = mysql_fetch_array($bus)){
				$portfolioid = $bu["portfolioid"];
  				$portfoliofoto = $bu["portfoliofoto"];
  				$portfoliotitulo = $bu["portfoliotitulo"];
  				$portfoliotexto = $bu["portfoliotexto"];
  				$portfolioclientestitulo = $bu["portfolioclientestitulo"];
				echo "<tr>
					<td class='texto_paginas_clientes'>$portfolioclientestitulo</td>
					<td class='texto_paginas_clientes2'>$portfoliotitulo</td>
					<td rowspan='2' class='boton_paginas'><a href='portfolio_mod.php?portfolioid=$portfolioid' target='_self'><img src='images/editar_texto.png' /></a>&nbsp;&nbsp;<a href='portfolio_modfoto.php?portfolioid=$portfolioid' target='_self'><img src='images/editar_imagen.png' /></a><br><br><a href='portfolio_del.php?portfolioid=$portfolioid' target='_self'><img src='images/eliminar_texto.png' /></a></td>	
				</tr>
				<tr>
					<td class='texto_paginas_clientes'><img src='$portfoliofoto' width='100' /></td>
					<td class='texto_paginas_clientes2'>$portfoliotexto</td>					
				</tr>\n";				
				}
				if (!$bus) {
				echo "<tr>
					<td class='texto_paginas'>No se obtuvieron resultados</td>
					</tr>\n";
				}
				mysql_close($cnx);
				?>
Cuando se abre la página, directamente dice que "No se obtuvieron resultados", perteneciente al último TD del código.

Y al seleccionar cualquier nombre de la lista desplegable lo que me hace es: muestra todos los resultados de la tabla portfolio pero con el nombre de portfolioclientestitulo seleccionado.

¿Álguien me podría decir donde está el fallo?... Llevo dos días dándole vueltas y moviendo parte del código, pero no consigo el resultado esperado.

Gracias a todos y siento mucho el chapón que les he metido.

Un saludo:

Javy
  #2 (permalink)  
Antiguo 11/05/2011, 04:37
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: ¿Dónde estoy fallando...?

Hola javy, ya que me mencionas en tu post te voy a responder.

No tengo muy claro que es lo que quieres.

¿Tú quieres que al seleccionar una opción de la lista desplegable aparezcan los datos del cliente automáticamente sin tener que pulsar ningún botón para enviar el formulario?.
Si es eso lo que quieres hacer no lo puedes hacer como lo estás haciendo. Eso hay que hacerlo con javascript. No puedes pretender que te aparezcan los datos del cliente al seleccionar la opción si no envias el formulario al servidor para que se conecte a la base de datos y busque los datos de ese cliente.
O lo haces con javascript o pones un botón para enviar el formulario. Una vez que se han seleccionado los datos de ese cliente volvería a la página y los mostraría.

Veo que usas una función javascript submit(), que no sé lo que hará, porque no has puesto el código.
El código que tienes a partir de la etiqueta de cierre del formulario, </form>, sólo se ejecuta cuando entras a la página por primera vez. Si no recargas la página, ese código no se vuelve a ejecutar y no puede mostrar los datos de la opción seleccionada.
No sé si me he explicado bien.
No sé si estoy diciendo alguna burrada, tampoco soy muy experto en esto de php y menos de javascrit. Lo mismo esa función submit() de javascript hace todo y el error está en otro sitio.

Haber si alguien más experto te puede dar una respuesta más satisfactoria.

Un saludo.
  #3 (permalink)  
Antiguo 11/05/2011, 05:05
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: ¿Dónde estoy fallando...?

Hola Nexus10:

Gracias de nuevo por tu interés.

Como bién dices, efectivamente, lo que quiero es que al seleccionar una opción de portfolioclientestitulo se muestren sus resultados correspondientes de la tabla portfolio.

De todas formas, suponiendo que tuviera un código javascript que me refrescara la página (creo que tengo uno por ahí), sigo con la duda de como hacer funcionar la segunda parte del código: la de mostrar los resultados.

Gracias y un saludo:

Javy
  #4 (permalink)  
Antiguo 11/05/2011, 05:44
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 2 meses
Puntos: 58
Respuesta: ¿Dónde estoy fallando...?

Me acabo de fijar mejor en el código y veo que tienes algún fallo.

if ($portfolioclientesid != "") {

Aquí no va a entrar nunca porque la variable $portfolioclientesid no está definida en ningún sitio, por lo menos yo no la veo. Pero mejor que no te entre ahí nunca porque como te entrara te daría un fallo en la consulta sql. Si te fijas, concatenaría las dos cadenas "$where" y la consulta tendría dos sentencias ORDER BY, y eso no puede ser.

Corrige esos errores a ver si solucionas algo.
  #5 (permalink)  
Antiguo 12/05/2011, 05:23
 
Fecha de Ingreso: septiembre-2002
Mensajes: 153
Antigüedad: 21 años, 7 meses
Puntos: 1
Respuesta: ¿Dónde estoy fallando...?

SOLUCIONADO:

En primer lugar, gracias de nuevo a Nuexus10 por su interés.

En segundo lugar: conseguí que funcionase... para el que le pueda interesar o valer como a mí.

* Si álguien notase algún error en el código, por favor, que lo diga para poder corregirlo *

El código completo sería este:

Código:
</tr>
				<?php
				// CONECTANDO CON LA BASE DE DATOS
				require_once("../incluye/config.php");
				require_once("../incluye/funciones.php");
				// CONECTANDO A MYSQL
				$cnx = conectar();
				// CONSULTANDO PARA CLIENTES DEL PORTFOLIO
				$query_portfolioclientes = "SELECT * FROM portfolioclientes ORDER BY portfolioclientestitulo";
				$portfolioclientes = mysql_query($query_portfolioclientes, $cnx) or die(mysql_error());
				$row_portfolioclientes = mysql_fetch_assoc($portfolioclientes);
				$totalRows_portfolioclientes = mysql_num_rows($portfolioclientes);
				?>
				<form enctype="multipart/form-data" name="form1" method="post" action="">
			<tr>
			
				<td colspan="2" class="texto_paginas_formularios2">¡<U>Seleccionar primero un Cliente:</U>!&nbsp;&nbsp;&nbsp;
					<select name="portfolioclientesid" id="portfolioclientesid" onChange="javascript: document.form1.submit();">
					<option value="" <?php if (!(strcmp("", $_POST['portfolioclientesid']))){echo "SELECTED";} ?>><?php 
					$numero_portfolioclientes = mysql_num_rows($portfolioclientes);
					$item = 'Hay '.$numero_portfolioclientes.' Clientes en el Portfolio';
					?><?php echo "$item"; ?></option>
			      	<?php
					do {  
					?>
      				<option value="<?php echo $row_portfolioclientes['portfolioclientesid']?>"<?php if (!(strcmp($row_portfolioclientes['portfolioclientesid'], $_POST['portfolioclientesid']))) {echo "SELECTED";} ?>><?php echo $row_portfolioclientes['portfolioclientestitulo']?></option>
      				<?php
					} while ($row_portfolioclientes = mysql_fetch_assoc($portfolioclientes));
  					$rows = mysql_num_rows($portfolioclientes);
  					if($rows > 0) {
      				mysql_data_seek($portfolioclientes, 0);
	  				$row_portfolioclientes = mysql_fetch_assoc($portfolioclientes);
  					}
					?>
    				</select></td>
			</tr>
				</form>
				<?php
				// SI SE HA SELECCIONADO UN CLIENTE
				if (isset($_POST['portfolioclientesid'])) {
				$resultado = $_POST['portfolioclientesid'];
				// CONSULTANDO
				$select = "SELECT DISTINCT portfolioid, portfolio.portfolioclientesid, portfoliofoto, portfoliotitulo, portfoliotexto, portfolioclientes.portfolioclientestitulo";
				$from = " FROM portfolio, portfolioclientes";
				$where = " WHERE portfolio.portfolioclientesid=$resultado AND portfolioclientes.portfolioclientesid=portfolio.portfolioclientesid ORDER BY portfolioclientes.portfolioclientestitulo";	
								
				$bus = mysql_query($select . $from . $where);
				//IMPRESION DE LOS DATOS
				while ($bu = mysql_fetch_array($bus)){
				$portfolioid = $bu["portfolioid"];
  				$portfoliofoto = $bu["portfoliofoto"];
  				$portfoliotitulo = $bu["portfoliotitulo"];
  				$portfoliotexto = $bu["portfoliotexto"];
  				$portfolioclientestitulo = $bu["portfolioclientestitulo"];
				echo "<tr>
					<td class='texto_paginas_clientes'>$portfolioclientestitulo</td>
					<td class='texto_paginas_clientes2'>$portfoliotitulo</td>
					<td rowspan='2' class='boton_paginas'><a href='portfolio_mod.php?portfolioid=$portfolioid' target='_self'><img src='images/editar_texto.png' /></a>&nbsp;&nbsp;<a href='portfolio_modfoto.php?portfolioid=$portfolioid' target='_self'><img src='images/editar_imagen.png' /></a><br><br><a href='portfolio_del.php?portfolioid=$portfolioid' target='_self'><img src='images/eliminar_texto.png' /></a></td>	
				</tr>
				<tr>
					<td class='texto_paginas_clientes'><img src='$portfoliofoto' width='100' /></td>
					<td class='texto_paginas_clientes2'>$portfoliotexto</td>					
				</tr>\n";				
				}}
				if (!$bus AND !$item) {
				echo "<tr>
					<td class='texto_paginas'>No se obtuvieron resultados</td>
					</tr>\n";
				}
				mysql_free_result($cnx);
				?>
				</table> 
Bueno: sinceramente tengo una duda con el último if ya que quiero que muestre el error si el resultado obtenido "es diferente de $bus o de $item".

Por cierto: usé javascript sólo para que al seleccionar un item de la lista, el formulario se autoenviase con esa simple orden.

Gracias de todas formas y un saludo:

Javy

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 06:22.