Foros del Web » Programando para Internet » PHP »

Problema con require_once

Estas en el tema de Problema con require_once en el foro de PHP en Foros del Web. Buenas, Tengo este código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){     if($i++%2==0){        $color="#FFFFFF";     }else{ ...

  #1 (permalink)  
Antiguo 07/01/2013, 12:49
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Problema con require_once

Buenas,

Tengo este código:

Código PHP:
Ver original
  1. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  2.     if($i++%2==0){
  3.        $color="#FFFFFF";
  4.     }else{
  5.        $color="#CCCCCC";
  6.     }
  7.  
  8.     ?>
  9.  
  10.     <tr bgcolor='<?php echo $color; ?>' onmouseover="this.style.background='#ABFB04';" onmouseout="this.style.background='<?php echo $color; ?>';">
  11.     <?php
  12.  
  13. echo "<td class=tablelist>";
  14.  
  15. echo $row["ICAO"] . '</td><td class=tablelist>';
  16.  
  17. echo $row["Name"] . '</td><td class=tablelist>';
  18.  
  19. echo $row["WeightEmpty"] . '</td><td class=tablelist>';
  20.  
  21. echo $row["WeightFull"] . '</td><td class=tablelist>';
  22.  
  23. echo $row["CargoFull"] . '</td><td class=tablelist>';
  24.  
  25. echo $row["Range"] . '</td><td class=tablelist>';
  26.  
  27. echo $row["Price"] . '</td><td class=tablelist>';
  28.  
  29. echo $row["FirstClassSeats"] . '</td><td class=tablelist>';
  30.  
  31. echo $row["BusinessClassSeats"] . '</td><td class=tablelist>';
  32.  
  33. echo $row["EconomyClassSeats"]. '</td><td class=tablelist>';
  34.  
  35. echo "<img class='editaircraft' src='./images/info.png'></td></tr>";
  36.  
  37. ?>
  38. <script>
  39.     $(function() {
  40.         $( "#editaircraftdialog" ).dialog({
  41.             autoOpen: false,
  42.             width: 425
  43.         });
  44.  
  45.         $( ".editaircraft" ).click(function() {
  46.             $( "#editaircraftdialog" ).dialog( "open" );
  47.             return false;
  48.         });
  49.     });
  50. </script>
  51.  
  52. <div id="editaircraftdialog" title="Edit Aircraft">
  53.     <?php require_once('./edit_aircraft.php?icao=1'); ?>
  54. </div>
  55.  
  56. <?php
  57. }
  58.  
  59. echo "</table>";
  60. $pagination->render();
  61. ?>

El problema es que cuando llega al require_once es como si el while finalizase. Por supuesto que finaliza la primera vez, por lo que solo me muestra un resultado y no los 3 que debería.

El error que me da al abrir el dialog en la primera línea de la tabla (ya que solo hay esa) es este:

Cita:
Warning: require_once(./edit_aircraft.php?icao=1): failed to open stream: No such file or directory in C:\xampp\htdocs\airvirtus\albrep\aircrafts_list.ph p on line 135

Fatal error: require_once(): Failed opening required './edit_aircraft.php?icao=1' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\airvirtus\albrep\aircrafts_list.ph p on line 135
Y si, el aircraft_list.php (la parte de código de arriba pertenece a este archivo) y el edit_aircraft.php están en el mismo directorio.
  #2 (permalink)  
Antiguo 07/01/2013, 12:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema con require_once

Las variables entre includes son globales, de modo que no hace falta pasar nada como lo haces.

Piensa que lo que include necesita es la ruta de un archivo, y tu, al agregarle seudo variables pues arruinas la ruta del archivo y por ende no existe.

a.php
Código PHP:
// MAL
include 'candy.php?foo=bar';

// BIEN
$foo 'bar';
include 
'candy.php'
candy.php
Código PHP:
echo $foo// bar 
Consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/01/2013, 13:00
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 1 mes
Puntos: 81
Respuesta: Problema con require_once

Prueba sacandole el ./ al require.

Saludos!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #4 (permalink)  
Antiguo 07/01/2013, 13:16
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por pateketrueke Ver Mensaje
Las variables entre includes son globales, de modo que no hace falta pasar nada como lo haces.

Piensa que lo que include necesita es la ruta de un archivo, y tu, al agregarle seudo variables pues arruinas la ruta del archivo y por ende no existe.

a.php
Código PHP:
// MAL
include 'candy.php?foo=bar';

// BIEN
$foo 'bar';
include 
'candy.php'
candy.php
Código PHP:
echo $foo// bar 
Consulta el manual.
Ok, funciona.

Ahora tengo otro problema. Si le pongo texto en vez del require_once no pasa, pero si le pongo el require_once en vez de mostrarseme el contenido del require_once (es un formulario) dentro del dialog se me muestra como si fuese fuera de un dialog. Aparece a continuación de la tabla.

Sin embargo si el <div> del dialog lo pongo fuera del while funciona bien.
  #5 (permalink)  
Antiguo 07/01/2013, 13:50
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Poner include en while?

Cómo puedo poner un include en un while?
  #6 (permalink)  
Antiguo 07/01/2013, 14:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Poner include en while?


Código PHP:
while (/* algo */) {
  include 
'foo.php';

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 07/01/2013, 14:11
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 4 meses
Puntos: 168
Respuesta: Poner include en while?

Tal vez primero tendrías que aprender en verdad ¿qué es while? porque esa pregunta tuya me da a entender que no entiendes en realidad lo que es while.

Dentro de while pones lo que se te cante, así nomas, lo que quieras, while es una estructura de repetición de código, todo lo que esté entre las llaves que abre el while { } se repetirá mientras la condición que esté entre paréntesis ( ) sea TRUE o sea VERDADERA.

http://php.net/manual/es/control-structures.while.php
  #8 (permalink)  
Antiguo 07/01/2013, 14:21
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Por qué pasa esto?

Buenas,

Tengo esto:

Código PHP:
Ver original
  1. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  2.     if($i++%2==0){
  3.        $color="#FFFFFF";
  4.     }else{
  5.        $color="#CCCCCC";
  6.     }
  7.  
  8.     ?>
  9.  
  10.     <tr bgcolor='<?php echo $color; ?>' onmouseover="this.style.background='#ABFB04';" onmouseout="this.style.background='<?php echo $color; ?>';">
  11.     <?php
  12.  
  13. echo "<td class=tablelist>";
  14.  
  15. echo $row["ICAO"] . '</td><td class=tablelist>';
  16.  
  17. echo $row["Name"] . '</td><td class=tablelist>';
  18.  
  19. echo $row["WeightEmpty"] . '</td><td class=tablelist>';
  20.  
  21. echo $row["WeightFull"] . '</td><td class=tablelist>';
  22.  
  23. echo $row["CargoFull"] . '</td><td class=tablelist>';
  24.  
  25. echo $row["Range"] . '</td><td class=tablelist>';
  26.  
  27. echo $row["Price"] . '</td><td class=tablelist>';
  28.  
  29. echo $row["FirstClassSeats"] . '</td><td class=tablelist>';
  30.  
  31. echo $row["BusinessClassSeats"] . '</td><td class=tablelist>';
  32.  
  33. echo $row["EconomyClassSeats"]. '</td><td class=tablelist>';
  34.  
  35. echo "<img class='editaircraft' src='./images/info.png'></td></tr>";
  36.  
  37. ?>
  38. <script>
  39.     $(function() {
  40.         $( "#editaircraftdialog" ).dialog({
  41.             autoOpen: false,
  42.             width: 425
  43.         });
  44.  
  45.         $( ".editaircraft" ).click(function() {
  46.             $( "#editaircraftdialog" ).dialog( "open" );
  47.             return false;
  48.         });
  49.     });
  50. </script>
  51.  
  52. <div id="editaircraftdialog" title="Edit Aircraft">
  53.     <?php include('./new_aircraft.php'); ?>
  54. </div>
  55.  
  56. <?php
  57. }
  58.  
  59. echo "</table>";
  60. $pagination->render();
  61. ?>

El problema es que el include no se me muestra dentro del diálogo JQuery y el contenido de este se muestra fuera. Así:



Si sustituyo el include por texto o si pongo el <div> fuera del while no pasa nada.

El while al llegar al <div> se para!
  #9 (permalink)  
Antiguo 07/01/2013, 15:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema con require_once

A ver, ¿te has puesto a revisar el código HTML que se genera en tu navegador?

Yo veo ningún problema con PHP, simplemente el include se carga donde tu le has indicado, y eso está bien.

Lo primero que dices es que ¿tiene que ver con jQuery?

Bien, si tu primera impresión es que dicho diálogo no se vea en tu pagina podrías ocultarlo con CSS.

¿Sabes si funciona el diálogo o no si pones HTML normal en lugar del include?

Algo muy importante que te está pasando es que repites todo dentro del ciclo, y debes saber que los ID de los elementos de HTML debe ser único, con lo cual rompes dicha regla.

Así también repites código Javascript sin sentido.

Primero deberías de hacer el ejercicio sin usar PHP, únicamente con HTML y Javascript, cuando funcione será mas sencillo entender lo que te sucede.

Que en breve, ya nada tiene que ver con PHP.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 07/01/2013, 15:22
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por pateketrueke Ver Mensaje
A ver, ¿te has puesto a revisar el código HTML que se genera en tu navegador?

Yo veo ningún problema con PHP, simplemente el include se carga donde tu le has indicado, y eso está bien.

Lo primero que dices es que ¿tiene que ver con jQuery?

Bien, si tu primera impresión es que dicho diálogo no se vea en tu pagina podrías ocultarlo con CSS.

¿Sabes si funciona el diálogo o no si pones HTML normal en lugar del include?

Algo muy importante que te está pasando es que repites todo dentro del ciclo, y debes saber que los ID de los elementos de HTML debe ser único, con lo cual rompes dicha regla.

Así también repites código Javascript sin sentido.

Primero deberías de hacer el ejercicio sin usar PHP, únicamente con HTML y Javascript, cuando funcione será mas sencillo entender lo que te sucede.

Que en breve, ya nada tiene que ver con PHP.
Creo que tiene que ver con PHP, porque si en lugar de el include pongo código php todo funciona bien. Y si el include lo pongo fuera del bucle también todo funciona bien (el include es necesario que esté dentro del bucle).

He modificado el archivo dejándolo así:
Código PHP:
Ver original
  1. <script>
  2.     $(function() {
  3.         $( ".editaircraftdialog" ).dialog({
  4.             autoOpen: false,
  5.             width: 425
  6.         });
  7.  
  8.         $( ".editaircraft" ).click(function() {
  9.             $( ".editaircraftdialog" ).dialog( "open" );
  10.             return false;
  11.         });
  12.     });
  13. </script>
  14. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  15.     if($i++%2==0){
  16.        $color="#FFFFFF";
  17.     }else{
  18.        $color="#CCCCCC";
  19.     }
  20.  
  21.     ?>
  22.  
  23.     <tr bgcolor='<?php echo $color; ?>' onmouseover="this.style.background='#ABFB04';" onmouseout="this.style.background='<?php echo $color; ?>';">
  24.     <?php
  25.  
  26. echo "<td class=tablelist>";
  27.  
  28. echo $row["ICAO"] . '</td><td class=tablelist>';
  29.  
  30. echo $row["Name"] . '</td><td class=tablelist>';
  31.  
  32. echo $row["WeightEmpty"] . '</td><td class=tablelist>';
  33.  
  34. echo $row["WeightFull"] . '</td><td class=tablelist>';
  35.  
  36. echo $row["CargoFull"] . '</td><td class=tablelist>';
  37.  
  38. echo $row["Range"] . '</td><td class=tablelist>';
  39.  
  40. echo $row["Price"] . '</td><td class=tablelist>';
  41.  
  42. echo $row["FirstClassSeats"] . '</td><td class=tablelist>';
  43.  
  44. echo $row["BusinessClassSeats"] . '</td><td class=tablelist>';
  45.  
  46. echo $row["EconomyClassSeats"]. '</td><td class=tablelist>';
  47.  
  48. echo "<img class='editaircraft' src='./images/info.png'></td></tr>";
  49.  
  50. ?>
  51.  
  52. <div class="editaircraftdialog" title="Edit Aircraft">
  53.     <?php include ('./new_aircraft.php'); ?>
  54. </div>
  55.  
  56. <?php
  57. }
  58.  
  59. echo "</table>";
  60. $pagination->render();
  61. ?>

