Foros del Web » Programando para Internet » PHP »

warning, notice

Estas en el tema de warning, notice en el foro de PHP en Foros del Web. holas a todos, Estoy guardando en la base de datos unas variables (arreglos) q mediant un for voy sacando cada valor y lo guardo en ...
  #1 (permalink)  
Antiguo 07/06/2006, 14:24
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
warning, notice

holas a todos,

Estoy guardando en la base de datos unas variables (arreglos) q mediant un for voy sacando cada valor y lo guardo en la bd. pero me sale esto cuando hago el for.
Cita:
Notice: Uninitialized string offset: 1 in /Library/WebServer/Documents/borrador/control de horas/agregar_horas.php on line 31
ademas me sale este warning:

Cita:
Warning: Cannot modify header information - headers already sent by (output started at /Library/WebServer/Documents/borrador/control de horas/agregar_horas.php:28) in /Library/WebServer/Documents/borrador/control de horas/agregar_horas.php on line 48
podrian decierme q es eso?
gracias
__________________
.-._.-. [email protected]_.-.

Última edición por Mirovita; 07/06/2006 a las 14:37
  #2 (permalink)  
Antiguo 07/06/2006, 15:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El segundo mensaje de error (el "Warning") deriva de la presentación en "pantalla" del primer mensaje .. es decir, .. solucionas el primer problema y no te saldrá el segundo.

Sobre el problema principal .. el mensaje es de tipo "aviso" (notice), sólo te dice que estás accediendo a un indice de un array que no existe ($nose[???]).

Deberías indicar el código que usas para ver que haces concretamente y dar alguna solución más apropiada.

En principio .. si vas acceder a una variable "externa" a tu scritp que en algún momento no exista (ejemplo .. hasta que recargas la página y le pasas tal variable . .no existe), lo que debes hacer es verificar que exista antes de pretender accederla.

