Back to top

Autore Topic: scegliere la funzione in base alla $row!  (Letto 5467 volte)

Offline netmit

  • Nuovo arrivato
  • *
  • Post: 45
    • Mostra profilo
scegliere la funzione in base alla $row!
« il: 21 Lug 2006, 12:53:30 »
Salve a tutti..
Ho un problema, e spero che qualcuno mi possa aiutare..
Sto cercando di creare un piccolo componente in base agli orari di entrata, pausa pranzo e uscita..
Il problema è che appena faccio la login, vorrei che appena  entro mi parte la funzione di compilazione dell'orario di entrata..
Invece se dovessi rifare la login per mettre l'ora di pausa e l'ora di uscita non mi deve far partire la compilazione dell'orario ma un'altra funzione..
Questo è il codice che utilizzo..
Codice: [Seleziona]

function verifica_utente($userid,$password,$option){
/* Note: funzione per la verifica dell'utente */

global $database;
 
$query = "SELECT COUNT(*)"
. "\n FROM #__rapportino_utenti"
. "\n WHERE userid='$userid' AND password='$password' and abilitato=1";
$database->setQuery( $query );
$total = $database->loadResult();

if ($database->getErrorNum()) {
echo $database->stderr();
  return false;
}

  if ($total == 0) {
  echo "<p><font color=\"red\">Attenzione: userid e/o password errati</font></p><hr>";
  HTML_rapportino::login($userid);
  if ($row->id > 0){
  listing($userid);
  }
} else {
echo "<p><a href=\"index.php?option=com_rapportino&task=modifica_utente&userid=$userid\">Cambia i tuoi dati</a></p>";
        neworario($userid);
return false;


}
return true;
}
Con questa funzione anche dopo aver inserito i dati, e quindi la row dl db è piena,quando rifaccio la login mi fa ritornare sulla funzione di compilazione invece che in una lista..

Grazie e spero di essere stato chiaro..


*** modificato da napo, per normalizzare il layout ***
« Ultima modifica: 21 Lug 2006, 13:06:47 da -napo- »

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #1 il: 21 Lug 2006, 13:14:32 »
Codice: [Seleziona]
if ($total == 0) {
    echo "<p><font color=\"red\">Attenzione: userid e/o password errati</font></p><hr>";
    HTML_rapportino::login($userid);
    if ($row->id > 0){
        listing($userid);
    }
}
else {
    echo "<p><a href=\"index.php?option=com_rapportino&task=modifica_utente&userid=$userid\">Cambia i tuoi dati</a></p>";
    neworario($userid);
    return false;
}

Tu testi $total == 0 per vedere se ci sono errori.
Ma non testi $total == 1 per vedere se ci sono utenti. Fai semplicemente un else, ma non è corretto perchè la query (in caso di errore o attacco) potrebbe restituire più di un record.

Detto questo, $row->id cos'è?
E HTML_rapportino::login($userid); che fa?


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline netmit

  • Nuovo arrivato
  • *
  • Post: 45
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #2 il: 21 Lug 2006, 13:48:24 »
$row->id dovrebbe farmi il controllo sulla row, che se in caso ci fosse l'id (quindi l'utente ha già registrato il suo orario) mi dovrebbe dare la fnzione listing se no la funzione neworario!!

Ma quindi devo mettre anche $total==1 sotto la $total==0?

Grazie

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #3 il: 21 Lug 2006, 13:54:11 »
$row->id dovrebbe farmi il controllo sulla row, che se in caso ci fosse l'id (quindi l'utente ha già registrato il suo orario) mi dovrebbe dare la fnzione listing se no la funzione neworario!!

Ok, ma $row da dove salta fuori.
Dove la inizializzi con un valore?

Citazione
Ma quindi devo mettre anche $total==1 sotto la $total==0?

Devi mettere così:
Codice: [Seleziona]
if($total != 1) ERRORE
else CAMBIA I TUOI DATI


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline netmit

  • Nuovo arrivato
  • *
  • Post: 45
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #4 il: 21 Lug 2006, 14:03:34 »
Sicuramente ho sbagliato!
l'ho tirata fuori da un vecchio codice che avevo!

ma con $total==1 risolvo il problema?

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #5 il: 21 Lug 2006, 14:05:47 »
ma con $total==1 risolvo il problema?

No, ma rendi il codice più sicuro.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline netmit

  • Nuovo arrivato
  • *
  • Post: 45
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #6 il: 21 Lug 2006, 14:09:41 »
Codice: [Seleziona]
function verifica_utente($userid,$password,$option){
/* Note: funzione per la verifica dell'utente */

global $database;
 
$query = "SELECT COUNT(*)"
. "\n FROM #__rapportino_utenti"
. "\n WHERE userid='$userid' AND password='$password' and abilitato=1";
$database->setQuery( $query );
$total = $database->loadResult();

if ($database->getErrorNum()) {
echo $database->stderr();
  return false;
}

  if ($total == 0) {
  echo "<p><font color=\"red\">Attenzione: userid e/o password errati</font></p><hr>";
  HTML_rapportino::login($userid);
  if ($row->id > 0){
  listing($userid);
  }
} else {
echo "<p><a href=\"index.php?option=com_rapportino&task=modifica_utente&userid=$userid\">Cambia i tuoi dati</a></p>";
        neworario($userid);
return false;

}
return true;
}
Il problema non è cambiare i dati, quello è solo un link per modificare i dati dell'utente..
Il problema è che una volta voglio far vedere la function neworario per l'utente che ancora non ha inserito niente.Poi quando rifarà la login voglio far vedere la function listing..

