Beiträge von Silversurfer20002
-
-
-
Hier mal noch ein Screenshot davon:
wenn man zu den Punkten nach hinten scrollt, dann passiert das.
Was mir jetzt aber auch noch aufgefallen ist, du gibst mit deinem Code den Vor und Nachnamen auch dann aus, wenn es im Admincenter nicht aktiviert ist. Ich hab nämlich Vor- und Nachname deaktiviert, aber rein für mich in der Datenbank den Vor und Nachnamen eingetragen. Im restlichen Tippspiel wird das dann nirgends mehr angezeigt. In deiner Änderung aber schon.
habe es analog der anderen Rankings angepasst.
-
ja, ein bisschen

ob es für alle interessant ist, kann ich natürlich nicht sagen...
kannst mir gerne eine PN schicken - oder für alle hier in diesem Thread antworten...Danke schon einmal im Voraus!

schick mir gerne eine PN (ich glaube ich kann dir keine schicken), dann können wir uns das mal in einem Zoom o.ä. anschauen.
-
Kleiner Schönheitsfehler auf Mobilgeräten.
Beim Scrollen bleibt die Überschrift Name stehen (was auch gut so ist) aber die Usernamen darunter scrollen mit weg.
Ich hoffe ist verständlich.
Habe das bei mir auf dem Iphone nochmal getestet dort tritt dieses Problem nicht auf. Welchen Mobile-Browser benutzt du? Dann könnte ich mal nach dem Problem googeln.
-
Funktioniert bei mir auch - danke Silversurfer20002



Kannst du vielleicht bei den Gruppenspielern auch noch den Rang aus der Gesamtrangliste mit anzeigen? Dann wäre es perfekt

