Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Joystickoso en 30 Julio 2009, 20:11 pm



Título: Problema con condicional dentro de un bucle.
Publicado por: Joystickoso en 30 Julio 2009, 20:11 pm
Wenas, tengo una tabla mysql en la que meto links de descargas videos de youtube, etc... Mi idea es que si el registro es un video de youtube me meta el video a la derecha del link con object y que si no lo es que meta por ejemplo una imagen. Pues bien los videos aparecen bien pero no las imagenes. Lo he echo con el dreamweaver retocandolo a mi gusto y ha quedado asi:
Código:
<td colspan="3" valign="top"><?php do { ?>
      <table width="100%" border="2" cellpadding="0" cellspacing="1" bordercolor="#0033FF">
        <!--DWLayoutTable-->
        <tr>
          <td width="450" height="98" align="center" valign="middle" bordercolor="#FFFFFF"><span class="Estilo4">A&ntilde;adido por <span class="Estilo6"><?php echo $row_Recordset1['Addpor']; ?> <span class="Estilo7">el <?php echo $row_Recordset1['fecha']; ?> a las <?php echo $row_Recordset1['hora']; ?></span></span></span></td>
          <td width="439" rowspan="3" align="center" valign="middle">
  <?php if ($row_Recordset1['tipo']=Youtube)
  { echo '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'.$row_Recordset1['datostube'].'&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/'.$row_Recordset1['datostube'].'&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object>';
  }
  else {echo '<p class="Estilo9"><img src="imagenes/image.png" width="343" height="65"></p>';}?></td>
        </tr>
        <tr>
          <td height="44" align="center" valign="middle" bordercolor="#FFFFFF"><span class="Estilo4">Link:<br>
              <span class="Estilo6"><a href="<?php echo $row_Recordset1['Links']; ?>" target="_blank"><?php echo $row_Recordset1['Links']; ?></a></span> </span></td>
        </tr>
        <tr>
          <td height="151" align="center" valign="middle" bordercolor="#FFFFFF"><p class="Estilo4">Comentario:<br>
              <span class="Estilo6"><?php echo $row_Recordset1['Comentario']; ?></span> </p></td>
        </tr>
            </table>
      <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?></td>
Pone los videos bien y ordenados pero los que no son videos los pone como si lo fueran, osea se ve el recuadro del video pero en blanco en vez de la imagen que debía aparecer.
Yo supongo que el problema está en el condicional dentro del bucle como si el condicional solo lo tuviese en cuenta la primera vez.
Si es asi, como lo soluciono?
Gracias!


Título: Re: Problema con condicional dentro de un bucle.
Publicado por: Nakp en 31 Julio 2009, 00:17 am
la comparación se hace con ==, e imagino que Youtube es una cadena, así que debería ir entre comillas

Código
  1. <td colspan="3" valign="top"><?php do { ?>
  2.      <table width="100%" border="2" cellpadding="0" cellspacing="1" bordercolor="#0033FF">
  3.        <!--DWLayoutTable-->
  4.        <tr>
  5.          <td width="450" height="98" align="center" valign="middle" bordercolor="#FFFFFF"><span class="Estilo4">A&ntilde;adido por <span class="Estilo6"><?php echo $row_Recordset1['Addpor']; ?> <span class="Estilo7">el <?php echo $row_Recordset1['fecha']; ?> a las <?php echo $row_Recordset1['hora']; ?></span></span></span></td>
  6.          <td width="439" rowspan="3" align="center" valign="middle">
  7.  <?php if ($row_Recordset1['tipo']=Youtube)
  8.  { echo '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'.$row_Recordset1['datostube'].'&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/'.$row_Recordset1['datostube'].'&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object>';
  9.  }
  10.  else {echo '<p class="Estilo9"><img src="imagenes/image.png" width="343" height="65"></p>';}?></td>
  11.        </tr>
  12.        <tr>
  13.          <td height="44" align="center" valign="middle" bordercolor="#FFFFFF"><span class="Estilo4">Link:<br>
  14.              <span class="Estilo6"><a href="<?php echo $row_Recordset1['Links']; ?>" target="_blank"><?php echo $row_Recordset1['Links']; ?></a></span> </span></td>
  15.        </tr>
  16.        <tr>
  17.          <td height="151" align="center" valign="middle" bordercolor="#FFFFFF"><p class="Estilo4">Comentario:<br>
  18.              <span class="Estilo6"><?php echo $row_Recordset1['Comentario']; ?></span> </p></td>
  19.        </tr>
  20.            </table>
  21.      <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?></td>


Título: Re: Problema con condicional dentro de un bucle.
Publicado por: дٳŦ٭ en 31 Julio 2009, 01:25 am
la comparación se hace con ==, e imagino que Youtube es una cadena, así que debería ir entre comillas

Código
  1. <td colspan="3" valign="top"><?php do { ?>
  2.      <table width="100%" border="2" cellpadding="0" cellspacing="1" bordercolor="#0033FF">
  3.        <!--DWLayoutTable-->
  4.        <tr>
  5.          <td width="450" height="98" align="center" valign="middle" bordercolor="#FFFFFF"><span class="Estilo4">A&ntilde;adido por <span class="Estilo6"><?php echo $row_Recordset1['Addpor']; ?> <span class="Estilo7">el <?php echo $row_Recordset1['fecha']; ?> a las <?php echo $row_Recordset1['hora']; ?></span></span></span></td>
  6.          <td width="439" rowspan="3" align="center" valign="middle">
  7.  <?php if ($row_Recordset1['tipo']=Youtube)
  8.  { echo '<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/'.$row_Recordset1['datostube'].'&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/'.$row_Recordset1['datostube'].'&color1=0xb1b1b1&color2=0xcfcfcf&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="425" height="344"></embed></object>';
  9.  }
  10.  else {echo '<p class="Estilo9"><img src="imagenes/image.png" width="343" height="65"></p>';}?></td>
  11.        </tr>
  12.        <tr>
  13.          <td height="44" align="center" valign="middle" bordercolor="#FFFFFF"><span class="Estilo4">Link:<br>
  14.              <span class="Estilo6"><a href="<?php echo $row_Recordset1['Links']; ?>" target="_blank"><?php echo $row_Recordset1['Links']; ?></a></span> </span></td>
  15.        </tr>
  16.        <tr>
  17.          <td height="151" align="center" valign="middle" bordercolor="#FFFFFF"><p class="Estilo4">Comentario:<br>
  18.              <span class="Estilo6"><?php echo $row_Recordset1['Comentario']; ?></span> </p></td>
  19.        </tr>
  20.            </table>
  21.      <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?></td>

como les haces para que quede resaltado?


Título: Re: Problema con condicional dentro de un bucle.
Publicado por: Nakp en 31 Julio 2009, 01:26 am
[code=php,#,#,#][/code]

donde # son los números de las líneas que quieres resaltadas


Título: Re: Problema con condicional dentro de un bucle.
Publicado por: дٳŦ٭ en 31 Julio 2009, 01:35 am
[code=php,#,#,#][/code]

donde # son los números de las líneas que quieres resaltadas

(http://lopezanta.com/contenido/img/emoticonos/sorprendido.gif)


Título: Re: Problema con condicional dentro de un bucle.
Publicado por: Joystickoso en 31 Julio 2009, 17:51 pm
Si que era lo de los dos simbolos de igual "==", ya está.
Lo de Youtube es de la tabla mysql de los links que dice si es un video de youtube, un link, una descarga u otra cosa.
Prueba superada, gracias!!

Ahora estoy a ver si puedo conseguir que el formulario para meter los links coja los links del youtube y en otra columna registre solo los 11 digitos para los videos.
Osea, que al registrar por ejemplo el link http://www.youtube.com/watch?v=a1IpPpB3iWI registre en otra columna a1IpPpB3iWI.
Estoy probando con "strpos" y "substr" haber si con algo asi:
Código
  1. <?php $posigual=echo strpos($_POST['Link'], "=");
  2. $datosvideotube=if ($_POST['tipo']=="Youtube")
  3. {echo substr($_POST['Link'], $posigual++, 11);}
  4. else {echo vacio;}?>
Y habría mucha diferencia si fuese asi?
Código
  1. <?php $posigual='echo strpos('.$_POST['Link'].', "=")';
  2. if ($_POST['tipo']=="Youtube")
  3. {$datosvideotube='echo substr('.$_POST['Link'].', '.$posigual++.', 11)';}
  4. else {$datosvideotube=vacio;}?>
Perdon por mi ignorancia, aun me queda mucho manual de php que leer...
Gracias.


Título: Re: Problema con condicional dentro de un bucle.
Publicado por: [u]nsigned en 1 Agosto 2009, 01:08 am
Joystickoso:

     Tu código está  lleno de errores, pero de los feos... :xD

Ahora en serio, si estás leyendo un manual de PHP te recomendaría que lo leas MAS DETENIDA Y ATENTAMENTE. Por ejemplo habras leido que echo se usa para mostrar informacion, pero en realidad lo que hace es 'imprimir' algo en el documento:

Código
  1. $posigual=echo strpos($_POST['Link'], "=");

Ahi esta mal, no debe ir en medio de una asignacion. Ese codigo basicamente seria como decirle a php "en la variable $posigual mete el valor.. a no no espera, ahora quiero imprimir algo en la pagina, no voy a asignarle ningun valor a la variable $posigual.."

No se si me entiendes?

Buscate algun manual bien basico para empezar.

Saludos


Título: Re: Problema con condicional dentro de un bucle.
Publicado por: Joystickoso en 1 Agosto 2009, 15:43 pm
OK entiendo.
Si qie es de los gordos, si...
La cosa sería mas así:
Código
  1. <?php $posigual = strpos($row_Recordset1['Link'], "=");
  2. if ($row_Recordset1['tipo']==Youtube)
  3. {$datosvideotube = substr($row_Recordset1['Link'], $posigual++, 11);}
  4. else{$datosvideotube = vacio;}?>
La verdad es que no me he leido ningun manual entero solo leo lo que voy necesitando aunque lo de:
Código
  1. $posigual=echo strpos($_POST['Link'], "=");
ya debería saberlo si, que fallo!
Tienes razon tengo que pillar algun manual guapo y con ejemplos y dedicarle horas.
En cuanto a lo que quiero hacer probare de otra forma a ver si lo consigo porque con esto de momento lo unico que he conseguido es que siempre "$datosvideotube = vacio".
Gracias por todo, sobretodo por la paciencia...
Saludos!