PHP - Fatal error: Call to a member function execute() on a non-object in ...

 
Vista:
sin imagen de perfil
Val: 41
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Fatal error: Call to a member function execute() on a non-object in ...

Publicado por nitramara (22 intervenciones) el 21/05/2018 04:18:17
Hola, me he visto abocado a intentar solicitarles colaboración con este tema ya que por mas que le he intentado no he logrado el cometido..
En primer lugar les indico que la idea es enviar atraves de post unos campos e insertarlos en la DB.
la verdad no logro ver cual es el error en este caso..
Este es el codigo HTML.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <link rel="icon" type="image/png" href="img/med.png" />
    <script type="text/javascript" src="js/accion.js"></script>
	<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
	<script src="//code.jquery.com/jquery-1.10.2.js"></script>
	<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
 
<script type="text/javascript">
 
$(function() {
            $("#documento").autocomplete({
                source: "includes/productos.php",
                minLength: 2,
                select: function(event, ui) {
					event.preventDefault();
                    $('#documento').val(ui.item.documento);
					$('#nombres').val(ui.item.nombres);
					$('#cargo').val(ui.item.cargo);
					$('#grado').val(ui.item.grado);
					$('#telefono').val(ui.item.telefono);
					$('#email').val(ui.item.email);
				  }
            });
		});
 
$(document).ready(function(){
    //group add limit
    var maxGroup = 5;
 
    //add more fields group
    $(".addMore").click(function(){
        if($('body').find('.fieldGroup').length < maxGroup){
            var fieldHTML = '<div class="form-group fieldGroup">'+$(".fieldGroupCopy").html()+'</div>';
            $('body').find('.fieldGroup:last').after(fieldHTML);
        }else{
            alert('Maximo '+maxGroup+' personas.');
        }
    });
 
    //remove fields group
    $("body").on("click",".remove",function(){
        $(this).parents(".fieldGroup").remove();
    });
});
		function onEnviar(){
			   document.getElementById("variable").value=newElem;
			}
 
    </script>
</head>
  <body>
<?php
	include("navbar.php");
?>
 
<form id="combo" name="combo" method="POST" onsubmit="return validate(this);" action="dinamicos1.php">
		<div id="caja1">
			<strong><span>Direccion Responsable</span></strong><br />
				<select name="dependencia">
				  <option value=""></option>
				  <option value="Despacho">Despacho</option>
				  <option value="transito">transito</option>
				  <option value="Direccion errada">Direccion errada</option>
				</select>
								<br />
						</DIV>
		<br /><strong><span>Objeto entrega</span></strong><br /><textarea class="textfield" id="objeto" name="objeto" cols="85" rows="2"></textarea>
 
		<div id="caja">
			<strong><span>Fecha de elaboración</span></strong>
			<input type="date" id="fecha_ela" name="fecha_ela" step="1" min="2017-09-01"
			 value="">
		<br />
			<strong><span>Numero de Registro</span></strong><br />
			<input type="text" size="5" name="registro" value="">
		<br />
			<strong><span>Fecha inico </span></strong>
			<input type="date" id="fecha_ini_comi" name="fecha_ini" step="1" min="2017-09-01" value="">
		<br />
			<strong><span>   Fecha  fin </span></strong><br />
			<input type="date" id="fecha_fin_comi" name="fecha_fin" step="1"
			min="2017-09-01" value="">
		</div>
	<form id="myForm">
		<div class="form-group fieldGroup">
		<strong><span> Ingresar persona(s) Max. 5  </span></strong>
			<div class="input-group">
				<input type="text" id="documento" name="documento[]"  onkeypress="return runScript(event)" placeholder="Digite Documento"/>
				<input type="text" id="nombres" name="nombres[]"  placeholder="Nombres"/>
				<input type="text" id="cargo" name="cargo[]"  placeholder="Cargo"/>
				<input type="text" id="grado" name="grado[]"  placeholder="Grado"/>
				<input type="text" id="telefono" name="telefono[]" placeholder="Telefono Contacto"/>
				<input type="text" id="email" name="email[]"  placeholder="Email"/>
				<div class="input-group-addon">
			<a href="javascript:void(0)" class="btn btn-success addMore"><span class="glyphicon glyphicon glyphicon-plus" aria-hidden="true"></span>Adiciona</a>
				</div>
			</div>
		</div>
	<!---	
	--->
 
	<div class="form-group fieldGroupCopy" style="display: none;">
		<div class="input-group">
				<input type="text" id="documento" name="documento[]" onkeypress="return runScript(event)" placeholder="Digite Documento"/>
				<input type="text" id="nombres" name="nombres[]" placeholder="Nombres"/>
				<input type="text" id="cargo" name="cargo[]" placeholder="Cargo"/>
				<input type="text" id="grado" name="grado[]" placeholder="Grado"/>
				<input type="text" id="telefono" name="telefono[]" placeholder="Telefono Contacto"/>
				<input type="text" id="email" name="email[]" placeholder="Email"/>
			<div class="input-group-addon">
		  <a href="javascript:void(0)" class="btn btn-danger remove"><span class="glyphicon glyphicon glyphicon-remove" aria-hidden="true"></span>Eliminar</a>
			</div>
		</div>
	</div>
	<div id="caja1" style="margin-bottom:4px;">
        <fieldset>
			<strong><span>Procesar</span></strong>
			     <input type="submit" name="submit" class="btn btn-primary" value="SUBMIT"/>
				 <input id="variable" name="variable" type="hidden" />
		</fieldset>
	</div
	</form>