Spero di essermi spiegato bene ora!
Grazie
 

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #7 il: 21 Lug 2006, 14:13:22 »
E in base a che cosa discrimini tra neworario e listing?
L'idea è questa:
  • fai la query e recuperi l'utente
  • verifichi che la query restituisca un solo risultato
  • se XXX allora chiami neworario
  • altrimenti chiami listing
Ma XXX cos'è?


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline netmit

  • Nuovo arrivato
  • *
  • Post: 45
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #8 il: 21 Lug 2006, 14:57:54 »
XXX penso che dovrebbe essere l'id o la userid..
Cioè io compilo il neworario..
Poi dovrò rifare la login per compilare la pausa pranzo e l'ora di uscita..
è proprio in questo caso che voglio che mi richiama la listing..
Questo è il codice della listing
Codice: [Seleziona]
function listing($userid){
global $database;
$sql = "Select * from #__rapportino_attivita WHERE userid='$userid'";

$database->setQuery($sql);
if(!$result = $database->query()) {
echo $database->stderr();
return;
}
$rows = $database->loadObjectList();
HTML_rapportino::lista($rows,$userid);

}


che a sua volta mi richiama la lista.
Codice: [Seleziona]
function lista(&$rows,$userid){
echo "<h2>Lista</h2>";
if (count( $rows ) == 0)
      echo '<tr><td>Oggi non hai ancora riportato il tuo orario<br><br></td></tr>';

$valore=1;
$k = 0;
for ($i=0, $n=count( $rows ); $i < $n; $i++) {
$row = &$rows[$i];
if ($i==0){
echo "
<table width=\"100%\" border=\"0\">
<tr bgcolor=\"#a9c5da\">
    <td width=\"10%\" align=\"center\">Azioni</td>
<td width=\"10%\" align=\"center\">Data</td>
<td width=\"15%\" align=\"center\">Ora di Entrata</td>
<td width=\"15%\" align=\"center\">Pausa pranzo</td>
<td width=\"15%\" align=\"center\">Ora di Uscita</td>
<td width=\"15%\" align=\"center\">Cliente</td>
<td width=\"20%\" align=\"center\">Attività</td>
</tr>";
}
echo "<tr>";

?>
<td align="left"><? echo CODICE RIMOSSO DA NAPO ?></td>
<td align="center"><?php HTML_rapportino::StampaData($row->data);?></td>
<td align="center"><?php echo $row->orainizio;?></td>
<td align="center"><?php echo $row->pausa;?></td>
<td align="center"><?php echo $row->orafine;?></td>
<td align="right"><?php echo $row->idcliente;?></td>
<td align="right"><?php echo $row->attivita;?></td>
</tr>
<?php
}
echo "</table>";
return;
}

Spero di averti chiarito le idee su cosa voglio fare..
tante volte spiego male i miei problemi..
Grazie

** modificato da napo per normalizzare il layout **
« Ultima modifica: 21 Lug 2006, 15:24:16 da -napo- »

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #9 il: 21 Lug 2006, 15:13:13 »
Tanto per cominciare vedo di nuovo il $row fantasma.
E poi credo ci sia un problema di fondo, non sai come discriminare il primo login dal secondo.


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline netmit

  • Nuovo arrivato
  • *
  • Post: 45
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #10 il: 21 Lug 2006, 15:16:22 »
è si mi manca proprio quello..
Non ho tante conoscienze nella parte login, per dirti la verità un pò su tutto..
Cmq piano piano cerco di imparare il più possibile..

Grazie, la $row fantasma è carina come battuta..
Cmq la metto per controllare se c'è qualche valore nel record.

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #11 il: 21 Lug 2006, 15:21:57 »
A sto giro $row anda bene, ho letto in fretta. ;)


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline napo

  • Instancabile
  • ******
  • Post: 6532
  • Sesso: Maschio
  • NO MP TECNICI, verranno ignorati
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #12 il: 21 Lug 2006, 15:28:11 »
Citazione
Cioè io compilo il neworario..
Poi dovrò rifare la login per compilare la pausa pranzo e l'ora di uscita..

Allora, il tuo utente sembra transitare in 3 stati differenti: ingresso, pausa, uscita.
Crea un campo nel db utenti che possa assumere questi valori e lo inizializzi a INGRESSO.
Quandi fai login testi lo stato, visualizzi quello che serve, e cambi lo stato.
INGRESSO -> PAUSA
PAUSA -> USCITA
USCITA -> INGRESSO


AllOne.it Consulting: http://www.allone.it Gens Joomla, il : http://www.gensjoomla.org  [url=http://www.allone.it/jooml

Offline netmit

  • Nuovo arrivato
  • *
  • Post: 45
    • Mostra profilo
Re: scegliere la funzione in base alla $row!
« Risposta #13 il: 21 Lug 2006, 15:31:18 »
credo di aver capito..
Ci proverò con calma che ora non posso..
Grazie mille e se ho qualche dubbio ti farò sapere

Thank you very much!! ;)

 



Web Design Bolzano Kreatif