Foros del Web » Programando para Internet » PHP »

como insertar multiples registros, Pago por ello

Estas en el tema de como insertar multiples registros, Pago por ello en el foro de PHP en Foros del Web. Hola a todos, Necesito ayuda urgente, tengo un problema y ya no se que hacer para solucinarlo, asi que si es preciso pagare algo al ...
  #1 (permalink)  
Antiguo 01/12/2005, 04:15
 
Fecha de Ingreso: noviembre-2005
Mensajes: 45
Antigüedad: 18 años, 5 meses
Puntos: 1
Pregunta como insertar multiples registros, Pago por ello

Hola a todos,

Necesito ayuda urgente, tengo un problema y ya no se que hacer para solucinarlo, asi que si es preciso pagare algo al que me ayude a solucinarlo. la desesperacion puede con todo.

Os cuento, quiero insertar multiples registros pero como soy nuevo en php me pierdo totalmente en esto.

Actualmente con la pequeña ayuda de Cluster tengo esto.

tengo formulario.html

<form action="script.php" method="post">
<p>1
<input name="seleccion[]" type="checkbox" value="1" />
<label>
<input name="nombre" type="text" id="nombre" />
</label>
</p>
<p>2
<input name="seleccion[]" type="checkbox" value="2" />
<input name="nombre" type="text" id="nombre" />
</p>
<p>3
<input name="seleccion[]" type="checkbox" value="3" />
<input name="nombre" type="text" id="nombre" />
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
</p>
</form>



en este estan los checkbox mas un campo de texto nombre y en el codigo php sin estos seria

script.php

<?php foreach ($_POST['seleccion'] as $id){
echo $id."<br>";
} ?>

no veo como paso el resto, y ya no hablo para insertar esto en base de datos es decir que cada seleccion sea guardada si hago dos selecciones que sea dos registros diferentes en la base de datos.

Muchisimas gracias por todo.
  #2 (permalink)  
Antiguo 01/12/2005, 04:35
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola

Ya tienes que estar desesperado ;)
Código:
<form action="script.php" method="post">
<form action="prueba.php" method="post">
<p>1
<input name="seleccion[1]" type="checkbox"/>
<label>
<input name="nombre[1]" type="text" id="nombre" />
</label>
</p>
<p>2
<input name="seleccion[2]" type="checkbox" />
<input name="nombre[2]" type="text" id="nombre" />
</p>
<p>3
<input name="seleccion[3]" type="checkbox" />
<input name="nombre[3]" type="text" id="nombre" />
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
</p>
</form>
Código:
...
foreach( $seleccion AS $k => $v) {
// Suponiendo que trabajas con MySQL
mysql_query( "INSERT INTO miTabla VALUES( '". $nombre[$k] ."' )" );
}
__________________
Salu2
KAYETANO
  #3 (permalink)  
Antiguo 01/12/2005, 05:24
 
Fecha de Ingreso: noviembre-2005
Mensajes: 45
Antigüedad: 18 años, 5 meses
Puntos: 1
Gracias Keyetano

Ni te imaginas los desesperado que esto....

He probado lo que me dices y no se donde esta el fallo es mas me han surgido mas dudas.

esto es lo que he puesto yo

<?php

# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_con_pb = "localhost";
$database_con_pb = "nombre_de_la_base_de_datos";
$username_con_pb = "usuario";
$password_con_pb = "contraseña";
$con_pb = mysql_pconnect($hostname_con_pb, $username_con_pb, $password_con_pb) or trigger_error(mysql_error(),E_USER_ERROR);

foreach( $seleccion AS $k => $v) {
mysql_query("INSERT INTO mitabla VALUES( '". $nombre[$k] ."' )");
}
?>

ahora bien como le digo yo en que campos de la tabla le digo que me lo inserte, y luego en este emplo hay un campo nombre pero en el definitivo hay como 10 campos mas.

vamos que estoy totalmente perdido.