El error lo dá, pero así no repito código tontamente. Os repito si en vez del include pongo esto:

Código HTML:
Ver original
  1. <p>Hola Mundo</p>

Funciona todo bien!!

Os dejo el archivo new_aircraft.php para saber si os sirve de algo.

Código PHP:
Ver original
  1. <script>
  2.     $(function() {
  3.         $("#insertaircraft")
  4.             .button()
  5.             .click(function(event) {
  6.         });
  7.     });
  8. </script>
  9.  
  10. <form action="new_aircraft_process.php" method="post" enctype="application/x-www-form-urlencoded">
  11.     <table>
  12.  
  13.     <tr><td class="forms">ICAO:</td><td><input maxlength="4" type="text" name="icao" size="30"/></td></tr>
  14.  
  15.     <tr><td class="forms">Name:</td><td><input type="text" name="name" size="30"/></td></tr>
  16.  
  17.     <tr><td class="forms">Weight Empty:</td><td><input type="text" name="weightempty" size="30"/></td></tr>
  18.  
  19.     <tr><td class="forms">Weight Full:</td><td><input type="text" name="weightfull" size="30"/></td></tr>
  20.  
  21.     <tr><td class="forms">Cargo Full:</td><td><input type="text" name="cargofull" size="30"/></td></tr>
  22.  
  23.     <tr><td class="forms">Cruise Speed:</td><td><input type="text" name="cruisespeed" size="30"/></td></tr>
  24.  
  25.     <tr><td class="forms">Range:</td><td><input type="text" name="range" size="30"/></td></tr>
  26.  
  27.     <tr><td class="forms">Price:</td><td><input type="text" name="price" size="30"/></td></tr>
  28.  
  29.     <tr><td class="forms">Number Classes:</td><td><select name="numberclasses" id="numberclasses">
  30.         <option value="0">Select Number of Classes</option>
  31.         <?php
  32.         echo '<option value="1">One Classes (Economy)</option>';
  33.         echo '<option value="2">Two Classes (Business & Economy)</option>';
  34.         echo '<option value="3">Three Classes (First, Business & Economy)</option>';
  35.         ?>
  36.     </select></td></tr>
  37.  
  38.  
  39.  
  40.     <tr><td class="forms">First Class Seats:</td><td><input disabled="disabled" type="text" id="firstclassseats" name="firstclassseats" size="30"/></td></tr>
  41.  
  42.     <tr><td class="forms">Business Class Seats:</td><td><input disabled="disabled" type="text" id="businessclassseats" name="businessclassseats" size="30"/></td></tr>
  43.  
  44.     <tr><td class="forms">Economy Class Seats:</td><td><input disabled="disabled" type="text" id="economyclassseats" name="economyclassseats" size="30"/></td></tr>
  45.  
  46. <script type="text/javascript">
  47.  
  48. $("#numberclasses").change(function() {
  49. value = $(this).val();
  50.  
  51. str = parseInt(value);
  52.  
  53. switch(str)
  54.   {
  55.     case 0:
  56.     $(document).ready(function() {
  57.         $("#firstclassseats").attr("disabled","disabled");
  58.         $("#businessclassseats").attr("disabled","disabled");
  59.         $("#economyclassseats").attr("disabled","disabled");
  60. });
  61.     break;
  62.  
  63.     case 1:
  64.     $(document).ready(function() {
  65.         $("#economyclassseats").removeAttr('disabled');
  66.         $("#firstclassseats").attr("disabled","disabled");
  67.         $("#businessclassseats").attr("disabled","disabled");
  68. });
  69.     break;
  70.  
  71.      case 2:
  72.     $(document).ready(function() {
  73.         $("#businessclassseats").removeAttr('disabled');
  74.         $("#economyclassseats").removeAttr('disabled');
  75.         $("#firstclassseats").attr("disabled","disabled");
  76. });
  77.     break;
  78.  
  79.     case 3:
  80.     $(document).ready(function() {
  81.         $("#firstclassseats").removeAttr('disabled');
  82.         $("#businessclassseats").removeAttr('disabled');
  83.         $("#economyclassseats").removeAttr('disabled');
  84. });
  85.     break;
  86.  
  87.   }
  88. });
  89.  
  90. </script>
  91.  
  92.     <tr><td></td><td><input id="insertaircraft" type="submit" value="Insert Aircraft"/></td></tr>
  93.     </table>
  94. </form>

