• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

SQL-Abfrage verzögert durchgeführt, Seitenaufruf notwendig

jobo218

Mitglied
Hallo!

Und zwar lasse ich bei Betätigung eines Input-Buttons (Button1) einen SQL-Query ausführen. Dies trägt in eine Tabelle in meiner Datenbank eine Zeile mit neuen Daten ein. Im Prinzip ist es eine Art "Favorit"-Button

In der gleichen PHP Datei befindet sich dann auch noch eine SQL-Abfrage die überprüft, ob der Eintrag in der Tabelle (schon) vorhanden ist.

Ist der Eintrag bereits vorhanden, so wird ein anderer Button (Button2) angezeigt als zuvor.

Dies funktioniert auch soweit alles wunderbar. Nur habe ich das Problem, dass nach dem Abschicken des Formulars bzw. automatischem Neuladen der Seite immer noch Button 1 angezeigt wird. Erst wenn man dann die Seite noch einmal manuell neu lädt, wird Button 2 angezeigt.

Auch im umgekehrten Fall ist es so, denn beim Klick auf Button2 wird dann nach dem autom. Neuladen der Seite wieder der Button1 angezeigt.

Wie kann man das umgehen? Ist da die Reihenfolge in der PHP-Datei relevant? Oder muss man das generell anders machen?

Irgendwas hat da eine "Verzögerung", entweder die Eintragung in die DB oder halt die Abfrage in der PHP..?
 
Ja, die Reihenfolge ist relevant. Du musst bevor Du etwas ausgibst die übergebenen Daten verarbeiten. Danach erst die Daten aus der Datenbank auslesen und anzeigen.
 
Hmm..

Hier mal mein Code.. Tut mir leid, wenn etwas anfängerhaft ist :D

Ich glaube nicht, dass es an der Reihenfolge liegt, habe bereits die einzelnen Abfragen/Abschnitte vertauscht..

Könnt ihr damit was anfangen oder soll ich das ganze nochmal umstrukturieren oder beschreiben?

Eigentlich müsste es an der $merkenaktiv-Abfrage liegen.

<?php
$userneu = JFactory::getUser();
$dbneu = JFactory::getDbo();
$useridneu = $userneu->id;

[..]

$jobidneu = $this->job->id;

$merkenquery = $dbneu->getQuery(true);
$merkenquery = "SELECT * FROM jobfavoriten WHERE job_id = '$jobidneu' AND user_id = '$useridneu'";

$dbneu->setQuery($merkenquery);
$merkenstatus = $dbneu->loadRow();

$merkenaktiv = $merkenstatus[2];
?>


<div class"jobmerken-button">

<form class="job-merken" action='' method='POST'>

<?php if ( $merkenaktiv == '1' ) {?>
<button type='submit' name='submit2' class="entfernen-button"></button>
<?php } else { ?>
<button type='submit' name='submit' class="merken-button"></button>
<?php } ?>

</form>


</div> <!-- Job merken -->


<?php


$con = mysqli_connect("localhost","XXXX","XXXXX","studiendojobs");
// Check connection
if (mysqli_connect_errno()) {
echo "Fehler, bitte Administrator kontaktieren: " . mysqli_connect_error();
}



if(isset($_POST['submit'])) // Job eintragen
{


if ( $merkenaktiv == '0' ) { // Wenn Job bereits einmal gemerkt war dann Zeile updaten

$sql = "UPDATE jobfavoriten SET aktiv = '1' WHERE user_id = '$useridneu' AND job_id = '$jobidneu'";

} else { // Job das erste mal merken

$sql = "INSERT INTO jobfavoriten (user_id, job_id, aktiv) VALUES ('$useridneu', '$jobidneu', '1')";

}

if (!mysqli_query($con,$sql)) {
die('Error: ' . mysqli_error($con));
}
}

if(isset($_POST['submit2'])) // Job entfernen
{

$sql2 = "UPDATE jobfavoriten SET aktiv = '0' WHERE user_id = '$useridneu' and job_id = '$jobidneu' and aktiv = '1'";

if (!mysqli_query($con,$sql2)) {
die('Error: ' . mysqli_error($con));
}

}

?>
 
Zuletzt bearbeitet von einem Moderator:
Wie oben bereits geschrieben solltest Du die Reihenfolge ändern. Erst Verarbeitung, dann Ausgabe.

Und verwendet bitte Code-Tags wenn Du Quellcode im Forum postest.
 
Hallo und danke für die Antwort!

für die Ausgabe ist ja eigentlich nur das Formular innerhalb <div class="jobmerken-button"> zuständig, und diesen Teil hatte ich bereits nach unten verschoben.

Beim autom. Aktualisieren der Seite wird dann erst alles geprüft und dann ist unten im Formular ja die Abfrage, welcher Button angezeigt werden soll.
 
Ich könnte den Quellcode auch noch einmal neu posten, mit dem jobmerken-div unterhalb der SQL-Abfragen.. Aber im Endeffekt verursacht das nur wieder Augenkrebs :)

Ich hab's mittlerweile ja so umgeändert, aber ohne Änderung/Behebung der Problematik.
 
Ich danke euch für euere Hilfe, aber ich bekomme es nicht hin..

Könnte es vielleicht daran liegen, dass dieser PHP Quelltext innerhalb einer Joomla-Installation ausgeführt wird? (Im Komponentenbereich)
 
Könnte sein. In dem Fall solltest Du dich an eine Joomla-Community wenden oder deren Dokumentation lesen.
 
Zurück
Oben