muchas gracias.
  #4 (permalink)  
Antiguo 01/12/2005, 05:37
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola

No termino de entender lo que quieres decirme con
Cita:
Iniciado por maac78
ahora bien como le digo yo en que campos de la tabla le digo que me lo inserte, y luego en este emplo hay un campo nombre pero en el definitivo hay como 10 campos mas.
Con el foreach ("para cada")
Código:
foreach( $seleccion AS $k => $v) {
mysql_query("INSERT INTO mitabla VALUES( '". $nombre[$k] ."' )");
}
insertas tantas veces como checks hayas marcado, además con esta estructura de foreach obtienes el valor ($v) y el indice ($k) de cada check en el formulario y como has puesto el mismo indice en el check y el en input, pues insertas solo lo nombres que tienen check. No se si me explico.

Te aconsejo que te cojas un buen manual de PHP y otro de programacion y te lo curres mucho ya que veo que estas muy verde.
__________________
Salu2
KAYETANO
  #5 (permalink)  
Antiguo 01/12/2005, 05:45
has
 
Fecha de Ingreso: septiembre-2004
Ubicación: Lugo
Mensajes: 28
Antigüedad: 19 años, 7 meses
Puntos: 0
yo pienso q quiere insertar en un registro multiples campos
inserta los checks marcados en un registro, , no esta del todo echo pero la idea a ver si la cojes,....
Cita:
$SQL="INSERT INTO mitabla(campo1,campo2 .....campon) VALUES('$nombre[1]','$nombre[2]'....'$nombre[n]')"; //don n es incremental
$eje=mysql_db_query($database_con_pb,$SQL);
if($eje)
{
echo "insercción realizada";
}
Es algo asip lo que buscas tampo te lo podemos dar echo todo no sabes lso campos de la base de datos y no te estas expresando correctamente.

"Y estoy de acuerdo con KAYETANO en lo referente al manual de php + mysql busca en google inserccion de registros en php"
__________________
Mi WEB Intercambio enlaces de texto RedesdelWeb mi msn [email protected] :si: :si: :si: :si:
  #6 (permalink)  
Antiguo 01/12/2005, 06:26
 
Fecha de Ingreso: noviembre-2005
Mensajes: 45
Antigüedad: 18 años, 5 meses
Puntos: 1
la verdad que para esto si que estoy verde

Bueno mirar esto.

formulario.

form action="<?php echo $editFormAction; ?>" name="form1" method="POST">
<p>1
<input name="seleccion[1]" type="checkbox"/>
nombre
<label>
<input name="nombre[1]" type="text" />
</label>
apellidos
<input name="apellidos[1]" type="text" />
</p>
<p>2
<input name="seleccion[2]" type="checkbox" />
nombre
<input name="nombre[2]" type="text"/>
apellidos
<input name="apellidos[2]" type="text" />
</p>
<p>3
<input name="seleccion[3]" type="checkbox" />
nombre
<input name="nombre[3]" type="text" />
apellidos
<input name="apellidos[3]" type="text" />
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
</p>

<input type="hidden" name="MM_insert" value="form1">
</form>

esto seria un formulario si utilizo el dreamweaver pra hacer in insert en la base de datos me sale esto

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO prueba (nombre, apellidos) VALUES (%s, %s)",
GetSQLValueString($_POST['nombre[1]'], "text"),
GetSQLValueString($_POST['apellidos[1]'], "text"));

mysql_select_db($database_con_pb, $con_pb);
$Result1 = mysql_query($insertSQL, $con_pb) or die(mysql_error());

$insertGoTo = "#";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

el problema es que solo me inserta 1 registro el ultimo.

Mi pregunta es en este codigo donde se podria poner el

foreach( $seleccion AS $k => $v) {
mysql_query("INSERT INTO pb_repartos_detalles VALUES( '". $nombre[$k] ."' )");
}