</form>
  </body>
</html>

Y este es el PHP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
echo "<pre>";
	var_dump($_POST);
	echo "</pre>";
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "BASE_DATOS";
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$jsondata = ($_POST["submit"]);
$usuariosArray = explode(PHP_EOL, $jsondata);
 
foreach ($usuariosArray as $usuario) {
  $jsondata = json_decode($usuario.PHP_EOL, true);
  $jsonarray[] = array($jsondata);
}
 
	foreach ($jsonarray as $row) {
 
		  $dependencia = $row[0]['dependencia'];
		  $objeto = $row[0]['objeto'];
		  $fecha_ela = $row[0]['fecha_ela'];
		  $registro = $row[0]['registro'];
		  $fecha_ini = $row[0]['fecha_ini'];
		  $fecha_fin = $row[0]['fecha_fin'];
		  $documento = $row[0]['documento'];
		  $nombres = $row[0]['nombres'];
		  $cargo = $row[0]['cargo'];
		  $grado = $row[0]['grado'];
		  $telefono = $row[0]['telefono'];
		  $email = $row[0]['email'];
			  $data = array('dependencia'=> $dependencia, 'objeto'=> $objeto, 'fecha_ela'=> $fecha_ela, 'registro'=> $registro,	'fecha_ini'=> $fecha_ini, 'fecha_fin'=> $fecha_fin, 'documento'=> $documento, 'nombres'=> $nombres, 'cargo'=> $cargo,'grado'=> $grado, 'telefono'=> $telefono, 'email'=> $email);
			  $stmt = $conn->prepare('INSERT INTO prueba (dependencia, objeto, fecha_ela, registro, fecha_ini, fecha_fin, documento, nombres, cargo, grado, telefono, email) VALUES (:dependencia, :objeto, :fecha_ela, :registro, :fecha_ini, :fecha_fin, :documento, :nombres, :cargo, :grado, :telefono, :email);');
			  $stmt->execute($data);
	 }

Este es el Error que me tira

( ! ) SCREAM: Error suppression ignored for
( ! ) Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\prueba\dinamicos1.php on line 40

Y este segundo caso.. que tampoco logro idear
Es que quiero que al crear el otro campo dinamico tambien pueda hacer lo que realizo con el primer campo.. y es que al digitar el documento de la persona me traiga desde la DB los campos que se requieren..
Pero no logro. hacer esto.. si me tiran algunas ideas.. bienvenidas..
Mil gracias..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Fatal error: Call to a member function execute() on a non-object in ...

Publicado por xve (6935 intervenciones) el 21/05/2018 10:57:37
La verdad, es que esta manera que utilizas no la he utilizado nunca...

La manera que yo utilizo, es utilizando bind_param() https://secure.php.net/manual/es/mysqli-stmt.bind-param.php

algo así:
1
2
3
$stmt = $conn->prepare('INSERT INTO prueba (dependencia, objeto, fecha_ela, registro, fecha_ini, fecha_fin, documento, nombres, cargo, grado, telefono, email) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)');
$stmt->bind_param("ssssssssss",$dependencia, $objeto, $fecha_ela, $registro, $fecha_ini, $fecha_fin, $documento, $nombres, $cargo, $grado, $telefono, $email);
$stmt->execute();

espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 41
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Fatal error: Call to a member function execute() on a non-object in ...

Publicado por nitramara (22 intervenciones) el 23/05/2018 04:59:59
Ok.. muchas gracias, por tomarte el tiempo y la molestia de contestar, sabes tome en cuenta tus indicaciones y la verdad no logre el cometido NO me inserta nada.. en la DB ademas que dudo mucho que con estos cambios me inserte lo que pretendo..
Te lo explico mejor.. es que como puedes ver tengo unos campos fijos "por llamarlo asi" y otros dinamicos, los campos fijos siempre se deben repetir en la insercion de la data..
Es algo asi como
fecha inicial, registro, fechafinal documento nombres
15/03/2018 1025 15/04/2019 78787878 Maria rugeles

fecha inicial, registro, fechafinal documento nombres
15/03/2018 1025 15/04/2019 1005256879 luis Canales

y asi sucesivamente con los campos faltantes.. no se si soy claro..

De todas formas mil gracias por la colaboracion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de abzerox
Val: 575
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Fatal error: Call to a member function execute() on a non-object in ...

