PHP - como pasar PDO o POO a metodo por procedimientos?

   
Vista:

como pasar PDO o POO a metodo por procedimientos?

Publicado por Shaft Pun Isher shaft.punisher4@gmail.com (4 intervenciones) el 26/08/2015 05:14:14
Hola, nuevamente aqui con un dolor de cabeza... he estado buscando en internet alguna forma de aprender a usar los checkbox con php y mysql, lastimosamente no he tenido mucho exito... buscando y buscando encontré en una web este código:

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
<?php
try
{	$dbcon = new PDO("mysql:host=localhost;dbname=testdb", 'testuser', 'testpwd');
	$dbcon->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
} catch (PDOException $e) {echo $e->getMessage(); }
 
$exampleUserId = 1234; // example user id or the user who made the selection 
 
try
{	$stmt = $dbcon ->query("SELECT tbl_fruit.index_id, tbl_fruit.fruit FROM tbl_fruit");
	$fruitResults = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) { echo $e->getMessage();  }
 
if(isset($_POST['btn_save']))
{	if(!empty($_POST['catSelection']))
	{	foreach($_POST['catSelection'] as $value)
		{	try
			{	$query = $dbcon->prepare("INSERT INTO tbl_choices(cho_userid, cho_category) VALUES (:userId, :userChoice)");
				$query->bindParam(':userId', $exampleUserId);
				$query->bindParam(':userChoice', $value);
				$query->execute();
			} catch (PDOException $e) { echo $e->getMessage();  }
		}
		echo '<h2>Saved user selection.</h2>';
	}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<title>Display checkbox, category list from database</title>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	</head>
<body>
	<h2>Make your selection(s)</h2>
	<form name="fruitcheckbox" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
		<?php
			foreach($fruitResults as $key => $value)
			{	echo '<input type="checkbox" name="catSelection[]" value="' . $value['index_id'] . '">'. $value['fruit']; }
		?>
		<br>
        <input type="submit" value="Save" name="btn_save">
	</form>
</body>
</html>

con estas tablas:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
CREATE TABLE tbl_fruit (
index_id int NOT NULL AUTO_INCREMENT,
fruit varchar(25) DEFAULT NULL,
PRIMARY KEY(index_id));
 
INSERT INTO tbl_fruit(index_id, fruit) VALUES (null, ‘apple’);
INSERT INTO tbl_fruit(index_id, fruit) VALUES (null, ‘Orange’);
INSERT INTO tbl_fruit(index_id, fruit) VALUES (null, ‘Grapefruit’);
INSERT INTO tbl_fruit(index_id, fruit) VALUES (null, ‘Banana’);
INSERT INTO tbl_fruit(index_id, fruit) VALUES (null, ‘Watermelon’);
 
CREATE TABLE tbl_choices (
cho_index int NOT NULL AUTO_INCREMENT,
cho_userid varchar(5) DEFAULT NULL,
cho_category int DEFAULT NULL,
PRIMARY KEY(cho_index));

El problema que tengo es que entiendo una parte apenas y para ponerlo en practica intente modificarlo a lo que ya estoy empezando a entender de php que es el metodo por procedimientos, alguien podria traducirme el codigo lineas arriba para poder entender lo que hace cada cosa?

He llegado a hacer esto:

1
2
3
4
5
6
7
$s_servidor = 'localhost';
$u_usuario = 'root';
$c_clave = '';
$b_basedatos = 'testcheckbox';
 
$linconn = mysqli_connect($s_servidor, $u_usuario, $c_clave, $b_basedatos) or die("Se produjo un error durante la conexión " . mysqli_error($linconn));
mysqli_set_charset($linconn, "utf8");

este codigo de aqui:

1
2
3
4
try
{	$stmt = $dbcon ->query("SELECT tbl_fruit.index_id, tbl_fruit.fruit FROM tbl_fruit");
	$fruitResults = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) { echo $e->getMessage();  }

lo interprete asi:

1
2
3
4
5
6
$tabla = "tbl_fruit";
$peticion = "SELECT tbl_fruit.index_id, tbl_fruit.fruit FROM $tabla";
$resultado = mysqli_query($linconn, $peticion) or die("<br/>Error reading database: ".mysqli_error($linconn));
while($filaFruta = mysqli_fetch_assoc($resultado){
echo $filaFruta['fruit'];
}

No se si estoy en el camino correcto, el caso es que de aqui en adelante estoy perdido.

Desde ya muchas 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 Vainas

como pasar PDO o POO a metodo por procedimientos?

Publicado por Vainas (254 intervenciones) el 27/08/2015 17:40:37
Buenas:

Yo esto que has puesto:

1
2
3
while($filaFruta = mysqli_fetch_assoc($resultado){
echo $filaFruta['fruit'];
}

lo veo mas como esto:
1
2
3
while($filaFruta = mysqli_fetch_assoc($resultado){
$fruitResults[] =  $filaFruta;
}

en vez de imprimir meto las columnas en una variable para luego ya usarlas como indica el for de mas abajo.

1
2
3
foreach($fruitResults as $key => $value)
			{	echo '<input type="checkbox" name="catSelection[]" value="' . $value['index_id'] . '">'. $value['fruit'];
			}

Pero exactamente que quieres hacer con un checkbox? recibir valores o enviarlos?

Cual es tu problema.

Saludos.
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

como pasar PDO o POO a metodo por procedimientos?

Publicado por Shaft Pun Isher shaft.punisher4@gmail.com (4 intervenciones) el 29/08/2015 02:14:52
Hola Vainas:
Pues, la verdad estoy pensando en hacer un filtro para galerias como las que hay en algunas webs donde muestran todo el contenido inicialmente y luego a travez de links muestra solo los que corresponden a ese filtro pero una imagen de la galeria puede estar en varios grupos, (como este: http://isotope.metafizzy.co/filtering.html) pero no se como hacerlos en la parte de administrador asi que se me ocurrio que con los checkbox podria resolver eso... y como estoy en etapa de aprendizaje estoy probando varias formas, me parecio que la opcion de los checkboxs serviria a mi proposito para insertarlos, modificarlos y eliminarlos desde una base de datos solo que no se como hacerlo aun... quizas exista una mejor alternativa que desconozco pero estoy echando mano de lo que encuentro para poder aprender... si tuvieras alguna sugerencia mejor estaria muy agradecido.
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