si desues de esto no hay nada, yo ya desisto, tendré que buscar mas soluciones de como poder hacerlo.

muchas gracias por todo.
  #7 (permalink)  
Antiguo 01/12/2005, 06:42
has
 
Fecha de Ingreso: septiembre-2004
Ubicación: Lugo
Mensajes: 28
Antigüedad: 19 años, 7 meses
Puntos: 0
Tu modificación del codigo echa , asip no se aprende hay que empezar de 0

Cita:
foreach( $seleccion AS $k => $v) {
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO prueba VALUES (%s, %s)",
GetSQLValueString($_POST['nombre[$k]'], "text"),
GetSQLValueString($_POST['apellidos[$k]'], "text"));
mysql_select_db($database_con_pb, $con_pb);
$Result1 = mysql_query($insertSQL, $con_pb) or die(mysql_error());
}
Y este codigo es suponiendo q solo tengas la tabla con los campos nombre , apellidos.
__________________
Mi WEB Intercambio enlaces de texto RedesdelWeb mi msn [email protected] :si: :si: :si: :si:
  #8 (permalink)  
Antiguo 01/12/2005, 07:04
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola

No te tienes que liar tanto
Código:
foreach( $_POST[seleccion] AS $k => $v) {
   if (isset( $_POST["Submit"] ) ) {
      $insertSQL = "INSERT INTO prueba VALUES ('". $_POST[nombre[$k]] ."', '". $_POST[apellidos[$k]] .'" )";
      mysql_select_db($database_con_pb, $con_pb);
      $Result1 = mysql_query($insertSQL, $con_pb) or die(mysql_error());
   }
}
Primero, no me he fijado mucho en el codigo que pones porque esta muy liado y usas cosas que no tienen mucho sentido.
Usas QUERY_STRING pero el formulario lo envias con el metodo POST.
No tengo ni idea que es "GetSQLValueString".
Creas un valor oculto para comprobar que envias el formulario cuando ya tienes el propio boton "Submit".

Me da que estas tan desesperado que estas hacinedo COPY/PASTE de un monton de sitios sin saber exactamente que estas haciendo.

Y como dice HAS aprende de los ejemplos pero cuando tengas un problema empieza desde cero sino vas a meter basura a manta.
__________________
Salu2
KAYETANO
  #9 (permalink)  
Antiguo 01/12/2005, 09:17
 
Fecha de Ingreso: noviembre-2005
Mensajes: 45
Antigüedad: 18 años, 5 meses
Puntos: 1
casi casi esta

Con vuestra ayuda he consegido que inserte ahora bien los valores que inserta son NULL

este esel formulario

<form action="<?php echo $editFormAction; ?>" name="form1" method="POST">
<p>1
<input name="seleccion[1]" type="checkbox" value="1" />
nombre
<label>
<input name="nombre[1]" type="text"/>
</label>
apellidos
<input name="apellidos[1]" type="text" />
</p>
<p>2
<input name="seleccion[2]" type="checkbox" value="2" />
nombre
<input name="nombre[2]" type="text" />
apellidos
<input name="apellidos[2]" type="text" />
</p>
<p>3
<input name="seleccion[3]" type="checkbox" value="3" / />
nombre
<input name="nombre[3]" type="text" >
apellidos
<input name="apellidos[3]" type="text" />
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
<label></label>
</p>

<input type="hidden" name="MM_insert" value="form1">
</form>

este el codigo php

foreach($_POST['seleccion'] as $k => $v) {
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO prueba (nombre, apellidos) VALUES (%s, %s)",
GetSQLValueString($_POST['nombre[$k]'], "text"),
GetSQLValueString($_POST['apellidos[$k]'], "text"));

mysql_select_db($database_con_pb, $con_pb);
$Result1 = mysql_query($insertSQL, $con_pb) or die(mysql_error());

