php - smart - wordpress is page
php POST formulario consulta actualizaciĆ³n dinamic variable (1)
solo necesita crear una matriz de actualización dinámica. Algo como esto:
$languagesToUpdate = array();
// this is an example, you should modify as your script:
// create a variable/constant to make sure you update only allowed fields
$allowedLanguages = array(''english'' => true, ''french'' => true, ''spanish'' => true, ''german'' => true, ''other_language'' => true);
// iterate threw post and check for allowed languages and add to languagesToUpdate the language we need to update with it''s value
foreach ($_POST as $post => $value) {
if (isset($allowedLanguages[$post]) && $allowedLanguages[$post]) {
$languagesToUpdate[] = ''`'' . $post . ''` = "'' . utf8_encode($value) . ''"'';
}
}
// add additional data like updated_on
$languagesToUpdate[] = ''`updated_on` = '' . time() . '''';
//update database
$db = ''UPDATE `translations_structure` SET ''.implode('', '', $languagesToUpdate).'' WHERE `id` = ''.(int)$id;
// this will produce something like this:
// UPDATE `translations_structure` SET `english` = "English text", `spanish` = "Spanish text", `updated_on` = 1479720637 WHERE `id` = 1
tengo esta forma
<form method="post" action="process.php">
Name: <input type="text" name="name" value="">
<br />
English: <input type="text" name="english" value="">
<br />
French: <input type="text" name="french" value="">
<br />
<input type="submit" name="submit" value="Submit">
</form>
y hacemos esta consulta en process.php
$query = "
UPDATE
`translations_structure`
SET
`updated_on` = ''".time()."'',
`english` = ''".utf8_encode($english)."'',
`french` = ''".utf8_encode($french)."''
WHERE
`id` = ''".$id."''";
y si edito los lenguajes de tabla y agrego más idiomas, la forma se modificará dinámicamente para digamos este ejemplo
<form method="post" action="process.php">
Name: <input type="text" name="name" value="">
<br />
English: <input type="text" name="english" value="">
<br />
French: <input type="text" name="french" value="">
<br />
Spanish: <input type="text" name="spanish" value="">
<br />
German: <input type="text" name="german" value="">
<br />
<input type="submit" name="submit" value="Submit">
</form>
y la consulta que necesito para ser editada dinámicamente
$query = "
UPDATE
`translations_structure`
SET
`updated_on` = ''".time()."'',
`english` = ''".utf8_encode($english)."'',
`french` = ''".utf8_encode($french)."'',
`spanish` = ''".utf8_encode($spanish)."'',
`german` = ''".utf8_encode($german)."''
WHERE
`id` = ''".$id."''";
Lo que no entiendo es cómo hago esto dinámicamente dentro de la consulta del código
* el nombre del campo de formulario es el mismo que el nombre de la variable i POST
* y el nombre de la columna de la tabla es el mismo que el del POST
`english` = ''".utf8_encode($english)."'',
`french` = ''".utf8_encode($french)."'',
`spanish` = ''".utf8_encode($spanish)."'',
`german` = ''".utf8_encode($german)."'',
`other_language` = ''".utf8_encode($other_language)."'',
`other_language2` = ''".utf8_encode($other_language2)."''
aquí arriba he explicado cómo hago la consulta, pero no puedo entender cómo escribir las variables
Sé que es un poco difícil lo que necesito, pero tal vez alguien entienda lo que necesito
gracias
Sobre esta línea está el mensaje editado porque alguien marcó este mensaje respondió
Primero explicaré lo que quiero hacer:
Tengo una tabla llamada "traducciones" donde almaceno los idiomas. ej .: inglés, francés, español, etc.
Utilizo un formulario para actualizar los nuevos valores, el problema es que quiero hacer dinámico para no insertar esta consulta en cada archivo php manualmente porque la tabla de idiomas crecerá o se editará y quiero trabajar dinámicamente para no editar cada archivo php.
el nombre de las variables es el mismo que el nombre de los campos en la base de datos que logro crear una matriz para los nombres en las traducciones de tablas
esto es lo que tengo hasta ahora para hacerlo dinámico, el problema es que no sé cómo insertar variables en la consulta $ _POST [''english''], $ _POST [''french''], etc.
$db = new DB();
$query = $db->query("SELECT * FROM `translations_languages` ORDER BY `name` ASC");
while($row = $query->fetch_assoc()){
$values[] = "`{$row[''name'']}` = ''{$row[''name'']}''";
}
$dynamic_result = "".strtolower(implode(",", $values))."";
$query = "
UPDATE
`translations_structure`
SET
`updated_on` = ''".time()."'',
$dynamic_result
WHERE
`id` = ''".$id."''
";
echo "$query";
y así es como la consulta parece normal
$query = "
UPDATE
`translations_structure`
SET
`updated_on` = ''".time()."'',
`english` = ''".utf8_encode($english)."'',
`french` = ''".utf8_encode($french)."'',
`spanish` = ''".utf8_encode($spanish)."''
WHERE
`id` = ''".$id."''";
Quiero agregar a la consulta estos valores
`english` = ''".utf8_encode($english)."'',
`french` = ''".utf8_encode($french)."'',
`spanish` = ''".utf8_encode($spanish)."''