PD: Acabo de comprobar que ahora se muestra como la esta imagen:

Si pulso en la imagen info.png (donde se debería mostrar el dialog), se despliegan 3(número de veces que se tiene que realizar el while porque hay 3 resultados en la db) dos con el contenido del new_aircraft.php pero el último en mostrarse(o el 1ero porque realmente está debajo de los otros dos) vacío.
  #11 (permalink)  
Antiguo 07/01/2013, 15:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

¿Haz revisado el HTML generado? (botón derecho en tu navegador -> ver código fuente)
  #12 (permalink)  
Antiguo 07/01/2013, 16:08
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Problema con require_once

Comienzo a creer que el problema del include dentro del while si puede deberse al código del include mismo.

Pero, ¿qué hay ahí?

Es complicado adivinar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 07/01/2013, 16:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

Yo creo es importante ver el código HTML generado, ya que es probable que hay algo que no nos dice, ya que tal cual lo pone debe de funcionar bien.
  #14 (permalink)  
Antiguo 08/01/2013, 08:35
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
Yo creo es importante ver el código HTML generado, ya que es probable que hay algo que no nos dice, ya que tal cual lo pone debe de funcionar bien.
Aquí tienes el código fuente: https://www.mycodestock.com/code/8036/

No lo pongo aquí porque no me deja, dice que son demasiados caracteres.
  #15 (permalink)  