he podrado de poner en VALUES en lugar de (%s, %s) ('". $_POST[nombre[$k]] ."', '". $_POST[apellidos[$k]] .'" )";
pero me da un error de codigo

muchas gracias
  #10 (permalink)  
Antiguo 01/12/2005, 09:40
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola

XIQUILLO, ya me estas liando
1. Sigo diciendo que pones cosas raras,
- para que "sprintf" si puedes usar una concatenación normal "."
- Que narices es "GetSQLValueString", he realizado miles de concatenaciones y nunca he necesitado de eso.

2. Me has confundido incluso a mi con el funcionamiento de los arrays
ni
Código:
$_POST['apellidos[$k]']
ni
Código:
$_POST[apellidos[$k]]
pero esto sip, vaya cacao me has hecho, menos mal que despues de comer se me aclaran las ideas.
Código:
$_POST['apellidos'][$k]
__________________
Salu2
KAYETANO
  #11 (permalink)  
Antiguo 01/12/2005, 09:47
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola

Por curiosidad he mirado que es "GetSQLValueString()" y veo que es un filtro. Pues bien esta si se utiliza un filtro. Ya me había mosqueado.
__________________
Salu2
KAYETANO
  #12 (permalink)  
Antiguo 01/12/2005, 09:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 45
Antigüedad: 18 años, 5 meses
Puntos: 1
Funciona Mil Gracias A Todos

Hola a todo,

despues de mucho, y gracias a Kayetano y a has el sistema funciona.

Os pogno el codigo que tengo

Codigo PHP

<?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

foreach($_POST['seleccion'] as $k => $v) {
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO prueba (nombre, apellidos) VALUES (%s, %s)",
GetSQLValueString($_POST['nombre'][$k], "text"),
GetSQLValueString($_POST['apellidos'][$k], "text"));

mysql_select_db($database_con_pb, $con_pb);
$Result1 = mysql_query($insertSQL, $con_pb) or die(mysql_error());

$insertGoTo = "#";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
}
header(sprintf("Location: %s", $insertGoTo));
}
?>

El formulario

form action="<?php echo $editFormAction; ?>" name="form1" method="POST">
<p>1
<input name="seleccion[1]" type="checkbox" value="1" id="seleccion[1]" />
nombre
<label>
<input name="nombre[1]" type="text" id="nombre[1]"/>
</label>
apellidos
<input name="apellidos[1]" type="text" id="apellidos[1]"/>
</p>
<p>2
<input name="seleccion[2]" type="checkbox" value="2" id="seleccion[2]"/>
nombre
<input name="nombre[2]" type="text" id="nombre[2]" />
apellidos
<input name="apellidos[2]" type="text" id="apellidos[2]"/>
</p>
<p>3
<input name="seleccion[3]" type="checkbox" value="3" id="seleccion[3]" />
nombre
<input name="nombre[3]" type="text" id="nombre[3]" />
apellidos
<input name="apellidos[3]" type="text" id="apellidos[3]" />
</p>
<p>
<input type="submit" name="Submit" value="Enviar">
<label></label>

Mil gracias, y como lo prometido es deuda si he de pagar algo me lo decis, pero no os paseis.
  #13 (permalink)  
Antiguo 01/12/2005, 11:52
 
Fecha de Ingreso: marzo-2005
Mensajes: 74
Antigüedad: 19 años, 1 mes
Puntos: 0
Pues un dia de estos quedamos y nos hacemos unas cervezas ;)
__________________
Salu2
KAYETANO
  #14 (permalink)  
Antiguo 06/03/2006, 14:35
 
Fecha de Ingreso: enero-2003
Ubicación: Asunción
Mensajes: 48
Antigüedad: 21 años, 3 meses
Puntos: 1
Hola. Yo use este script para mi sitio y lo comence de cero para entenderlo mejor y si guarda los datos. sin embargo me sale este warning siempre:

Warning: Invalid argument supplied for foreach() in D:\AppServ\www\up\staff\admin\ejemplo_foto.php on line 33
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 07:56.