problema con el query

Hola,

esto es el query que tengo en la vista:




<?php      

                                                   

mysql_connect("localhost","USERNAME","PASWORD");


mysql_select_db("privato");

                                          

$divisione = Yii::app()->user->id;

$query = "SELECT sessione_id, SUM(totale) FROM sessione WHERE operatore_id=$divisione"; 

$result = mysql_query($query) or die(mysql_error());

while($totale = mysql_fetch_array($result)){

echo  $totale['SUM(totale)'];

 }

?>"



Ahora ya se que un query en la vista no es bueno por seguridad y logica MVC…asy es unh html form en una vista MVC.

Pero lo he echo asi por que no llego hacerlo de otra manera.

Esto es el form html que he puesto en la vista:




<form id="Confermasessione" name="Confermasessione" action="Confermasessione">

<input size="3"  class="totale" id="totale" readonly="readonly" name="totale" value="<?php mysql_connect("localhost","root","");


mysql_select_db("privato");

						  $divisione = Yii::app()->user->id;

$query = "SELECT sessione_id, SUM(totale) FROM sessione WHERE operatore_id=$divisione"; 

$result = mysql_query($query) or die(mysql_error());

 

while($totale = mysql_fetch_array($result)){

echo  $totale['SUM(totale)'];

 }

?>"> €

                             

    </td>

 </tr>

        

<tr class="table_data_header">

<td class="table_data_l" colspan="3">Importo Ricevuto

        </td>      

         

<td class="table_data">

<input  size="3" class="importoricevuto" id="importoricevuto" value="0.00" name="importoricevuto"/> €

  </td>

         

 <tr class="table_data_header">

    <td class="table_data_l" colspan="3">Resto

 </td>

 <td class="table_data">

<input value="<?php echo $resto ;?>"  id="resto" class="resto" size="3" readonly="readonly" name="resto"/> €

  </td>

</tr>

<tr class="table_data_footer">

 <td colspan=3 class="table_last_lr">

  <center><?php echo CHtml::submitButton('Il Cliente ha Pagato', array('class'=>'btn btn-primary', 'submit' => array('ConfermaSessione'))); ?>


<?php echo CHtml::submitButton('Continua a Postalizzare', array('class'=>'btn btn-success', 'submit' => array('NuovaPostalizzazione'))); ?>

        </center>

</form> 



Esta claro tambièn que el segundo boton "Continua a Postalizzare" tanpoco puede funcionar por que el form ya tiene su action"…" y en tonces el boton tanpoco va a funcionar.

Ahora quiero poner el query en el Controlador o y en el model me da igual.

Pero tanpoco se come pner un textField en el form que me llame la action por del query.

Mas o menos como se hace por los dropDownList (menu) donde creamos nuestra accion en el controlador y la llamamos en el form con $model->MiAccion.

He ententado tambièn hacerlo asi pero no me sale. Estoy trabajando desde un Controlador diferente de la tabla session, que es la tabla donde ago el query. Alguien puede ayudarme porfavor??

Entoces lo que quiero es poner el query e un controlador, quitar el form html y trabajar con el CActiveForm y campos textField. Los dos mas abajo de "totale" ya se como hacerlos…pero en el campo "totale" necesito el query.

Les pego la vista completa.




<div class="table_box">