Antiguo 08/01/2013, 09:16
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

He descubierto algo. Si lo pongo en un for aparte del while funciona bien solo que salen tres dialogos por cada click en la imagen (info.png). Entonces no me cabe duda de que eso tiene que ir fuera del while y de un for.

Pero es que realmente necesito un dato de los que se muestra en el while porque es un botón de editar y logicamente no puedes editar lo mismo pulsando en la primera columna que en la última ya que los datos varían. Por lo que necesito un dato de cada fila para hacer un query en el archivo que al que se le hace el include.
  #16 (permalink)  
Antiguo 08/01/2013, 10:00
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Vale, me voy a explicar bien porque ahora he descubierto el verdadero problema.

Tengo esta tabla:



El problema es que al clickear en cualquiera de los botones (claramente señalado en la imagen anterior hay uno por línea) se abren tantos JQuery Dialog como se repite el bucle (en este caso 3).

Yo solo quiero que se abra uno por botón, entonces diréis, fácil quita el <div> con el contenido del JQuery Dialog del bucle. Pero no puedo hacer eso porque ese botón es para editar el contenido de la línea de la tabla. Por lo que necesito un dato de la vez que se hace el while. Ej: Tengo números 1, 2, 3 y al pulsar el botón si es la primera línea con el ID 1 busco en la tabla los resultados y genero el form que se muestra en el dialog para editar ESA LÍNEA DE LA TABLA EN LA QUE SE ENCUENTRA EL BOTÓN Y NO LAS DEMÁS.

