J'ai écrit cette requête pour obtenir des données de 3 tables différentes qui ont une colonne similaire.
Le problème, c'est que cela génère une erreur:
500 erreur de serveur interne
J'ai besoin que la sortie soit sous la forme de json, et les valeurs des colonnes de tâches devraient être des tableaux enfants (dans le json).
S'il vous plaît laissez-moi savoir où l'erreur est dans cette requête.
$query2 = "SELECT
jos_mobile_contacts.contact_record_id,
jos_mobile_contacts.firstName,
jos_mobile_contacts.lastName,
jos_mobile_contacts.mobiePhoneNumber,
jos_mobile_contacts.officePhoneNumber,
jos_mobile_contacts.contactType,
jos_mobile_contacts.email,
jos_mobile_contacts.address,
jos_mobile_contacts.address2,
jos_mobile_contacts.city,
jos_mobile_contacts.state,
jos_mobile_contacts.Zip,
jos_mobile_contacts.notes,
jos_mobile_contacts.customfield1,
jos_mobile_contacts.customfield2,
jos_mobile_contacts.customfield3,
jos_mobile_contacts.companyName,
jos_mobile_contacts.title,
jos_tasks.title,
josi_tasks.priority,
jos_tasks.description
FROM jos_mobile_contacts
INNER JOIN jos_tasks
WHERE jos_mobile_contacts.registered_mobile_id ='453'
and jos_tasks.registered_mobile_id ='453'";
$db->setQuery($query2);
$db->query();
$numrows= $db->getNumRows();
$rowsContacts = $db->loadAssocList();
if ($numrows <= 0 ) {
$displayAction = "display:none";
} else {
foreach ($rowsContacts as $contactInfo) {
$row_array['contactsId']= $contactInfo['contact_record_id'];
$row_array['firstName']= $contactInfo['firstName'];
$row_array['lastName']= $contactInfo['lastName'];
$row_array['mobiePhoneNumber']= $contactInfo['mobiePhoneNumber'];
$row_array['officePhoneNumber']= $contactInfo['officePhoneNumber'];
$row_array['priority']= $contactInfo['priority'];
$row_array['title']= $contactInfo['title'];
}
echo $row_array;
}
Une erreur 500 n'est pas assez précise pour savoir exactement ce qui a provoqué le crash, mais je vois des problèmes dans votre code.
La cause exacte de votre erreur 500 pourrait être l’une des situations ci-dessus, je soupçonne le numéro 4.
Je ne peux pas tester le code ci-dessous sans accéder à votre base de données, mais cela devrait vous mettre sur la bonne voie.
$mobileid = 453;
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('contacts.contact_record_id, contacts.firstName,
contacts.lastName, contacts.mobiePhoneNumber,
contacts.officePhoneNumber, contacts.contactType,
contacts.email, contacts.address, contacts.address2,
contacts.city, contacts.state, contacts.Zip,
contacts.notes, contacts.customfield1, contacts.customfield2,
contacts.customfield3, contacts.companyName, contacts.title,
tasks.title, josi_tasks.priority, tasks.description')
->from('#__tasks AS tasks')
->innerJoin('#__mobile_contacts AS contacts ON tasks.registered_mobile_id = contacts.registered_mobile_id')
->where('tasks.registered_mobile_id = '.$mobileid);
$db->setQuery($query2);
$rowsContacts = $db->loadAssocList();
if (count($rowsContacts)){
$displayAction = "display:none";
} else {
foreach ($rowsContacts as $contactInfo) {
$row_array['contactsId'] = $contactInfo['contact_record_id'];
$row_array['firstName'] = $contactInfo['firstName'];
$row_array['lastName'] = $contactInfo['lastName'];
$row_array['mobiePhoneNumber'] = $contactInfo['mobiePhoneNumber'];
$row_array['officePhoneNumber'] = $contactInfo['officePhoneNumber'];
$row_array['priority'] = $contactInfo['priority'];
$row_array['title'] = $contactInfo['title'];
}
$output = json_encode($row_array);
echo $output;
}
J'espère que ça aide. Cordialement John