Foros del Web » Programando para Internet » PHP »

Problema con Foreach()

Estas en el tema de Problema con Foreach() en el foro de PHP en Foros del Web. hola les escribo, porque estoy con algunos problemas con el update de una base de datos... ahora explicare: tengo una casede datos que tiene codclase, ...
  #1 (permalink)  
Antiguo 10/06/2005, 10:08
 
Fecha de Ingreso: febrero-2005
Ubicación: chile, Santiasko
Mensajes: 728
Antigüedad: 19 años, 2 meses
Puntos: 1
Problema con Foreach()

hola les escribo, porque estoy con algunos problemas con el update de una base de datos...

ahora explicare:
tengo una casede datos que tiene codclase, username, respuesta y pregunta.. para resumir... la cosa es que un usuario puede tener 5 respuestas de esas puede que 3 ya estan respondida por el usuario.. y 2 no todavia, asi que cuando el usuario no tiene nada en respuesta aparece un textbox y si tiene la respuesta aparece obviamente la respuesta... eso ya lo hise y me esta funcionando bien..

ahora el dilema... como uso recorcount y me arroja toda las respuestas la caja de texto tiene el mismo nombre para todo las respuestas.. y me dijeron que tenia que hacerlo con un foreach...

averigue y averigue... y todavia no entiendo....

aqui esta mi codigo... porfis ayudenme
Código PHP:
<?php
include "pagina.inc.php";
$username='yokoshima';
$codclase='5';
$contenido='';
$db=conexion();

//Identificacion
$sql=" select c.identificacion
from clase c, profesor_clase pc, pregunta p
where pc.username= '"
.$username."'
and pc.codclase= c.codclase
and c.codclase = p.codclase
and c.codclase = '"
.$codclase."' ";
$rs=$db->Execute($sql);

$clase=$rs->Fields("identificacion");

//Preguntas Clase
$sql1=" select p.alu_username, p.fecha_pregunta, p.pregunta, p.tipo_pregunta, p.fecha_respuesta, p.respuesta
from clase c, profesor_clase pc, pregunta p
where pc.username= '"
.$username."'
and pc.codclase= c.codclase
and c.codclase = p.codclase
and c.codclase = '"
.$codclase."' ";
$rs1=$db->Execute($sql1);

        
$alu_username=$rs1->Fields("alu_username");
        
$tipo_pregunta=$rs1->Fields("tipo_pregunta");

$fila3='';
if (
$rs1){
    if (
$rs1->RecordCount() > 0){
        while (!
$rs1->EOF){
        
$respuesta=$rs1->Fields("respuesta");
          if (
strlen($respuesta)==0){
            
$respuestax='<input type="text"  size="70" name="respuestax[]" ><input type="hidden" name="codclase[]"  value="'.$clase.'"> ';
           
//$respuestax='<input type="text"  size="70" name="respuestax">';
          
}else{
            
$respuestax=$respuesta
           }
           
$fecha_pregunta=$rs1->Fields("fecha_pregunta");
           
$pregunta=$rs1->Fields("pregunta");
           
$fecha_respuesta=$rs1->Fields("fecha_respuesta");
            
$fila3.=' <tr>
 <td>Clase:</td>
 <td>'
.$clase.'</td>
 <td>&nbsp;</td>
 <td>&nbsp;</td>
 <td>&nbsp;</td>
 </tr>
 
<tr>
<td>Publicado por:</td>
<td>'
.$alu_username.'</td>
<td>&nbsp;</td>
<td>Tipo pregunta:</td>
<td>'
.$tipo_pregunta.'</td>
</tr> 

<tr>
<td nowrap>Fecha publicacion:</td>
  <td nowrap>'
.$fecha_pregunta.'</td>
<td nowrap>&nbsp;</td>
<td nowrap>Fecha respuesta:</td>
<td nowrap>'
.$fecha_respuesta.'</td>
</tr> 

<tr>
<td>Consulta:</td>
<td>'
.$pregunta.'</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr> 

<tr>
<td>Respuesta:</td>
<td colspan="4">'
.$respuestax.'</td>
</tr>'
;
            
$rs1->movenext();
        }
    }
}


$guardar=$_POST['guardar'];
$datos='';
if(
strlen($guardar)==0$guardar=0;
         if(
$guardar){
         
$fechamodif=date('Y-m-d H:i:s');
         
$respuestaT=$_POST['respuestax'];        
         
$clase=$_POST['codclase']; 

            
$i=0;
            foreach (
$clase as $respuestaT){
             
$respuestaT1=$respuestaT[$i];
            
$sql4="update pregunta set respuesta='".$respuestaT1."', fecha_respuesta='".$fechamodif."' where codclase='".$codclase."'";
            
$rs4=$db->execute($sql4);
             
$i=$i+1;
             }
             }
$contenido=' <p><h2><b>Consultas</b></h2></p>
<table  width="100%" border="0" cellpadding="0" cellspacing="0">
'
.$fila3.'
</table><br> <br>
<table  width="100%" border="0" cellpadding="0" cellspacing="0">
'
.$fila4.'
</table> 
 '
;

$contenido=' <form name="frm_publicar" method="post" action="'.$pagina.'">
'
.$contenido.'

<p><input type="button" name="Button" value="Guardar" onClick="javascript:document.forms[0].guardar.value=1;this.form.submit();" >
<input name="guardar" type="hidden" id="guardar" value="0"></p>'
;
    
echo 
$contenido;

?>
como ven tengo problemas con el foreach... solo me graba o me repite el ultimo valor de la caja de texto.... osea si dentro de todas las respuesta del usuario solo 4 no tiene respondidas me aparecen todas sus respuestas con la caja de texto y hay coloco la respuesta pero me repite en todas despues cuando quiero verla...

ojala me ayuden si no entienden me preguntan y asi ojala hacer eso....


salu2
__________________
Una Vez Muerto el Perro.............Se acaba la Rabia :risa:
  #2 (permalink)  
Antiguo 10/06/2005, 11:55
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
si dentro del foreach hicieras
Código PHP:
echo "{$sql4}<br />"
te darias cuenta que los valores que estás accediendo son incorrectos. Lee la documentación de php sobre foreach() y podrás apreciar que no es necesario tu contador $i;

saludos
  #3 (permalink)  
Antiguo 10/06/2005, 12:29
 
Fecha de Ingreso: febrero-2005
Ubicación: chile, Santiasko
Mensajes: 728
Antigüedad: 19 años, 2 meses
Puntos: 1
con este codigo:
Código PHP:
$guardar=$_POST['guardar'];
$datos='';
if(
strlen($guardar)==0$guardar=0;
         if(
$guardar){
         
$fechamodif=date('Y-m-d H:i:s');
         
$respuestaT=$_POST['respuestax'];        
         
$clase=$_POST['codclase']; 
        
print_r($respuestaT);
        
print_r($codclase);
             
$i=0;
            foreach (
$clase as $codigo){
             
$codigo=$respuestaT[$i];
             echo 
"{$sql4}<br />"
             
$sql4="update pregunta set respuesta='".$codigo."', fecha_respuesta='".$fechamodif."' where codclase='".$codclase."'";
             
$rs4=$db->execute($sql4);
              
$i++;
             }
             } 
me sale asi....



porque sera...

en la base de datos me guarda el ultimo, osea limon...

como puedo grabar en orden...??

salu2
__________________
Una Vez Muerto el Perro.............Se acaba la Rabia :risa:
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 18:47.