En una ocasión, ‘ignatius73’, uno de mis lectores, me envió este post, y no puedo dejar de publicárselo:
He aquí la historia, gracias al maestro Miguel Ángel, me esclareció en un tema que me tenía trabado. Soy programador PHP pero no soy muy experto en objetos PHP, por lo que me mareo fácilmente, así cuando debía rellenar un select en un formulario con datos que provenían de una base de datos en drupal, me encontraba con que no podía, mis conocimientos no bastaban, así que le solicité asistencia al maestro y aquí pego la solución:
“Hace tiempo que implementé una especie de “frigorífico virtual”. De ahí te saco el siguiente código (si lo quieres, lo publico entero en la web, ya que debería estar ahí desde hace siglos):”
<?phpfunctionvirtualcoin_putbackedit_form($data,$putbackid=NULL){/* Lista de productos */$query="SELECT id, name FROM {virtualcoin_products} p order by name";$queryResult=db_query($query,$putbackid);$products=array();while($p=db_fetch_object($queryResult)){$products[$p->id]=$p->name;}/* Datos del putback */$title=t("Editar una reposición");$button=t("Guardar cambios");$query="SELECT p.name, b.productid, b.prizeunit, b.quantity FROM {virtualcoin_products} p, {virtualcoin_putbacks} b WHERE b.id=%d and p.id = b.productid";$queryResult=db_query($query,$putbackid);$putback=db_fetch_object($queryResult);$name=$putback->name;$prizeunit=$putback->prizeunit;$quantity=$putback->quantity;$productid=$putback->productid;$form=array('purchase'=>array('#type'=>'fieldset','#title'=>t($title),'putbackid'=>array('#type'=>'hidden','#value'=>$putbackid),'product'=>array('#type'=>'select','#title'=>'Producto','#options'=>$products,'#default_value'=>$productid),'prizeunit'=>array('#type'=>'textfield','#title'=>t('Precio por unidad'),'#default_value'=>$prizeunit),'quantity'=>array('#type'=>'textfield','#title'=>t('Cantidad'),'#default_value'=>$quantity),'submit'=>array('#type'=>'submit','#value'=>$button,),),);return$form;}/**
* Implementation of hook_submit().
*/functionvirtualcoin_putbackedit_form_submit($form,&$form_state){$putbackid=$form_state['values']['putbackid'];$productid=$form_state['values']['product'];$prizeunit=$form_state['values']['prizeunit'];$quantity=$form_state['values']['quantity'];global$user;$query="UPDATE {virtualcoin_putbacks} set productid=%d, prizeunit=%f, quantity=%d where id = %d ";$queryResult=db_query($query,$productid,$prizeunit,$quantity,$putbackid);if($queryResult)drupal_set_message(t("Se ha modificado el producto ".$name));elseform_set_error('',t('Error durante el guardado.'));}?>
Fíjense qué fácil era!
Y qué prolijo, caramba, si pudiera yo trabajar (laburar para este hemisferio) así…
Gracias Miguel Ángel, continúa así, con tus tutoriales que son fenomenales.