Código PHP:
if (isset($_GET['alguna_Variable'])){
// accedes o usas $_GET['alguna_Variable'] ...

Pero .. según comentas .. (sin ver el código) .. puede ser que empieces a trabajar el bucle for() para recorrer tu array en un indice que no existe (o el problema lo tienes cuando sólo tienes un elemento en tu arreglo/array .. o te pasas +1 del total por un mal calculo .. ). Para solventar estos problemas .. lo mejor suele ser olvidarse de usar for() para recorrer un array y usar:

foreach()
www.php.net/foreach

Lo dicho .. hasta que no presentes el código que usas no se verá claro cual es tu problema concreto.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 07/06/2006, 15:11
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
codigo:

Código PHP:
<?
include("Conectarse1.php");
$conn=Conectarse1();
//datos del usuario
$cedula $_POST["cedula"];
$nombre $_POST["nombre"];
$fecha_del $_POST["fecha_del"];
$fecha_al $_POST["fecha_al"];
//horas
$lun=$_POST["fila"];
$mar=$_POST["fila2"];
$mier=$_POST["fila3"];
$jue=$_POST["fila4"];
$vier=$_POST["fila5"];
$sab=$_POST["fila6"];
$dom=$_POST["fila7"];
$contrato=$_POST["filas"];
$actividad=$_POST["filas2"];
$descripcion=$_POST["filas3"];

//tamaño de los vectores
$tamaño=$_POST["tamaño"];

/* Conexion a la base de datos*/

for ($i=0;$i<($tamaño*2);$i++)
{
if ((
$lun[$i]!=",") and ($mar[$i]!=",") and ($mier[$i]!=",") and ($jue[$i]!=",") and ($vier[$i]!=",") and ($sab[$i]!=",") and ($dom[$i]!=",") and ($contrato[$i]!=",") and ($actividad[$i]!=",") and ($descripcion[$i]!=","))
{
$lun=$lun[$i];
$mar=$mar[$i];
$mier=$mier[$i];
$jue=$jue[$i];
$vier=$vier[$i];
$sab=$sab[$i];
$dom=$dom[$i];
$contrato=$contrato[$i];
$actividad=$actividad[$i];
$descripcion=$descripcion[$i];

$query="INSERT INTO horas (cedula, contrato ,actividad, descripcion,  fecha_ini, fecha_fin,lun, mar, mier,jue,vier,sab,dom) VALUES ('$cedula', '$contrato', '$actividad', '$descripcion', '$fecha_del', '$fecha_al', '$lun', '$mar', '$mier', '$jue', '$vier', '$sab', '$dom')";
$result=pg_Exec($conn,$query);
$query="SELECT * FROM horas";
}
}

header("Location: hoja de tiempo.php");  

pg_close($conn); 
/*
echo $cedula;
echo "<br>";
echo $nombre;
echo "<br>";
echo $fecha_del;
echo "<br>";
echo $fecha_al;
echo "<br>";


echo $lun;
echo "<br>";

echo $mar;

echo "<br>";

echo $mier;
echo "<br>";

echo $jue;
echo "<br>";

echo $vier;
echo "<br>";

echo $sab;
echo "<br>";

echo $dom;
echo "<br>";


if (!empty ($contrato))
echo $contrato;
else 
echo "esta vacio";
echo "<br>";

if (!empty ($actividad))
echo $actividad;
else 
echo "esta vacio";
echo "<br>";

if (!empty ($descripcion))
echo $descripcion;
else
echo "esta vacio";
echo "<br>";


echo $tamaño;
*/

?>
__________________
.-._.-. [email protected]_.-.
  #4 (permalink)  
Antiguo 07/06/2006, 15:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No entendí mucho que hace tu código .. Intenta dar valores de tus pruebas (para repasar tu "algoritmo" (el bucle que usas ...))

Veo que recojes datos "una fila" . pero usa un blucle? ..

Si tus datos que insertas en: (por ejemplo):
Código PHP:
$lun=$_POST["fila"]; 
son separados por comas:
1,2,4,3

Usa mejor:
Código PHP:
$lun=explode(",",$_POST['fila']); 
así obtendras un array .. Haz lo mismo con el resto y podras usar un bucle tipo:

Código PHP:
for (for ($i=0;$i<($count($lun);$i++){
// fijate .. uso directamente $lum[$i] .. sin más ..
$query="INSERT INTO horas (cedula, contrato ,actividad, descripcion,  fecha_ini, fecha_fin,lun, mar, mier,jue,vier,sab,dom) VALUES ('".$cedula."', '".$contrato."', '".$actividad."', '".$descripcion."', '".$fecha_del."', '".$fecha_al."', '".$lun[$i]."', '$mar', '$mier', '$jue', '$vier', '$sab', '$dom')"


(el $tamaño sobraría (por cierto .. OJO con las ñ no las uses en nombres de variables!!!) .. ya usamos "count()" para contar el n° de elementos que tiene uno de nuestros arrays y suponemos que son iguales todos en n° de elementos).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 08/06/2006, 08:52
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
gracias cluster, asi si funciona aunq tienes varias cositas malas pero ya las corregi (en el for) y cont tiene el simbolo $... bueno ahhora lo q pasa es q una de las variables (activiadad) en vez de guardarse el valor de cada elemento del arreglo se guarda: actividad[0]... q significa eso, te mando el codigo de nuevo..

Código PHP:
<?
include("Conectarse1.php");
$conn=Conectarse1();
//datos del usuario
$cedula $_POST["cedula"];
$nombre $_POST["nombre"];
$fecha_del $_POST["fecha_del"];
$fecha_al $_POST["fecha_al"];
//horas
$lun=explode(",",$_POST['fila']);  
$mar=explode(",",$_POST['fila2']);  
$mier=explode(",",$_POST['fila3']);  
$jue=explode(",",$_POST['fila4']);  
$vier=explode(",",$_POST['fila5']);  
$sab=explode(",",$_POST['fila6']);  
$dom=explode(",",$_POST['fila7']);  
$contrato=explode(",",$_POST['filas']); 
$actividad=explode(",",$_POST['filas2']); 
$descripcion=explode(",",$_POST['filas3']); 


$a count($lun);

for (
$i=0;$i<$a;$i++){ 

$query="INSERT INTO horas (cedula, contrato ,actividad, descripcion,  fecha_ini, fecha_fin,lun, mar, mier,jue,vier,sab,dom) VALUES ('$cedula', '$contrato[$i]', '$actividad[$i]', 'descripcion[$i]', '$fecha_del', '$fecha_al', '$lun[$i]', '$mar[$i]', '$mier[$i]', '$jue[$i]', '$vier[$i]', '$sab[$i]', '$dom[$i]')";  
$result=pg_Exec($conn,$query);
$query="SELECT * FROM horas";
}
header("Location: hoja de tiempo.php");  

pg_close($conn);
?>
__________________
.-._.-. [email protected]_.-.
  #6 (permalink)  
Antiguo 08/06/2006, 09:51
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
ya listo era q no le habia colocado el $ a descripcion, ya lo hago gracias cluster,.... besos besos

__________________
.-._.-. [email protected]_.-.
  #7 (permalink)  
Antiguo 08/06/2006, 09:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te recomendaría encarecidamente que uses "concatenación" para incrustrar las variables que usas (sobre todo cuando nos referimos a "array's") en el $query:
Código PHP:
$query="INSERT INTO horas (cedula, contrato ,actividad, descripcion,  fecha_ini, fecha_fin,lun, mar, mier,jue,vier,sab,dom) VALUES ('$cedula', '$contrato[$i]', '$actividad[$i]', '".$descripcion[$i]."', '$fecha_del', '$fecha_al', '$lun[$i]', '$mar[$i]', '$mier[$i]', '$jue[$i]', '$vier[$i]', '$sab[$i]', '$dom[$i]')"
Puse el ejemplo para una variable .. usalo igual para todas ..

En tu sentencia SQL .. le falta un $ a:
descripcion[$i]
Eso es una variable:
$descripcion[$i]

Repasa bien la sintax que usas!.

Tampoco entiendo por qué haces:
$result=pg_Exec($conn,$query);
$query="SELECT * FROM horas";

ese $query ahí .. está de sobra .. (por lo menos con el contexto y extracto de código que expones). Limpia el código cuando lo presentes en el foro .. sino "despistas" y creas confusión ...


Otro detalle:

header("Location: hoja de tiempo.php");

pg_close($conn);

el orden debería ser al reves:

Código PHP:
pg_close($conn);  // primero cierras la conexión .. aunque PHP lo hará por sí sólo al terminar el script .. casi que no sería necesario pero si es buena constumbre usarlo para aclarar el código ...

// luego .. redireccionar y terminar la ejecución del script en -ese punto- .. si ridereccionas es con el fin de seguir ejecutando otro script ya no el que está en curso.
header("Location: hoja de tiempo.php"); // por cierto EVITA! usar espacios en nombres de scripts .. al menos usa hoja_de_tiempo.php .. evitaras otro tipo de problemas!.   
exit; // aunque lo dicho anteriormente . .PHP cierra toda conexión al terminar el script (su ejecución). 

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 08/06/2006, 09:59
Avatar de Mirovita  
Fecha de Ingreso: febrero-2005
Ubicación: Caracas-Venezuela
Mensajes: 840
Antigüedad: 12 años, 9 meses
Puntos: 10
gracias clus ya me habia dado cuenta del $ q faltaba, voy a resolver lo el orden de las cosas.... gracias besos
__________________
.-._.-. [email protected]_.-.
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 03:44.