joomla Datenbank select-und insert-Abfrage

ich versuche, legen Sie eine weitere info zu joomla (2.5.7) Datenbank, nachdem der Benutzer registriert ist. Der Benutzer wählt seine usergroup, und ich möchte einfügen, um nur geschehen, wenn der Benutzer in einer bestimmten Gruppe. So versuche ich diesen code verwenden, um die Gruppe Daten aus der Datenbank zuerst verwendet werden, in der insert-Abfrage. Jetzt ist es nur ein Test, später dieser abgerufen Wert verwendet werden, wenn-Anweisung.

Dies ist der code:

function onUserAfterSave($user, $isnew, $success, $msg)
    {
    if ($isnew && $success) {
  $db = &JFactory::getDBO();
  $query = "SELECT #__k2_users.group FROM #__k2_users WHERE userID = ".$user['id'];
  $db->setQuery($query);
  $group = $db->loadResult();

  $db->setQuery( 'INSERT INTO #__user_profiles (ordering) VALUES ('.$group.')' );
  $db->query();
   if (!$db->query()) 
   {
    throw new Exception($db->getErrorMsg());
   }  
  }
    return $this->onAfterStoreUser($user, $isnew, $success, $msg);
}

- und dies ist der Fehler, bin ich immer auf die fehlgeschlagene Anmeldung:

Column count doesn't match value count at row 1 SQL=INSERT INTO std13_user_profiles (ordering) VALUES ()

Wenn ich es richtig lese, bedeutet es, dass die select-Anweisung ist nicht wieder alles, aber warum? Danke für Eure Hilfe.

UPDATE:

 if ($isnew && $success) {
  $db = &JFactory::getDBO();
  $userId   = JArrayHelper::getValue($user, 'id', 0, 'int');
  $query = "SELECT #__k2_users.group FROM #__k2_users WHERE userID = ".$userId;
  $db->setQuery($query);
  $group = $db->loadResult();


    $query2 = "INSERT INTO #__user_profiles (ordering) VALUES ('".$group."')";
    $db->setQuery($query2);
    $db->query();
   if (!$db->query()) 
   {
    throw new Exception($db->getErrorMsg());
   }  
  }

mit diesem code habe ich keine Fehler erhalten und der Benutzer ist nicht registriert, und die Werte eingefügt werden. Aber die $Gruppe ist immer 0, und basierend auf dem Wert nur 1 oder 3 in k2_users Tabelle, ich vermute, dass es nichts zurückgibt. Ich denke, es kann sein, dass die registrierten Benutzer nicht gespeichert ist in der Datenbank noch nicht und es nicht über seine ID noch für die Gruppe?

UPDATE2:

if ($isnew && $success) {
$count = JRequest::getVar('gender');
if($count == 3) {
$db = &JFactory::getDBO();
$alias = $user['name'];
$table = array(
' '=>'-', 'Š'=>'S', 'š'=>'s', 'Ð'=>'Dj', 'Ž'=>'Z', 'ž'=>'z', 'C'=>'C', 'c'=>'c', 'C'=>'C', 'c'=>'c',
'À'=>'A', 'Á'=>'A', 'Â'=>'A', 'Ã'=>'A', 'Ä'=>'A', 'Å'=>'A', 'Æ'=>'A', 'Ç'=>'C', 'È'=>'E', 'É'=>'E',
'Ê'=>'E', 'Ë'=>'E', 'Ì'=>'I', 'Í'=>'I', 'Î'=>'I', 'Ï'=>'I', 'Ñ'=>'N', 'Ò'=>'O', 'Ó'=>'O', 'Ô'=>'O',
'Õ'=>'O', 'Ö'=>'O', 'ě'=>'e', 'Ù'=>'U', 'Ú'=>'U', 'Û'=>'U', 'Ü'=>'U', 'Ý'=>'Y', 'Þ'=>'B', 'ß'=>'Ss',
'à'=>'a', 'á'=>'a', 'â'=>'a', 'ã'=>'a', 'ä'=>'a', 'å'=>'a', 'æ'=>'a', 'ç'=>'c', 'è'=>'e', 'é'=>'e',
'ê'=>'e', 'ë'=>'e', 'ì'=>'i', 'í'=>'i', 'î'=>'i', 'ï'=>'i', 'ð'=>'o', 'ñ'=>'n', 'ò'=>'o', 'ó'=>'o',
'ô'=>'o', 'õ'=>'o', 'ö'=>'o', 'ø'=>'o', 'ù'=>'u', 'ú'=>'u', 'û'=>'u', 'ý'=>'y', 'ý'=>'y', 'þ'=>'b',
'ÿ'=>'y', 'R'=>'R', 'r'=>'r', " "=>'-', '"'=>'-'
);
$string = strtr($alias, $table);
$alias_low = strtolower($string);
$query = "INSERT INTO #__menu (menutype, title, alias,  path, link, type, published, level, component_id, access) VALUES ('stavebnici','".$user['name']."','".$alias_low."','".$alias_low."',
'index.php?option=com_k2&view=itemlist&layout=user&id=".$user['id']."&task=user','component',1,1,10012,1)";
$db->setQuery($query);
$db->query();
if (!$db->query()) 
{
throw new Exception($db->getErrorMsg());
}
}  
}

OKAY! Ich habe es zu arbeiten, so kann ich jetzt neu einfügen-Menü jedes mal, wenn ein Benutzer angelegt wird, aber th Aktivierungs-link wird nicht erstellt und die Anmeldung sagt, dass es fehlgeschlagen ist. Dies ist der Fehler:

Duplicate entry '0-1-vojtech-plesner-' for key 'idx_client_id_parent_id_alias_language' SQL=INSERT INTO std13_menu (menutype, title, alias, path, link, type, published, level, component_id, access) VALUES ('stavebnici','Vojtěch Plešner','vojtech-plesner','vojtech-plesner', 'index.php?option=com_k2&view=itemlist&layout=user&id=2789&task=user','component',1,1,10012,1)

Den client_id, parent_id und Sprache haben Werte von 1,1 und * abd Sie sind in allen Zeilen, also warum ist es zu sagen, es ist ein doppelter?

  • was ist der Wert von $group .
  • ich will das $ - Gruppe das Ergebnis aus der select-Abfrage sollte es eine Nummer 1 oder 3
  • versuchen Sie, den code zu Debuggen von Anfang an in dieser Funktion.
  • Ich habe bearbeitet Sie meine Frage mit mehr code
InformationsquelleAutor Vojtech | 2012-10-06
Schreibe einen Kommentar