Lo siento, explicarme no es lo mío, lo que no entendáis decirlo.

PD: Parte del código, si necesitáis más decirlo también:

Código PHP:
Ver original
  1. <script>
  2.     $(function() {
  3.         $( ".editaircraftdialog" ).dialog({
  4.             autoOpen: false,
  5.             width: 425
  6.         });
  7.  
  8.         $( ".editaircraft" ).click(function() {
  9.             $( ".editaircraftdialog" ).dialog( "open" );
  10.             return false;
  11.         });
  12.     });
  13. </script>
  14.  
  15. while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
  16.     if($i++%2==0){
  17.        $color="#FFFFFF";
  18.     }else{
  19.        $color="#CCCCCC";
  20.     }
  21.  
  22.     ?>
  23.  
  24.     <tr bgcolor='<?php echo $color; ?>' onmouseover="this.style.background='#ABFB04';" onmouseout="this.style.background='<?php echo $color; ?>';">
  25.     <?php
  26.  
  27. echo "<td class=tablelist>";
  28.  
  29. echo $row["ICAO"] . '</td><td class=tablelist>';
  30.  
  31. echo $row["Name"] . '</td><td class=tablelist>';
  32.  
  33. echo $row["WeightEmpty"] . '</td><td class=tablelist>';
  34.  
  35. echo $row["WeightFull"] . '</td><td class=tablelist>';
  36.  
  37. echo $row["CargoFull"] . '</td><td class=tablelist>';
  38.  
  39. echo $row["Range"] . '</td><td class=tablelist>';
  40.  
  41. echo $row["Price"] . '</td><td class=tablelist>';
  42.  
  43. echo $row["FirstClassSeats"] . '</td><td class=tablelist>';
  44.  
  45. echo $row["BusinessClassSeats"] . '</td><td class=tablelist>';
  46.  
  47. echo $row["EconomyClassSeats"]. '</td><td class=tablelist>';
  48. ?>
  49.  
  50.  
  51. <div class="editaircraftdialog" title="Edit Aircraft">
  52.     <?php echo $row["EconomyClassSeats"]; ?>
  53. </div>
  54.  
  55. <?php
  56. echo "<img class='editaircraft' src='./images/info.png'></td></tr>";
  57.  
  58.  
  59. }
  60.  
  61. echo "</table>";
  62. $pagination->render();
  63. ?>
  #17 (permalink)  