Publicado por abzerox (157 intervenciones) el 22/05/2018 01:18:27
Hola, si quires ejecutar una sentencia sql preparada con un array de valores de inserción con parámetros nombrados, el array que recibe el método execute debe estar formado de la forma
1
array(':key' => 'value')
, donde el nombre del marcador de posición debe tener los ':' (dos puntos) al inicio.
La otra forma valida es como comento xve utilizando los parámetros por sustitución.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$stmt = $conn->prepare('INSERT INTO prueba (dependencia, objeto, fecha_ela, registro, fecha_ini, fecha_fin, documento, nombres, cargo, grado, telefono, email) VALUES (:dependencia, :objeto, :fecha_ela, :registro, :fecha_ini, :fecha_fin, :documento, :nombres, :cargo, :grado, :telefono, :email)');
$stmt->execute(array(
':dependencia' => $dependencia,
':objeto'              => $objeto,
':fecha_ela'       => $fecha_ela,
':registro'           => $registro,
':fecha_ini'        => $fecha_ini,
':fecha_fin'        => $fecha_fin,
':documento'    => $documento,
':nombres'        => $nombres,
':cargo'              => $cargo,
':grado'              => $grado,
':telefono'          => $telefono,
':email'               => $email
));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 41
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Fatal error: Call to a member function execute() on a non-object in ...

Publicado por nitramara (22 intervenciones) el 23/05/2018 05:13:51
Ok.. muchas gracias, por tomarte el tiempo y la molestia de contestar, sabes tome en cuenta tus indicaciones y las de que comento xve, la verdad no logre el cometido NO me inserta nada..
me tira este error..

( ! ) Fatal error: Call to a member function execute() on a non-object in C:\wamp\www\prueba\dinamicos1.php on line 160
Mil disculpas por lo torpe en esto de la programacion pero la verdad hasta ahora estoy en inicios ya que soy autodidacta con este tema.

Te lo explico mejor que es lo que pretendo.. en el aplicativo, como puedes ver tengo unos campos fijos "por llamarlo asi" y otros dinamicos, los campos fijos siempre se deben repetir en la insercion de la data..
Es algo asi como

fecha inicial, registro, fechafinal documento nombres
15/03/2018 1025 15/04/2019 78787878 Maria rugeles

fecha inicial, registro, fechafinal documento nombres
15/03/2018 1025 15/04/2019 1005256879 luis Canales

y asi sucesivamente con los campos faltantes.. no se si soy claro..

De todas formas mil gracias por la colaboracion.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 41
Ha aumentado su posición en 8 puestos en PHP (en relación al último mes)
Gráfica de PHP

Fatal error: Call to a member function execute() on a non-object in ...

Publicado por nitramara (22 intervenciones) el 24/05/2018 04:13:58
Hola, bueno les comento he logrado el cometido y ya inserto los datos tal cual los requeria..
Ahora solo tengo un pequeño detalle y es que me inserta un campo de ceros por el recorrido del array..
habra la posibilidad que alguien me tire una idea de como lo soluciono..

Aca el codigo que utilizo..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for($i=0; $i<count($_POST['documento']); $i++)
{
$insertar=mysql_query("INSERT INTO prueba(dependencia, objeto, fecha_ela, registro, fecha_ini, fecha_fin, documento, nombres, cargo, grado, telefono, email)
				VALUES
				('$dependencia','$objeto','$fecha_ela','$registro',
				 '$fecha_ini','$fecha_fin','$documento[$i]','$nombres[$i]','$cargo[$i]','$grado[$i]','$telefono[$i]','$email[$i]')");
 
if (!$insertar) {
die("Fallo en la insercion de registro en la Base de Datos: " . mysql_error());
}
 
}
 
mysql_close($conexion);
echo '<script>alert("Los datos han sido almacenados en la base de datos");</script>';
        echo '<SCRIPT LANGUAGE="javascript">
        </SCRIPT>';
 
?>

y esto es lo que me viene del array..

array (size=12)
'dependencia' => string 'Despacho' (length=8)
'objeto' => string 'daasdfjl asdf sadf' (length=19)
'fecha_ela' => string '2018-05-02' (length=10)
'registro' => string '256' (length=3)
'fecha_ini' => string '2018-05-25' (length=10)
'fecha_fin' => string '2018-05-30' (length=10)
'documento' =>
array (size=2)
0 => string '26571614' (length=8)
1 => string '' (length=0)
'nombres' =>
array (size=2)
0 => string 'MARTHA PATRICIA SALGADO DIAZ ' (length=29)
1 => string '' (length=0)
'cargo' =>
array (size=2)
0 => string 'Docente de aula ' (length=16)
1 => string '' (length=0)
'grado' =>
array (size=2)
0 => string '2BE ' (length=4)
1 => string '' (length=0)
'telefono' =>
array (size=2)
0 => string '3165323810' (length=10)
1 => string '' (length=0)
'email' =>
array (size=2)
0 => string '[email protected] ' (length=32)
1 => string '' (length=0)

Cualquier.. colaboracion sera Bienvenida..Mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar