IMG-LOGO
Ao navegar neste site, você aceita os cookies que usamos para melhorar sua experiência. Leia Mais
Sobre nosso curso de Ava:

PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC] ); /* 2) Heurísticas simples de nomes (ajuste/adicione se quiser) */ $signals = [ 'id' => ['id','aluno_id','idaluno','id_aluno'], 'nome' => ['nome','aluno','aluno_nome','nm_aluno'], 'polo' => ['polo','unidade','campus'], 'curso' => ['curso','curso_nome','nm_curso'], 'status' => ['status','situacao','sit_aluno'], 'ultimo_acesso' => ['ultimo_acesso','last_login','last_access','data_ultimo_acesso'], ]; $logSignals = [ 'aluno_fk' => ['aluno_id','id_aluno','idaluno'], 'data_acesso' => ['data_acesso','dt_acesso','acesso_em','created_at','data','data_login','login_em'], ]; function scoreColumn(string $col, array $cands): int { $colL = mb_strtolower($col); $best = 0; foreach ($cands as $i => $cand) { if ($colL === $cand) return 100 - $i; // match exato vale mais if (strpos($colL, $cand) !== false) $best = max($best, 50 - $i); } return $best; } // pega todas as tabelas do schema $tables = $pdo->prepare("SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = ?"); $tables->execute([$dbName]); $tables = array_column($tables->fetchAll(), 'TABLE_NAME'); // pega colunas de cada tabela $colsByTable = []; $getCols = $pdo->prepare("SELECT COLUMN_NAME, DATA_TYPE FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?"); foreach ($tables as $t) { $getCols->execute([$dbName, $t]); $colsByTable[$t] = $getCols->fetchAll(); } // tenta achar “tabela de alunos” $bestAluno = null; $bestScore = -1; foreach ($colsByTable as $t => $cols) { $scores = ['id'=>0,'nome'=>0,'polo'=>0,'curso'=>0,'status'=>0,'ultimo_acesso'=>0]; foreach ($cols as $c) { foreach ($scores as $key => $_) { $scores[$key] = max($scores[$key], scoreColumn($c['COLUMN_NAME'], $signals[$key])); } } // pontuação base: id + nome (essencial) + extras $total = $scores['id']*2 + $scores['nome']*2 + $scores['polo'] + $scores['curso'] + $scores['status'] + $scores['ultimo_acesso']; if ($total > $bestScore) { $bestScore = $total; $bestAluno = ['table'=>$t,'scores'=>$scores,'cols'=>$cols]; } } // tenta achar “tabela de logs” $bestLog = null; $bestScoreLog = -1; foreach ($colsByTable as $t => $cols) { $sFk = 0; $sDt = 0; foreach ($cols as $c) { $sFk = max($sFk, scoreColumn($c['COLUMN_NAME'], $logSignals['aluno_fk'])); $sDt = max($sDt, scoreColumn($c['COLUMN_NAME'], $logSignals['data_acesso'])); } $total = $sFk*2 + $sDt*2; if ($total > $bestScoreLog) { $bestScoreLog = $total; $bestLog = ['table'=>$t, 'sFk'=>$sFk,'sDt'=>$sDt,'cols'=>$cols]; } } // helper pra pegar o melhor nome de coluna pra um sinal function pickCol(array $cols, array $cands): ?string { $best = ['', -1]; foreach ($cols as $c) { $sc = scoreColumn($c['COLUMN_NAME'], $cands); if ($sc > $best[1]) $best = [$c['COLUMN_NAME'], $sc]; } return $best[1] > 0 ? $best[0] : null; } header('Content-Type: text/plain; charset=utf-8'); echo "=== Detector de esquema (MySQL) ===\n\n"; echo "Banco: $dbName\n"; echo "Candidata a tabela de alunos: {$bestAluno['table']} (score $bestScore)\n"; if ($bestAluno) { $cCols = $bestAluno['cols']; $map = [ 'id' => pickCol($cCols, $signals['id']) ?? 'id', 'nome' => pickCol($cCols, $signals['nome']) ?? 'nome', 'polo' => pickCol($cCols, $signals['polo']) ?? 'polo', 'curso' => pickCol($cCols, $signals['curso']) ?? 'curso', 'status' => pickCol($cCols, $signals['status']) ?? 'status', 'ultimo' => pickCol($cCols, $signals['ultimo_acesso']), ]; if ($map['ultimo']) { echo "\n>> Sugestão MODELO A (ultimo_acesso na tabela de alunos)\n"; echo '$schema = ' . var_export([ 'model' => 'A', 'alunos_table' => $bestAluno['table'], 'col' => [ 'id' => $map['id'], 'nome' => $map['nome'], 'polo' => $map['polo'], 'curso' => $map['curso'], 'status' => $map['status'], 'ultimo_acesso' => $map['ultimo'], ], ], true) . ";\n"; } else { echo "\n>> Não encontrei coluna de último acesso em {$bestAluno['table']}.\n"; } } echo "\nCandidata a tabela de logs: {$bestLog['table']} (score $bestScoreLog)\n"; if ($bestLog) { $lCols = $bestLog['cols']; $fk = pickCol($lCols, $logSignals['aluno_fk']); $dt = pickCol($lCols, $logSignals['data_acesso']); if ($fk && $dt) { echo "\n>> Sugestão MODELO B (MAX(data_acesso) por aluno)\n"; echo '$schema = ' . var_export([ 'model' => 'B', 'alunos_table' => $bestAluno['table'], 'logs_table' => $bestLog['table'], 'col' => [ 'id' => pickCol($bestAluno['cols'], $signals['id']) ?? 'id', 'nome' => pickCol($bestAluno['cols'], $signals['nome']) ?? 'nome', 'polo' => pickCol($bestAluno['cols'], $signals['polo']) ?? 'polo', 'curso' => pickCol($bestAluno['cols'], $signals['curso']) ?? 'curso', 'status' => pickCol($bestAluno['cols'], $signals['status']) ?? 'status', ], 'logs_col' => [ 'aluno_fk' => $fk, 'data_acesso' => $dt, ], ], true) . ";\n"; } else { echo "\n>> Não consegui inferir as colunas de FK/data em {$bestLog['table']}."; } } echo "\n\nDica: se tiver mais de uma tabela de alunos/logs, rode e compare os scores.\n";

Carga horária: 322323 hora(s) Categoria: ADMINISTRATIVO

Temos o melhor preço para você.
R$ 34.343,43 ou 4x de R$ 8.585,86

Nossas Vantagens

Certificado Reconhecido.
Suporte online de Segunda/Sábado das 8 até as 18 horas.
Aulas de qualidade com aprendizado garantido.
Estude no seu ritmo e revise quantas vezes quiser.
Veja no vídeo abaixo os motivos para fazer um curso EAD
Cronograma do curso