Antiguo 08/01/2013, 10:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

Lo que pasa entonces es que necesitas traer los datos por AJAX al hacer click, no puedes imprimir todo en el mismo momento.

Tienes que más bien crear tu formulario y tu dialog en el HTML, luego dibujar la tabla y por cada vuelta agregas un link, luego con Javascript capturas el link, haces un request con AJAX, traes los datos para editar, los insertas en el formulario y luego abres el dialog.

Saludos.
  #18 (permalink)  
Antiguo 08/01/2013, 10:48
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
Lo que pasa entonces es que necesitas traer los datos por AJAX al hacer click, no puedes imprimir todo en el mismo momento.

Tienes que más bien crear tu formulario y tu dialog en el HTML, luego dibujar la tabla y por cada vuelta agregas un link, luego con Javascript capturas el link, haces un request con AJAX, traes los datos para editar, los insertas en el formulario y luego abres el dialog.

Saludos.
Me podrías poner un ejemplo de lo más sencillo para que lo entienda bien?
  #19 (permalink)  
Antiguo 08/01/2013, 10:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

Pues simple, solamente puedes usar un <input type="file"> por cada archivo que quieras "mandar", si quieres enviar muchos, genera (usando JS) los input files que necesites, o usa el de multiple, pero ten en cuenta que solo se va a enviar los archivos que estén en cada input.

Saludos.
  #20 (permalink)  
Antiguo 08/01/2013, 11:11
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
Pues simple, solamente puedes usar un <input type="file"> por cada archivo que quieras "mandar", si quieres enviar muchos, genera (usando JS) los input files que necesites, o usa el de multiple, pero ten en cuenta que solo se va a enviar los archivos que estén en cada input.

Saludos.
Pues por lo tanto el dialog tiene que quedar fuera del while y luego creo un input tipo file con el dato que quiero enviar. Así no?

Código PHP:
Ver original
  1. echo '<input type="file">$row["ICAO"]</input>';
  #21 (permalink)  
Antiguo 08/01/2013, 11:56
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

Perdón creo el último mensaje se "colo" de otro post, no tengo un ejemplo como tal a la mano, pero puedes buscar en Google, tienes que hacer un request con AJAX a un archivo en tu servidor, traer los datos que vas a modificar e inyectarlos en tu formulario, como usas jQuery es más sencillo aún, un ejemplo simple:
Código Javascript:
Ver original
  1. $.ajax({
  2.   type: "POST",
  3.   url: "script.php",
  4.   data: { id: el_id_de_tu_row }
  5. }).done(function( data ) {
  6.   $('#alguninput').val(data);
  7. });

Saludos.
  #22 (permalink)  
Antiguo 08/01/2013, 13:47
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
Perdón creo el último mensaje se "colo" de otro post, no tengo un ejemplo como tal a la mano, pero puedes buscar en Google, tienes que hacer un request con AJAX a un archivo en tu servidor, traer los datos que vas a modificar e inyectarlos en tu formulario, como usas jQuery es más sencillo aún, un ejemplo simple:
Código Javascript:
Ver original
  1. $.ajax({
  2.   type: "POST",
  3.   url: "script.php",
  4.   data: { id: el_id_de_tu_row }
  5. }).done(function( data ) {
  6.   $('#alguninput').val(data);
  7. });

Saludos.
Ahh vale, esto ya lo he hecho en otras ocasiones. Eso de AJAX ya lo conozco.

Ahora mi pregunta es, yo tengo un formulario php que el mismo ya coge los datos, pero claro al no tener un dato referencia no funciona, como exlique un par de mensajes más arriba, este ya no sirve? Lo tengo que hacer todo en AJAX? Otra cosa cómo sé que datos tiene que coger el formulario AJAX si no tiene un dato de referencia? Además, esto evitará que se muestren tes dialogs o es que el <div> con el continido del dialog está fuera del while?
  #23 (permalink)  
