Kann ich gleichzeitig einen Wert ändern und auslesen (SQL)?

Ich möchte eine Tabelle erstellen in die verschiedene Werte eingetragen werden sollen. Darunter gibt es eine Spalte mit dem Namen "ID". Diese ID soll immer eins höher als die zuletzt hinzugefügte ID sein. Da IDs aber auch wieder gelöscht werden können, habe ich mir überlegt dass man ein Eintrag erstellt welcher die ID 0 besitzt

Die Tabelle besitzt noch eine zweite Zeile namens "Content". Wenn man jetzt einen neuen Eintrag macht, soll der Content des Eintrages mit der ID 0 um 1 erhöht werden, außerdem soll der neue Eintrag als ID den neuen wert des Contents bekommen:

Tabelle vorher

ID| Content

0 | 10


Tabelle nacher

ID| Content

0 | 11

11| "Ich mag Kekse"

Da dieser Code auch funktionieren soll, wenn viele Leute gleichzeitig neue Einträge erstellen, kommt das UPDATE von mySQL ganz gelegen:

UPDATE table_name SET content =content+1 WHERE ID=0

Hiermit wird schonmal verhindert, dass wenn zwei Leute gleichzeitig einen Eintrag erstellen, die ID nur um 1 erhöht wird.

Jetzt soll aber gleichzeitig der content bei ID=0 ausgelesen werden. Wenn man die anweisungen nacheinander ausliest kann es sein, dass benutzer 1 den wert bekommt der durch benutzer 2 entstanden ist (wenn sie gleichzeitig einen neuen Eintrag machen). (zumindest wenn man nach dem oben genannten code den Content mit SELECT ausließt.)

Wie kann man also mit MySQL in einer Zeile einen Wert ändern und gleichzeitig auslesen? in diesem Fall soll der Content bei ID=0 um eins erhöht werden und gleichzeitig soll der gleiche Content ausgelesen werden. (Dabei ist es egal ob man den Wert von vor der Addition oder den von danach bekommt, da man ja dann noch +1 rechnen kann :D )

SQL, programmieren, MySQL, PHP
XAMPP Apache startet nicht bzw. bleibt hängen?

Hallo, immer wenn ich irgendein Programm mit (Apache, MySQL...) mit XAMPP starten möchte, bleibt das Control Panel bei Versuche Apache Windows Dienst zu starten... stehen ;( Weiß jemand wie ich das beheben kann?

Das steht im Control Panel:

14:45:31  [main]    Initialisere Control Panel
14:45:31  [main]    Windows Version:  Home  64-bit
14:45:31  [main]    XAMPP Version: 7.0.0
14:45:31  [main]    Control Panel Version: 3.2.2  [ Compiled: Nov 12th 2015 ]
14:45:31  [main]    Mit Administratorrechten gestartet - gut!
14:45:31  [main]    XAMPP Installationsverzeichnis: "c:\xampp\"
14:45:31  [main]    Voraussetzungen werden geprüft
14:45:31  [main]    Alle Voraussetzungen sind erfüllt
14:45:31  [main]    Initialisiere Module
14:45:31  [Apache]  Apache Dienst mit falschem Pfad erkannt
14:45:31  [Apache]  Ändere XAMPP Apache und Control Panel Einstellungen oder
14:45:31  [Apache]  Entferne/Deaktiviere den anderen Windows Dienst vorher
14:45:31  [Apache]  Pfad gefunden: ERROR: Could Not Get Service Config
14:45:31  [Apache]  Erwarteter Pfad: "c:\xampp\apache\bin\httpd.exe" -k runservice
14:45:31  [mysql]   MySQL Dienst mit falschem Pfad erkannt
14:45:31  [mysql]   Ändere XAMPP MySQL und Control Panel Einstellungen oder
14:45:31  [mysql]   Entferne/Deaktiviere den anderen Windows Dienst vorher
14:45:31  [mysql]   Pfad gefunden: ERROR: Could Not Get Service Config
14:45:31  [mysql]   Erwarteter Pfad: c:\xampp\mysql\bin\mysqld.exe --defaults-file=c:\xampp\mysql\bin\my.ini mysql
14:45:31  [filezilla]   FileZilla Dienst mit falschem Pfad erkannt
14:45:31  [filezilla]   Ändere XAMPP FileZilla und Control Panel Einstellungen oder
14:45:31  [filezilla]   Entferne/Deaktiviere den anderen Windows Dienst vorher
14:45:31  [filezilla]   Pfad gefunden: "C:\program files\xampp\filezillaftp\filezillaserver.exe"
14:45:31  [filezilla]   Erwarteter Pfad: "c:\xampp\FileZillaFTP\filezillaserver.exe"
14:45:31  [Tomcat]  Tomcat Dienst mit falschem Pfad erkannt
14:45:31  [Tomcat]  Ändere XAMPP Tomcat und Control Panel Einstellungen oder
14:45:31  [Tomcat]  Entferne/Deaktiviere den anderen Windows Dienst vorher
14:45:31  [Tomcat]  Pfad gefunden: ERROR: Could Not Get Service Config
14:45:31  [Tomcat]  Erwarteter Pfad: c:\xampp\tomcat\bin\tomcat7.exe //RS//Tomcat7
14:45:31  [main]    Starte Check-Timer
14:45:31  [main]    Control Panel bereit
14:45:33  [Apache]  Versuche Apache Windows Dienst zu starten...
14:47:58  [Apache]  Versuche Apache Windows Dienst zu starten...
14:50:08  [mysql]   Versuche MySQL Windows Dienst zu starten...

Danke für jede Hilfe Croghs

HTML, Apache, MySQL, PHP, xampp
MySQL select Abfrage mit spezieller Gruppierung

Hallo Leute,

ich stehe zur Zeit bei einer etwas (für mich) komplexen mySQL bzw. PHP Abfrage. Vielleicht könnt ihr mir einen Schubs in die richtige Richtung geben?!

Ich frage eine Tabelle mit verschiedenen Spalten ab, die auch verschiedene Werte beinhalten, die ich via AVG bzw. SUM berechne. Soweit so gut. In einer Spalte allerdings sind verschiedene Produktnamen die ich gruppieren will, allerdings gruppieren solange ein bestimmtes Zeichen im Produktnamen nicht erreicht ist.

Beispielabfrage:

SELECT COUNT(  `product` ) AS anzahl, AVG(  `aufwand` ) AS aufwand,  `product` FROM  `tabelle` WHERE 1 AND datum BETWEEN "$datumsvariable"  AND "$datumsvariable2'" AND `product` != "" AND  `product` !=  "\"\"" GROUP BY  `product`  ORDER BY  `aufwand`

Soweit so gut... Allerdings gibt es nun eben diese Produktnamen mit Klammern "(", die Details beinhalten die ich nicht als eigene Gruppe will. zB.

  • produktname AB
  • produktname CD
  • produktname CD (details bla bla)
  • produktname CD (details bla bla)
  • produktname AB
  • produktname AB (details bla bla)
  • produktname CD

Meine obige mySQL-Abfrage würde nun 4 Gruppen machen:

  • produktname AB
  • produktname AB (details bla bla)
  • produktname CD
  • produktname CD (details bla bla)

Ich will aber

  • produktname AB
  • produktname CD

Die produktname AB (details bla bla) und produktname CD (details bla bla) sollen enthalten sein in produktname AB bzw. produktname CD

Ich hoffe das war soweit verständlich und ihr könnt mir helfen.

Danke im Voraus, lg DeepX

SQL, programmieren, Datenbank, MySQL, PHP
Mehrere while Schleifen ineinander

Hallo zusammen,

ich glaube, meine Frage ist ziemlich leicht zu beantworten, da sie, wahrscheinlich, einfach nur auf einem Denkfehler beruht^^. Dennoch sitze ich jetzt seit einiger Zeit daran und finde keine Lösungsmöglichkeit, auch mit dem Inkrement einer Variable, damit eine Schleife nur einmal ausgeführt wird, führt nicht zum gewünschten Ergebnis. Vielleicht kann mir hier ja jemand weiterhelfen, bzw. hatte das gleiche Problem auch mal ;-)