Denke das ist möglich die Frage ist ob das für Alle anderen auch ok, gewünscht ist.
Kennst du dich ein bisschen aus mit Programmieren?? dann könnte ich die sagen was du ändern musst. -
-
-
also bei mir funktioniert es nicht. >Die Eieruhr läuft bei mir
Habe nochmal neu rein kopiert, irgendwie hat das Forum den Code verändert oder ich war zu doof zum kopieren. Habe jetzt nochmal den Code in ein anderes X-Tipp übertragen läuft sofort. Bei der Kopie aus dem Forum hatte ich das gleiche Problem. Im Anhang nochmal als Datei
-
-
-
Habe es hin bekommen, jetzt werden jeweils unter der Zeile der Gruppe die einzelnen Mitglieder als Rangliste ausgegeben.
FiedlWdd kannst du mal den Code prüfen und übernehmen? Ist wahrscheinlich eher laienhaft aber er tut.in der Datei /app/Http/Controllers/RankingController.php
Alles anzeigenCode- <?php
- namespace App\Http\Controllers;
- use App\Models\Game\Game;
- use App\Models\Ranking\Ranking;
- use App\Models\Round\Round;
- use App\Models\Season\Season;
- use App\Models\User;
- use Auth;
- use Illuminate\Contracts\Foundation\Application;
- use Illuminate\Contracts\View\Factory;
- use Illuminate\Contracts\View\View;
- use Illuminate\Http\Request;
- /**
- * RankingController
- */
- class RankingController extends Controller {
- /**
- * Show index view
- *
- * @return Application|Factory|View
- */
- public function index(): Application|Factory|View {
- // Get user league and seasons
- $league = Auth::user()->currentLeague;
- $seasons = $league->seasons;
- return view('ranking.index', [
- 'seasons' => $seasons,
- 'currentSeason' => $league->currentSeason()
- ]);
- }
- /**
- * Show group view
- *
- * @return Application|Factory|View
- */
- public function groups(): Application|Factory|View {
- // Show user league and seasons
- $league = Auth::user()->currentLeague;
- $seasons = $league->seasons;
- return view('ranking.groups', [
- 'title' => trans('ranking/groups.title'),
- 'seasons' => $seasons,
- 'currentSeason' => $league->currentSeason()
- ]);
- }
- /**
- * Get current match day
- *
- * @param int $seasonID
- *
- * @return array|int[]
- */
- public function getCurrentRoundMatchDay(int $seasonID): array {
- // Get season
- $season = Season::find($seasonID);
- if (!$season) {
- return ['roundID' => 0, 'matchDay' => 0];
- }
- // Get current or last game
- $game = $season->getCurrentOrLastGame();
- if (!$game) {
- return ['roundID' => 0, 'matchDay' => 0];
- }
- return [
- 'roundID' => $game->round_id,
- 'matchDay' => $game->game_match_day_id
- ];
- }
- /**
- * Get the ranking list
- *
- * @param Request $request
- *
- * @return string
- */
- public function getRankingList(Request $request): string {
- // Define variables
- $seasonID = $request->input('seasonID');
- $fromMatchDayRound = $request->input('fromMatchDayRound');
- $toMatchDayRound = $request->input('toMatchDayRound');
- // Prepare ranking match days and rounds
- $preparedRankingMatchDaysRound = $this->prepareRankingMatchDaysRound($seasonID, $fromMatchDayRound, $toMatchDayRound);
- // Get current ranking list
- $getRankingList = Ranking::ranking(
- $seasonID,
- $preparedRankingMatchDaysRound['rankingMatchDays'],
- $preparedRankingMatchDaysRound['rankingRounds'],
- );
- // Get current round match day
- $currentRoundMatchDay = $this->getCurrentRoundMatchDay($seasonID);
- // Go through each ranking list data
- $i = 0;
- $rankingList = [];
- foreach ($getRankingList as $row) {
- // Check for current points
- $actualPoints = Ranking::leftJoin('ranking_metas', 'ranking_metas.id', '=', 'rankings.ranking_meta_id')
- ->where('season_id', $seasonID)
- ->where('user_id', $row->user_id)
- ->where('match_day', $currentRoundMatchDay['matchDay'])
- ->value('points');
- // If no actual points found, set default value
- if (!$actualPoints) {
- $actualPoints = 0;
- }
- // Define output
- $rankingList[$i]['place'] = $i + 1;
- $rankingList[$i]['user_id'] = $row->user_id;
- $rankingList[$i]['user'] = User::where('id', $row->user_id)->withTrashed()->first();
- $rankingList[$i]['tips'] = $row->tips;
- $rankingList[$i]['result'] = $row->result;
- $rankingList[$i]['difference'] = $row->difference;
- $rankingList[$i]['tendency'] = $row->tendency;
- $rankingList[$i]['extra'] = $row->extra;
- $rankingList[$i]['bonus'] = $row->bonus;
- $rankingList[$i]['points'] = $row->points;
- $rankingList[$i]['actualMDPoints'] = $actualPoints;
- $i++;
- }
- return view('ranking.list', compact('rankingList'))->render();
- }
- /**
- * Get the ranking list of the groups
- *
- * @param Request $request
- *
- * @return string
- */
- public function getRankingGroupsList(Request $request): string {
- // Define variables
- $seasonID = $request->input('seasonID');
- $fromMatchDayRound = $request->input('fromMatchDayRound');
- $toMatchDayRound = $request->input('toMatchDayRound');
- // Prepare ranking match days and rounds
- $preparedRankingMatchDaysRound = $this->prepareRankingMatchDaysRound($seasonID, $fromMatchDayRound, $toMatchDayRound);
- // Get current ranking list
- $getRankingList = Ranking::ranking(
- $seasonID,
- $preparedRankingMatchDaysRound['rankingMatchDays'],
- $preparedRankingMatchDaysRound['rankingRounds'],
- );
- // Define ranking list
- $xy=0;
- $groupMemberCounter = [];
- $rankingList = [];
- foreach ($getRankingList as $row) {
- // Find user with some checks
- $user = User::where('id', $row->user_id)->where('active', 1)->whereNull('deleted_at')->first();
- if ($user !== null) {
- // Go through each user group
- foreach ($user->tipgroupmember as $tipGroupMember) {
- if (isset($tipGroupMember->tip_group_id) && (isset($tipGroupMember->tip_group_role) && $tipGroupMember->tip_group_role >= 0)) {
- // Check for tips to set counter of group members
- if ($row->tips > 0) {
- $groupMemberCounter[$tipGroupMember->tip_group_id][] = $row->user_id;
- }
- // Define array of ranking list
- $rankingList[$tipGroupMember->tip_group_id]['group'] = $tipGroupMember->tipGroup;
- $rankingList[$tipGroupMember->tip_group_id]['tips'] = (isset($rankingList[$tipGroupMember->tip_group_id]['tips'])) ? ($rankingList[$tipGroupMember->tip_group_id]['tips'] + $row->tips) : $row->tips;
- $rankingList[$tipGroupMember->tip_group_id]['result'] = (isset($rankingList[$tipGroupMember->tip_group_id]['result'])) ? ($rankingList[$tipGroupMember->tip_group_id]['result'] + $row->result) : $row->result;
- $rankingList[$tipGroupMember->tip_group_id]['difference'] = (isset($rankingList[$tipGroupMember->tip_group_id]['difference'])) ? ($rankingList[$tipGroupMember->tip_group_id]['difference'] + $row->difference) : $row->difference;
- $rankingList[$tipGroupMember->tip_group_id]['tendency'] = (isset($rankingList[$tipGroupMember->tip_group_id]['tendency'])) ? ($rankingList[$tipGroupMember->tip_group_id]['tendency'] + $row->tendency) : $row->tendency;
- $rankingList[$tipGroupMember->tip_group_id]['points'] = (isset($rankingList[$tipGroupMember->tip_group_id]['points'])) ? ($rankingList[$tipGroupMember->tip_group_id]['points'] + $row->points) : $row->points;
- $xy=$xy +1;
- $rankingList[$tipGroupMember->tip_group_id]['members'][] = [
- 'user_id' => $xy,
- 'username' => $row->user->nickname . ' (' . $row->user->firstname . ' ' . $row->user->name . ')',
- 'tips' => $row->tips,
- 'result' => $row->result,
- 'difference' => $row->difference,
- 'tendency' => $row->tendency,
- 'points' => $row->points,
- ];
- }
- }
- }
- }
- // If a list found
- if (count($rankingList) > 0) {
- // Go through each group and set number of users and average points
- foreach ($rankingList as $groupId => &$singleRankingList) {
- // Check for counter of group members
- $numberUser = 0;
- if (isset($groupMemberCounter[$groupId])) {
- // Prepare array for unique items
- $groupMemberCounter[$groupId] = array_unique($groupMemberCounter[$groupId]);
- $numberUser = count($groupMemberCounter[$groupId]);
- }
- // Calculate average points
- $averagePoints = 0.0;
- if ($numberUser !== 0) {
- $averagePoints = round($singleRankingList['points'] / $numberUser, 2);
- }
- $singleRankingList['numberUser'] = $numberUser;
- $singleRankingList['averagePoints'] = $averagePoints;
- }
- }
- // Sort ranking
- Ranking::resort($rankingList, true);
- // Add sorting and ranking logic here
- foreach ($rankingList as &$rankingRow) {
- usort($rankingRow['members'], function($a, $b) {
- return $b['points'] <=> $a['points'];
- });
- $rank = 1;
- foreach ($rankingRow['members'] as &$member) {
- $member['rank'] = $rank;
- $rank++;
- }
- }
- return view('ranking.group_list', compact('rankingList'))->render();
- }
- /**
- * Get all match days from a round
- *
- * @param Request $request
- *
- * @return array
- */
- public function getRoundMatchDay(Request $request): array {
- // Define output variables
- $output = [];
- $currentRoundMatchDay = [];
- // Get and check round
- $round = Round::find($request->input('roundID'));
- if ($round !== null) {
- // Get first match day
- $firstMatchDay = $round->getFirstRelativeMatchday();
- // Define output variable
- $s = 0;
- for ($x = 0; $x < $round->match_days; $x++) {
- $output[$s]['value'] = ($firstMatchDay + $x);
- $output[$s]['name'] = ($firstMatchDay + $x) . '. Spieltag';
- $s++;
- }
- // Get current match day
- $currentRoundMatchDay = $this->getCurrentRoundMatchDay($round->season_id);
- if ($currentRoundMatchDay['matchDay'] < $firstMatchDay) {
- $currentRoundMatchDay['roundID'] = $round->id;
- $currentRoundMatchDay['matchDay'] = $firstMatchDay;
- }
- }
- return [
- 'matchDay' => $output,
- 'count' => count($output),
- 'currentRoundMatchDay' => $currentRoundMatchDay
- ];
- }
- /**
- * Get all rounds from a season
- *
- * @param Request $request
- *
- * @return array
- */
- public function getSeasonRounds(Request $request): array {
- // Get season
- $season = Season::find($request->input('seasonID'));
- if ($season !== null) {
- return $season->preparedMatchDayRounds();
- }
- return [];
- }
- /**
- * Function to get complete ranking list
- *
- * @param Request $request
- *
- * @return Application|Factory|View|\Illuminate\Foundation\Application
- */
- public function completeRankingList(Request $request) {
- // Get complete ranking
- $completeData = Ranking::leftJoin('ranking_metas', 'ranking_metas.id', '=', 'rankings.ranking_meta_id')
- ->selectRaw('rankings.user_id, SUM(rankings.tips) as tips, SUM(rankings.result) as result,
- SUM(rankings.difference) as difference, SUM(rankings.tendency) as tendency,
- SUM(rankings.points) as points, SUM(rankings.extra) as extra,
- SUM(rankings.bonus) as bonus')
- ->groupBy('rankings.user_id')
- ->orderBy('points', 'desc')->orderBy('tips', 'asc')->orderBy('extra', 'desc')
- ->orderBy('bonus', 'desc')->orderBy('result', 'desc')
- ->orderBy('difference', 'desc')->orderBy('tendency', 'desc')->get();
- $rankingList = [];
- $i = 0;
- foreach ($completeData as $singleData) {
- // Define output
- $rankingList[$i]['place'] = $i + 1;
- $rankingList[$i]['user'] = User::where('id', $singleData->user_id)->withTrashed()->first();
- $rankingList[$i]['tips'] = $singleData->tips;
- $rankingList[$i]['result'] = $singleData->result;
- $rankingList[$i]['difference'] = $singleData->difference;
- $rankingList[$i]['tendency'] = $singleData->tendency;
- $rankingList[$i]['extra'] = $singleData->extra;
- $rankingList[$i]['bonus'] = $singleData->bonus;
- $rankingList[$i]['points'] = $singleData->points;
- $i++;
- }
- return view('ranking.complete_ranking_list', [
- 'rankingList' => $rankingList,
- ]);
- }
- /**
- * Prepare calculation for match days and rounds for ranking
- *
- * @param int $seasonID
- * @param string $fromMatchDayRound
- * @param string $toMatchDayRound
- *
- * @return array[]
- */
- private function prepareRankingMatchDaysRound(int $seasonID, string $fromMatchDayRound, string $toMatchDayRound): array {
- // Get possible rounds
- $fromMatchDayRounds = explode('_', $fromMatchDayRound);
- $toMatchDayRounds = explode('_', $toMatchDayRound);
- // Define types
- $fromType = $fromMatchDayRounds[0];
- $toType = $toMatchDayRounds[0];
- // Define default values for get ranking
- $rankingMatchDays = [];
- $rankingRounds = [];
- // Check from information
- if ($fromType === 'matchday') {
- $rankingMatchDays['from'] = $fromMatchDayRounds[1];
- }
- // Check to information
- if ($toType === 'matchday') {
- $rankingMatchDays['to'] = $toMatchDayRounds[1];
- } else {
- // Check for equal rounds
- if ($fromMatchDayRounds[1] === $toMatchDayRounds[1]) {
- $rankingRounds['in'] = explode('-', $toMatchDayRounds[1]);
- } else {
- // Get season
- $season = Season::find($seasonID);
- // Get all round ids between from and to values
- $allRoundIds = [];
- $isBetween = false;
- foreach ($season->preparedMatchDayRounds()['matchDaysRounds'] as $matchDayRoundsKey => $matchDayRounds) {
- // Check if this is inside
- if ($matchDayRoundsKey === $fromMatchDayRound) {
- $isBetween = true;
- }
- // Check if this match_day_rounds is between
- if ($isBetween) {
- $keyParts = explode('_', $matchDayRoundsKey);
- if ($keyParts[0] === 'matchday') {
- $roundIdParts = [];
- $allRounds = Game::select('round_id')->whereHas('Round', function($query) use ($season) {
- $query->where('season_id', $season->id);
- })->where('game_match_day_id', $keyParts[1])->groupBy('round_id')->get();
- foreach ($allRounds as $singleRound) {
- $roundIdParts[] = $singleRound->round_id;
- }
- } else {
- $roundIdParts = explode('-', $keyParts[1]);
- }
- $allRoundIds = array_merge($allRoundIds, $roundIdParts);
- }
- // Check if this is not inside anymore
- if ($matchDayRoundsKey === $toMatchDayRound) {
- break;
- }
- }
- // Set information
- $rankingRounds['in'] = array_unique($allRoundIds);
- }
- }
- return [
- 'rankingMatchDays' => $rankingMatchDays,
- 'rankingRounds' => $rankingRounds,
- ];
- }
- }
/resources/views/ranking/group_list.blade.php
Alles anzeigenCode- @if (isset($rankingList))
- <table class="table-fixed w-full">
- <thead>
- <tr>
- <th class="w-14 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_place') }}</th>
- <th class="w-40 sm:w-4/12 p-1.5 fixed-column ranking-place-rest">{{ trans('ranking/index.ranking_list_group_name') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_tips') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_result_short') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_difference_short') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_tendency_short') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_points') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_number_user') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_average') }}</th>
- </tr>
- </thead>
- <tbody>
- @if (count($rankingList) > 0)
- @foreach ($rankingList as $rankingRow)
- <tr class="@if ($loop->iteration == '1') ranking-place-first @elseif($loop->iteration == 2) ranking-place-second @elseif($loop->iteration == 3) ranking-place-third @endif">
- <td class="text-center p-1.5">{{ $loop->iteration }}</td>
- <td class="p-1.5 fixed-column @if ($loop->iteration == '1') ranking-place-first @elseif ($loop->iteration == 2) ranking-place-second @elseif ($loop->iteration == 3) ranking-place-third @else ranking-place-rest @endif">
- <a href="{{ route('tipGroup.detail', [$rankingRow['group']->id]) }}" title="{{ $rankingRow['group']->name }}" class="profile-link">
- {{ $rankingRow['group']->name }}
- </a>
- </td>
- <td class="text-center p-1.5">{{ $rankingRow['tips'] }}</td>
- <td class="text-center p-1.5">{{ $rankingRow['result'] }}</td>
- <td class="text-center p-1.5">{{ $rankingRow['difference'] }}</td>
- <td class="text-center p-1.5">{{ $rankingRow['tendency'] }}</td>
- <td class="text-center p-1.5">{{ $rankingRow['points'] }}</td>
- <td class="text-center p-1.5">{{ $rankingRow['numberUser'] }}</td>
- <td class="text-center p-1.5">{{ number_format($rankingRow['averagePoints'], 2, ',', '.') }}</td>
- </tr>
- @if (isset($rankingRow['members']) && count($rankingRow['members']) > 0)
- <tr>
- <td colspan="9" class="p-0">
- <details>
- <summary class="pl-10px border-b" style= "padding-left: 5vw">{{ trans('Gruppendetails') }}</summary>
- <table class="w-full">
- <thead>
- <tr>
- <th class="w-14 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_place') }}</th>
- <th class="w-40 sm:w-4/12 text-left p-1.5 fixed-column">{{ trans('Name') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_tips') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_result_short') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_difference_short') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_tendency_short') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5">{{ trans('ranking/index.ranking_list_points') }}</th>
- <th class="w-16 sm:w-1/12 text-center p-1.5"></th>
- <th class="w-16 sm:w-1/12 text-center p-1.5"></th>
- </tr>
- </thead>
- <tbody>
- @foreach ($rankingRow['members'] as $member)
- <tr>
- <td class="text-center p-1.5">{{ $member['rank'] }}</td>
- <td class="p-1.5">{{ $member['username'] }}</td>
- <td class="text-center p-1.5">{{ $member['tips'] }}</td>
- <td class="text-center p-1.5">{{ $member['result'] }}</td>
- <td class="text-center p-1.5">{{ $member['difference'] }}</td>
- <td class="text-center p-1.5">{{ $member['tendency'] }}</td>
- <td class="text-center p-1.5">{{ $member['points'] }}</td>
- <td class="text-center p-1.5"></td>
- <td class="text-center p-1.5"></td>
- </tr>
- @endforeach
- </tbody>
- </table>
- </details>
- </td>
- </tr>
- @endif
- @endforeach
- @else
- <tr>
- <td colspan="9" class="p-1.5 border-solid border-slate-300 border-y-[1px] text-center">
- {{ trans('ranking/index.ranking_list_no_data') }}
- </td>
- </tr>
- @endif
- <tr>
- <td colspan="9"> </td>
- </tr>
- <tr>
- <td class="w-1/12 text-center font-bold">{{ trans('ranking/index.ranking_list_result_short') }}</td>
- <td class="w-5/12">{{ trans('ranking/index.ranking_list_result_legend') }}</td>
- <td class="w-1/12 text-center font-bold">{{ trans('ranking/index.ranking_list_difference_short') }}</td>
- <td class="w-5/12" colspan="6">{{ trans('ranking/index.ranking_list_difference_legend') }}</td>
- </tr>
- <tr>
- <td class="w-1/12 text-center font-bold">{{ trans('ranking/index.ranking_list_tendency_short') }}</td>
- <td class="w-5/12" colspan="8">{{ trans('ranking/index.ranking_list_tendency_legend') }}</td>
- </tr>
- </tbody>
- </table>
- @else
- <div class="row">
- <div class="col-md-12 text-center">
- <i class="fa fa-spinner fa-spin"></i> {{ trans('ranking/index.ranking_list_load') }}
- </div>
- </div>
- @endif
-
Hallo,
Vielen Dank noch mal für die tolle schnelle Lösung gestern! Ich hätte eine Frage, wäre es möglich, für die Finalrunde eine andere Punktevergabe einzustellen?
-
Falls es hilft das Spiel ist jetzt mit id52 „alt“ und 103 „neu“ drin
-
Spiel ist jetzt 2mal im MatchCenter
-
@FiedlWdd vielen Dank an die das du trotz laufendem Spiel dich darum kümmerst!
-
Hallo zusammen,
da ich mehre Tippspiele habe und auch in allen mit tippe wollte ich mir den Aufwand sparen meine Tipps zu übertragen. Daher habe ich mir ein php Skript erstellt welches die Tipps aus einem Tippspiel in die anderen überträgt. Die Ausführung geschieht entweder per CronJob oder aufruf. Ich hoffe das ist für den Ein oder Andern interressant.
Aufruf:
Cron:* * * * * curl "http://deine-domain.de/Tippspiel_update.php?username=admin&password=password123"
Web:
* * * * * http://deine-domain.de/Tippspi…dmin&password=password123"
PHP-Datei:
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Einfache Passwort-Authentifizierung
$valid_username = 'admin'; // Benutzername
$valid_password = 'password123'; // Passwort
// Authentifizierung prüfen
$username = $_GET['username'] ?? '';
$password = $_GET['password'] ?? '';
if ($username !== $valid_username
$password !== $valid_password) {echo 'Unauthorized';
exit;
}
// Datenbankverbindungsdetails
$db1 = [
'host' => 'localhost',
'user' => 'username1',
'pass' => 'password1',
'name' => 'db1'
];
$db2 = [
'host' => 'localhost',
'user' => 'username2',
'pass' => 'password2',
'name' => 'db2'
];
$db3 = [
'host' => 'localhost',
'user' => 'username3',
'pass' => 'password3',
'name' => 'db3'
];
// Funktion zur Herstellung einer Datenbankverbindung
function connectDB($db) {
$mysqli = new mysqli($db['host'], $db['user'], $db['pass'], $db['name']);
if ($mysqli->connect_error) {
die("Verbindung fehlgeschlagen: " . $mysqli->connect_error);
}
return $mysqli;
}
try {
// Daten aus db1 abrufen
$mysqli1 = connectDB($db1);
$result = $mysqli1->query("SELECT * FROM tips WHERE user_id = 1");
if (!$result) {
throw new Exception("Fehler beim Abrufen der Daten aus db1: " . $mysqli1->error);
}
if ($result->num_rows > 0) {
// Funktion zum Einfügen oder Aktualisieren von Daten in der Ziel-Datenbank
function insertOrUpdate($mysqli, $data) {
// Prüfen, ob die Kombination bereits existiert
$stmt = $mysqli->prepare("SELECT COUNT(*) FROM tips WHERE game_id = ? AND user_id = ?");
if (!$stmt) {
throw new Exception("Fehler beim Vorbereiten der Abfrage: " . $mysqli->error);
}
$stmt->bind_param("ii", $data['game_id'], $data['user_id']);
$stmt->execute();
$stmt->bind_result($count);
$stmt->fetch();
$stmt->close();
if ($count > 0) {
// Update
$stmt = $mysqli->prepare("UPDATE tips SET home_goals = ?, guest_goals = ?, created_at = ?, updated_at = ?, deleted_at = ? WHERE game_id = ? AND user_id = ?");
if (!$stmt) {
throw new Exception("Fehler beim Vorbereiten der Update-Abfrage: " . $mysqli->error);
}
$stmt->bind_param("iisssii", $data['home_goals'], $data['guest_goals'], $data['created_at'], $data['updated_at'], $data['deleted_at'], $data['game_id'], $data['user_id']);
$stmt->execute();
$stmt->close();
} else {
// Insert
$stmt = $mysqli->prepare("INSERT INTO tips (game_id, user_id, home_goals, guest_goals, created_at, updated_at, deleted_at) VALUES (?, ?, ?, ?, ?, ?, ?)");
if (!$stmt) {
throw new Exception("Fehler beim Vorbereiten der Insert-Abfrage: " . $mysqli->error);
}
$stmt->bind_param("iiissss", $data['game_id'], $data['user_id'], $data['home_goals'], $data['guest_goals'], $data['created_at'], $data['updated_at'], $data['deleted_at']);
$stmt->execute();
$stmt->close();
}
}
// Verbindung zu db2 herstellen
$mysqli2 = connectDB($db2);
// Verbindung zu db3 herstellen
$mysqli3 = connectDB($db3);
// Alle Datensätze durchlaufen und einfügen oder aktualisieren
while ($data = $result->fetch_assoc()) {
insertOrUpdate($mysqli2, $data);
insertOrUpdate($mysqli3, $data);
}
echo "Daten erfolgreich übertragen und aktualisiert!";
} else {
echo "Keine Daten für user_id = 1 gefunden.";
}
// Verbindungen schließen
if (isset($mysqli1)) $mysqli1->close();
if (isset($mysqli2)) $mysqli2->close();
if (isset($mysqli3)) $mysqli3->close();
} catch (Exception $e) {
echo "Fehler: " . $e->getMessage();
}
?>
-
Ich würde gerne den Test unterstützen, wo finde ich die Files oder eine Anmeldung?
-
In der mobilen Version ist es nur Zeile 35 oder? Weil danach bleibt es auf meinen iPhone weiterhin leer

Auf dem Desktop funktioniert es aber super
Bei mir klappt, es leider auch nicht war ich wohl etwas zu vorschnell was die mobile Version angeht sorry
-
Habe es bei mit hin bekommen. Habe in der Datei content/uebersicht.tipps.ueberblick.php den Wert in Zeile 39 und 54 auf "1627030000" geändert. Müsst ich natürlich auch in der mobilen Version tun.