Antiguo 08/01/2013, 13:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

Pues la idea es que sí tengas precisamente un dato de referencia, como un ID bajo el que puedas consultar, ya que es la forma adecuada para que puedas cargar y guardar el dato ¿no crees?
  #24 (permalink)  
Antiguo 08/01/2013, 14:02
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
Pues la idea es que sí tengas precisamente un dato de referencia, como un ID bajo el que puedas consultar, ya que es la forma adecuada para que puedas cargar y guardar el dato ¿no crees?
Pero es que entonces tengo que poner el dialog en el while y volvemos al problema de que cuando clicko salen 3 dialogs.
  #25 (permalink)  
Antiguo 08/01/2013, 14:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

No, el formulario y todo tiene que ir fuera del while, por favor trata de pensar solo un poco, tienes que dibujar toda tu tabla, y hasta al final el formulario.

Lo que puedes hacer para que entiendas como funciona es olvidar todo lo de jQuery y haz algo sencillo, imprime tu tabla en HTML, al final añade un link para editar, y pasale el id de la fila actual.

Luego cuando presiones el link, revisa si existe el id, cargas datos, dibujas el formulario con los datos del id y listo.

El pseudocódigo es algo así:
Código:
si es POST
	actualizarDatos(POST)
	redirigir
end si

dibujarHeader()
dibujarTablaDatos()

si existe id en GET
	datos = cargarDatos(id)
	dibujarFormulario(datos)
end si

dibujarFooter()
Así el while solamente es parte de dibujarTablaDatos() lo demás queda fuera del while, y solamente dibujas un formulario, con los datos de la fila actual.

Ya que puedas generar eso, ya le agregas todo el jQuery que quieras y el dinamismo que necesites, pero primero tienes que llegar a ese funcionamiento básico para que entiendas mejor como es que debe de funcionar el flujo de datos de tu sistema.

Saludos.
  #26 (permalink)  
Antiguo 08/01/2013, 14:39
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Pregunta Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
No, el formulario y todo tiene que ir fuera del while, por favor trata de pensar solo un poco, tienes que dibujar toda tu tabla, y hasta al final el formulario.

Lo que puedes hacer para que entiendas como funciona es olvidar todo lo de jQuery y haz algo sencillo, imprime tu tabla en HTML, al final añade un link para editar, y pasale el id de la fila actual.

Luego cuando presiones el link, revisa si existe el id, cargas datos, dibujas el formulario con los datos del id y listo.

El pseudocódigo es algo así:
Código:
si es POST
	actualizarDatos(POST)
	redirigir
end si

dibujarHeader()
dibujarTablaDatos()

si existe id en GET
	datos = cargarDatos(id)
	dibujarFormulario(datos)
end si

dibujarFooter()
Así el while solamente es parte de dibujarTablaDatos() lo demás queda fuera del while, y solamente dibujas un formulario, con los datos de la fila actual.

Ya que puedas generar eso, ya le agregas todo el jQuery que quieras y el dinamismo que necesites, pero primero tienes que llegar a ese funcionamiento básico para que entiendas mejor como es que debe de funcionar el flujo de datos de tu sistema.

Saludos.
Ok, lo que no entiendo es como recoger los datos me explico. Siento liarte tanto, si yo pulso en el botón editar, cómo sabe que ID coger? No entiendo como sabe que tiene que coger el id de esa y no el de la última. Usualmente utilizas un while para obtener los datos de una fila ¿qué tengo que usar para que averigue el id de esa fila? Ten encuenta que es dinámico, los datos vienen de una db MYSQL y hoy hay tres rusaltudas pero mañana puede haber cuatro o cinco.

Saludos y gracias por la ayuda (ya sé que soy muy pesado jeje),
  #27 (permalink)  
Antiguo 08/01/2013, 14:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