Erstmal zum Vorhaben: Ich hole aus einer MySQL Datenbank die Spalte "Namen", diese Spalte beinhaltet, wer hät's gedacht, einige Namen. Der zweite Teil ist, dass ich mit der php Funktion "opendir" ein Verzeichnis auf dem Server öffne und alle Verzeichnisse dahinter auslese. Sprich: Ich öffne mit php den Ordner Namen, dann listet er mir die Verzeichnisse (sind mit Namen betitelt) dahinter auf. Soweit so gut, einzelnd funktioniert das auch super. Das Problem kommt erst, wenn ich beides gleichzeitig mache, dazu später mehr... Am Ende möchte ich die Namen, die ich aus der Datenbank geholt habe, von den Verzeichnisnamen abziehen, dies erfolgt mit string replace.

Nun der Code:

    $abfrage = "SELECT Name FROM blabla ORDER BY ID ASC";
    $ergebnis = mysql_query($abfrage);  
    while($row = mysql_fetch_object($ergebnis))
    {   
    echo $row->Name;

    if ($handle = opendir('../../../Namen/')) {
    while (false !== ($file = readdir($handle))) {
        if ($file != "." && $file != "..") {
            echo $file;
        }
    }
    closedir($handle);
    }
    }

In der ersten while Schleife hole ich den Inhalt aus der Datenbank und gebe ihn aus, passt, dann öffne ich das Verzeichnis "Namen" auf dem Server und lasse die Verzeichnisse dahinter auflisten. Als Seitenoutput bekomme ich jetzt allerdings den ersten Namen der Datenbank, dann die Verzeichnisse auf dem Server, dann wieder ein Name der Datenbank und die Verzeichnisse auf dem Server, dann wieder ein Name der Datenbank usw. Ist logisch, da ich ja beide while Schleifen ineinander verschachtelt habe, somit bekomme ich jedes Mal, wenn etwas aus der Datenbank geholt wird, den Serverinhalt mit. Das soll aber nicht sein...

Nun zu meiner Frage: Wie bekomme ich es hin, dass ich $row->Name (erste while) von $file (zweite while) abziehen kann, ohne dass mir hunderte Sachen (while Ergebnisse) ausgegeben werden? Irgendwie stehe ich auf dem Schlauch...

Über eine Antwort und eine kurze Erklärung würde ich mich wirklich sehr freuen!

Grüße, Hummel

programmieren, Datenbank, MySQL, PHP, PHP 5

Meistgelesene Beiträge zum Thema PHP