<table class="table" style="width: 90%; margin: auto;">

	<tbody>

		<tr>

			<td colspan=3 class="table_info_header table_first_lr">Sessione Utente</td>

		</tr>

		<tr class="table_data_header">

			<td class="table_data_l"><b>Mittente</b></td>

			<td class="table_data"><b>Codice Sessione Cliente</b></td>

			<td class="table_data_r"><b>N. Operazioni</b></td>

		</tr>

         <tr id="table_data_content">

						<td style="border-left:3px solid #2da4dd;"> 

                         <?php 

						 //$sessione = Cassa::model()->findByAttributes(array('cassa_id'=>array($model->cassa_id)));

						 //$sessioneutente=Sessione::model()->findAll('id = 1');

						 $sessione = Sessione::model()->findAllByAttributes(array('operatore_id'=>array(Yii::app()->user->id)));

						 foreach ($sessione as $sess){

						echo $sess->mittente_nome. '  ' .$sess->mittente_cognome. ' <br> ' ;

						}?> 

                        </td>

		

						<td class="table_data">

                        <?php echo $sess->sessione. '' ; ?>

                        </td>

                       

						<td style="border-right:3px solid #2da4dd;">

                                 <?php 

								 $sessione = Sessione::model()->findAllByAttributes(array('operatore_id'=>array(Yii::app()->user->id)));

								 $sum = 0;

								 foreach($sessione as $sess=>$sessione_id) {

									 $sum += $sessione_id;

									 }

									 echo "$sum ";

									 ?>

                         </td>

		</tr>

        <tr class="table_data_footer">

			<td colspan=3 class="table_last_lr">

            </td>

		</tr>

        </tbody>

        </table>

        <br /><br />

        <table class="table" style="width: 90%; margin: auto;">

        <tbody>

        <tr>

        <td colspan="5" class="table_info_header table_first_lr">Riepilogo Operazioni</td>

        </tr>

        <tr class="table_data_header">

			<td class="table_data_l"><b>Operazione</b></td>

			<td class="table_data"><b>Imponibile</b></td>

			<td class="table_data"><b>IVA</b></td>

							<td class="table_data"><b>Totale</b></td>

					</tr>

                    <tr>

        

        

        <tr id="table_data_content">

						<td style="border-left:3px solid #2da4dd;"> 

						 <?php 

						$sessione = Sessione::model()->findAllByAttributes(array('operatore_id'=>array(Yii::app()->user->id)));

						foreach ($sessione as $sess){

                                                echo '<a href="/sito/Missiva/vedimissiva/'.$sess->sessione_id.'">' .$sess->prodotto. '('.$sess->tracking. ') - verso - ' .$sess->cliente_cap.','.$sess->cliente_comune. ' ('.$sess->cliente_provincia.')'. '</a><br><br>' ;

                                                

                                                }?>

						

						 

                        </td>

		

						<td class="table_data">

                        <?php 

						$sessione = Sessione::model()->findAllByAttributes(array('operatore_id'=>array(Yii::app()->user->id)));

						foreach ($sessione as $sess){

						echo  $sess->prezzo.' €','<br><br> ' ;

						}?> 

                        </td>

                       

						<td class="table_data">

                        <?php 

						$sessione = Sessione::model()->findAllByAttributes(array('operatore_id'=>array(Yii::app()->user->id)));

						 foreach ($sessione as $sess){

						echo $sess->iva.'<br><br> ' ;

						}?> 

                        </td>

                        

                        <td class="table_data">

                        <?php 

						$sessione = Sessione::model()->findAllByAttributes(array('operatore_id'=>array(Yii::app()->user->id)));

						foreach ($sessione as $sess){

						echo $sess->totale.' €','<br><br> ' ;

						}?>  

                        </td>

		</tr>

        <tr class="table_data_header">

        <td class="table_data_l" colspan="3">Importo Totale

        </td> 

        

                <td class="table_data">

                


                <form id="Confermasessione" name="Confermasessione" action="Confermasessione">

                <input size="3"  class="totale" id="totale" readonly="readonly" name="totale" 

                value="<?php                       

						   

							mysql_connect("localhost","root","");

                              mysql_select_db("privato");

							  $divisione = Yii::app()->user->id;

                                $query = "SELECT sessione_id, SUM(totale) FROM sessione WHERE operatore_id=$divisione"; 

	                            $result = mysql_query($query) or die(mysql_error());

                                 // Print out result 

                                while($totale = mysql_fetch_array($result)){

                                	echo  $totale['SUM(totale)'];

                                 }

                             ?>"> €

                             

                         </td>

        

                       </tr>

        

         <tr class="table_data_header">

        <td class="table_data_l" colspan="3">Importo Ricevuto

        </td>      

         

         <td class="table_data">

         <input  size="3" class="importoricevuto" id="importoricevuto" value="0.00" name="importoricevuto"/> €

         </td>

         

         <tr class="table_data_header">

        <td class="table_data_l" colspan="3">Resto

        </td>

         <td class="table_data">

         <input value="<?php echo $resto ;?>"  id="resto" class="resto" size="3" readonly="readonly" name="resto"/> €

         

             

         </td>

        </tr>

		<tr class="table_data_footer">

			<td colspan=3 class="table_last_lr">

            <center><?php echo CHtml::submitButton('Il Cliente ha Pagato', array('class'=>'btn btn-primary', 'submit' => array('ConfermaSessione'))); ?>

			              <?php echo CHtml::submitButton('Continua a Postalizzare', array('class'=>'btn btn-success', 'submit' => array('NuovaPostalizzazione'))); ?>

        </center>

        </form> 

            </td>

		</tr>