Pues no es que sepa, tú le tienes que decir cual, y depende de la estructura de tu BDD, tienes que usar generalmente el primary key ya que así es más fácil y rápido consultar, pero no es necesario, un ejemplo:
Código PHP:
Ver original
  1. // suponiendo una tabla con dos campos, id (primary) y name
  2. while ($row = mysql_fetch_assoc($result)) {
  3.       echo $row['id'];
  4.       echo $row['name'];
  5.       echo "<a href=\"edit.php?id={$row['id']}\">Editar</a>";
  6. }
  7.  
  8. if (isset($_GET['id']) && !empty($_GET['id']) {
  9.        $id = (int) $_GET['id'];
  10.        $query = "SELECT * FROM tabla WHERE `id`={$id}";
  11.        // conectas, ejecutas y descargas
  12. }
  #28 (permalink)  
Antiguo 08/01/2013, 15:05
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
Pues no es que sepa, tú le tienes que decir cual, y depende de la estructura de tu BDD, tienes que usar generalmente el primary key ya que así es más fácil y rápido consultar, pero no es necesario, un ejemplo:
Código PHP:
Ver original
  1. // suponiendo una tabla con dos campos, id (primary) y name
  2. while ($row = mysql_fetch_assoc($result)) {
  3.       echo $row['id'];
  4.       echo $row['name'];
  5.       echo "<a href=\"edit.php?id={$row['id']}\">Editar</a>";
  6. }
  7.  
  8. if (isset($_GET['id']) && !empty($_GET['id']) {
  9.        $id = (int) $_GET['id'];
  10.        $query = "SELECT * FROM tabla WHERE `id`={$id}";
  11.        // conectas, ejecutas y descargas
  12. }
Entonces tiene que quedar así:

Código PHP:
Ver original
  1. if (isset($_GET['icao']) && !empty($_GET['icao']) {
  2.        $icao = (int) $_GET['icao'];
  3.       include('./edit_aircraft.php')
  4. }

Y luego dónde creo el input que tengo que sustituir en AJAX? Por qué lo sustituyo? por el <div> con del dialog? Y para que pones el edit.php?id={$row['id']}? Supongo que será para enviar el dato, pero ese archivo que le pongo? Le tendré que poner un class o un id al link para que abra el dialog no¿?
  #29 (permalink)  
Antiguo 08/01/2013, 21:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Problema con require_once

No, creo que no estas leyendo lo que te indico, vuelve a leer el mensaje, analiza el flujo y ve lo que tienes que hacer para saber como dibujar el formulario, ahorita no estoy hablando nada de AJAX, el chiste es que aprendas a hacerlo primero plano usando requests normales, ya que veas como funciona, entonces ya le integras el AJAX que quieras.

Saludos.
  #30 (permalink)  
Antiguo 09/01/2013, 05:02
 
Fecha de Ingreso: junio-2011
Mensajes: 342
Antigüedad: 12 años, 9 meses
Puntos: 5
Exclamación Respuesta: Problema con require_once

Cita:
Iniciado por GatorV Ver Mensaje
No, creo que no estas leyendo lo que te indico, vuelve a leer el mensaje, analiza el flujo y ve lo que tienes que hacer para saber como dibujar el formulario, ahorita no estoy hablando nada de AJAX, el chiste es que aprendas a hacerlo primero plano usando requests normales, ya que veas como funciona, entonces ya le integras el AJAX que quieras.

Saludos.
Vale, lo voy a hacer más sencillo porque si no es imposible:

La db contiene un tabla llamada paises y una única columna llamada pais. Tiene tres filas: una Spain, otra USA y otra China. La idea es poder cambiar el nombre del pais.

El archivo principal con la tabla:

Código PHP:
Ver original
  1. $query=mysql_result(SELECT * FROM paises)
  2.  
  3. while ($row = mysql_fetch_assoc($query)) {
  4.       echo $row['pais'];
  5.       echo "<a href=\"edit.php?id={$row['pais']}\">Editar</a>";
  6. }
  7.  
  8. if (isset($_GET['pais']) && !empty($_GET['pais']) {
  9.        $id = (int) $_GET['pais'];
  10.        //aquí está el archivo PHP con todo listo para editar solo necesita el dato referencia
  11. }
  12.  
  13. //Aqui tiene que estar el <div> con el dialog

Ahora supuestamete (o eso entiendo) tengo que poner en el archivo edit.php algo para que me capture el pais. Esto vale?

Código PHP:
Ver original
  1. $pais=$_REQUEST["pais"];

Luego ese resultado se supone que tiene que volver, como?

Y luego tengo que añadir ese resultado al <div> no¿?

Última edición por carlosuc99; 09/01/2013 a las 08:51

Etiquetas: include, mysql, tabla
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 08:20.