</tbody>

</table>

</div>


<script language="javascript">

<!--


function ContinuaPostalizzazione() {

  document.location.href= "http://localhost/nuovapostalizzazione"

}


//-->

</script>


<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js "></script>

     <script type="text/javascript">

	 // we used jQuery 'keyup' to trigger the computation as the user type

$('.importoricevuto').keyup(function () {

	

 

    // initialize the sum (total price) to zero

    var sum = parseFloat($(this).val());

     

    // we use jQuery each() to loop through all the textbox with 'price' class

    // and compute the sum for each loop

    $('.totale').each(function() {

        

		

			sum -= parseFloat($(this).val());

    });

	

     

    // set the computed value to 'totalPrice' textbox

	$('#resto').val( sum.toFixed(2));

     

});

</script>



Un Saludo

Debes leer la documentación de Yii, nada de lo que tienes es de Yii si no que usas PHP puro y eso es lo que te esta dando problemas. Las funciones de consulta se hacen en el model, el controller llama a dichas funciones y manda el resultado a las vistas.

Si vas a agregar un formulario e inputs Yii tiene algo para ello CActiveForm.

Si vas a agregas javascript o css Yii tiene algo para ello CClientScript

Si vas a mostrar una tabla de datos Yii tiene algo para ello CGridView

Cuando utilizas bases de datos (casi siempre) Yii tiene algo para ello Base de Datos.

No tiene sentido usar un framework si no vas a utilizar nada de lo que el framework te ofrece.

Hola a18327 lo que dices es verdad y ya lo sabia :) . Toda mi aplicacion esta echa con El framework utilizando todas las funcinalidades que dices, però este form lo he creado con php, html y java por que como he dicho antes no llego a crear el query con el framework. Lo he ententado crear mi funcion en el modelo pero no me sale y entonces lo he creado asi. Por eso tambien he pedido ayuda a qui, para ver si alguien puede ayudarme. Gracias lo mismo por tu respuesta. :)

Hola Giannix,

la query que quieres hacer, la del SUM, en yii se hace así:




$criteria=new CDbCriteria;

$criteria->select = 'sessione_id, SUM(totale) AS ctotale';

$criteria->condition = 'operatore_id = :operatore_id';

$criteria->params = array ( 

':operatore_id'=> Yii::app()->user->id,

);

Sessione::model()->findAll($criteria);




Por supuesto, teniendo un model Sessione.php que apunte a la tabla sessione, y añadiendole la propiedad:




public $ctotale;



Haces bien en llevarte el acceso a datos de la vista al controlador. En la vista no debe haber esas cosas… Pero lo urgente es que quites todas esas llamadas a mysql_connect! ya no se accede así a la base de datos! yii ofrece alternativas mucho mejores como bien dice a18327.

Un saludo

Hola carletes y gracias por tu respuesta.

Ya se como he dicho a a18327 en el mensaje de arriba, que Yii ofrece alternativas mucho mejores, y he dicho tambien que las utilizo en la parte restante de mi aplicacion :) , pero he ententado hacer esa pagina con la funcionalidades de Yii ma no he llegado hacerlo, tambien por que hace poco tiempo que utilizo este framework.

Por eso lo he echo asi, aun que ya sabia que la forma de hacerlo con Yii no era esa.

muchas gracias por los consejos que me distes los dos, y les pido desculpa por mi espanol que tanpoco esta perfecto.

Un Saluto y gracias otra vez :)