Verbindung zum Server

Hallo
Ich bin absoluter Anfänger in Sachen Programmierung und Datenbank.
Ich habe mit php einen einfachen Code (eine kalender) geschrieben und in der datenbank postgresql auch über phpPgAdmin eine Tabelle erstellt.
Nun weiß ich aber nicht, was ich meinen Code noch hinzufügen muss, damit er
sich ersten mit dem Server verbindet und zweitens die Daten ein und ausschreibt.

mit mysql hat das geklappt, aber ich muss von mysql auf postgresql umsteigen, danke für eure Hilfe. Für das Verständnis habe ich mal alle code eingegeben. Es ist nur ein kleines Programm. Ich hoffe, das ist okay.

function mysqlConnect(){
   $connection = new mysqli("##SERVER##", "##NUTZERNAME##", "##PASSWORT##", "##TABELLENNAME##");

    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $connection->query("SET NAMES 'utf8'");
    return $connection;



<?php
setlocale(LC_TIME, "de_DE");
require_once "db.php";


function getMittwoch($y, $m)
{
    return new DatePeriod(
        new DateTime("first wednesday of $y-$m"),
        DateInterval::createFromDateString('next wednesday'),
        new DateTime("last day of $y-$m")
    );
}

function getVeranstaltung($tagWert){
    $db = mysqlConnect();
    $ergebnis = $db->query("SELECT veranstaltung FROM kalender WHERE `tag` = $tagWert");

    return $ergebnis->fetch_assoc();
}

?>

<html>
  <head>
    <meta charset="utf-8">
    <title>Mittwoch-Kalender</title>
    <style>
      
    </style>
  </head>
  <body>

    <h1>Mittwoch-Kalender</h1>

    <form action="addtermin.php" method="post">
        <table style="width:100%" border="1" cellpadding="5">
            <tr>
                <th>Termin</th>
                <th>Veranstaltung</th>
            </tr>
    <?
    for( $monat=1; $monat<13; $monat++ ){
        foreach (getMittwoch(date('Y'), $monat) as $mittwoch) {
            $tagWert = $mittwoch->format("dmY");
            echo "<tr>";
            echo "<td>";
            echo "<input type=\"radio\" name=\"tag\" value=\"$tagWert\" />". $mittwoch->format("l, d.m.Y");
            echo "</td>";
            echo "<td>";
            echo getVeranstaltung($tagWert)['veranstaltung'];
            echo "</td>";
            echo "</tr>";
        }
    }
    ?>
    </table>

    <br />

    <p>Zeit und Veranstaltung: <input type="text" name="veranstaltung" /></p>
    <input type="submit" value="absenden" />
</form>



<?php
require_once "db.php";


$veranstaltung = $_POST['veranstaltung'];
$tag = $_POST['tag'];

if( !empty($tag) || !empty($veranstaltung) ){
    $db = mysqlConnect();
    $db->query("INSERT INTO `kalender` (tag, veranstaltung) VALUES ($tag, \"$veranstaltung\")");
    echo "<p>Die angegebenen Änderungen wurden übernommen. Vielen Dank.</p><br>";
    echo "<a href='index.php'>Zurück</a>";
} else {
    echo "<p>Es wurde entweder kein Tag oder kein Termingrund eingetragen! <br>";
    echo "Keine Änderungen wurden übernommen.</p><br>";
    echo "<a href='index.php'>Zurück</a>";
}

?>

Du verwendest überall mysql - Funktionen. Zum einen sind die deprecated, zum anderen vollständig ungeeignet, sich mit einem PostgreSQL-DB-Server zu verbinden. Dafür gibt es eigene Funktionen in PHP, guggst Du: http://php.net/manual/de/function.pg-connect.php

Es gibt auch PDO-Treiber, um via PHP -> PDO auf PostgreSQL zuzugreifen.

Noch etwas: Du übergibst POST-Werte völlig ungeprüft an die DB. Beschäftige Dich bitte mit “SQL-Injection”. Und, weil ich grad sehe: in PostgreSQL verwendet man andere Quote-Zeichen als für MySQL.

Ach ja: grad sehe ich, du mischt mysqli und mysql - Funktionen. Auch das geht nicht - nicht einmal mit MySQL.

Hallo
Zunächst, danke für die Antwort. aber leider war das schon etwas zu hoch für mich.

Reicht es , wenn ich in die index.php Datei schreibe:


$conn_string = “host=ma-landau port=5432 dbname=kalender user=kuddel password=muddel”;
$dbconn4 = pg_connect($conn_string);

(ma-landau ist der servername, benutzer und passwort ist natürlich nicht richtig)

? Steht dann die Verbindung zur Datenbank ? Im Moment kann ich nichts testen, da ich noch keinen Dateien auf dem Server ablegen kann.

ich bin kein PHP-Mensch, sieht aber soweit optisch okay aus. Beachte aber: das ist nur die Verbindung, das ist noch kein Abschicken von Befehlen und kein Empfangen von Daten. Aber dafür gibt es gute und reichliche Doku, die Google auch kennt.

danke,
ich habe nicht ganz verstanden was hinter dem = stehen muss bei $query

$query = ‘SELECT * FROM authors’;
$result = pg_query($query) or die('Query failed: ’ . pg_last_error());

in dem Fall wohl die Abfrage, die Du hinschicken willst.

PS.: select * ist böse.

Hallo
Kannst du mir sagen, ob die postgresql commands stimmen? Wäre sehr dankbar. (P.S.select wird auch in der PHP Docu verwendet)

db.php:

// Connecting, selecting database
$dbconn = pg_connect("host=ma-landau dbname=postgres user=??? password=???")
    or die('Could not connect: ' . pg_last_error());

// Performing SQL query
$query = 'SELECT * FROM kalender';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());

}

index.php:

setlocale(LC_TIME, "de_DE");
require_once "db.php";


function getMittwoch($y, $m)
{
    return new DatePeriod(
        new DateTime("first wednesday of $y-$m"),
        DateInterval::createFromDateString('next wednesday'),
        new DateTime("last day of $y-$m")
    );
}

function getVeranstaltung($tagWert){
    $dbconn = pg_connect("dbname=postgres");
    $result=pg_exec($connection_id, "SELECT * veranstaltung from kalender WHERER 'tag'=$tagWert");  

    return $result->pg_fetch_assoc();
}

addtermin.php:

<?php
require_once "db.php";


$veranstaltung = $_POST['veranstaltung'];
$tag = $_POST['tag'];

if( !empty($tag) || !empty($veranstaltung) ){
    $dbconn = pg_connect("dbname=postgres");
    $query='INSERT INTO `kalender` (tag, veranstaltung) VALUES ($tag, \"$veranstaltung\")';
    echo "<p>Die angegebenen Änderungen wurden übernommen. Vielen Dank.</p><br>";
    echo "<a href='index.php'>Zurück</a>";
} else {
    echo "<p>Es wurde entweder kein Tag oder kein Termingrund eingetragen! <br>";
    echo "Keine Änderungen wurden übernommen.</p><br>";
    echo "<a href='index.php'>Zurück</a>";
}

?>

Warum probierst Du es nicht? Warum machst Du bei solchen Dingen wie folgt keine Prüfung auf Fehler?

    $dbconn = pg_connect("dbname=postgres");
    $query='INSERT INTO `kalender` (tag, veranstaltung) VALUES ($tag, \"$veranstaltung\")';
    echo "<p>Die angegebenen Änderungen wurden übernommen. Vielen Dank.</p><br>";

Wie soll der $query-String überhaupt auf die DB kommen? Warum nutzt Du die postgres-Datenbank und erstellst keine separate für die Anwendung?

Dein :

SELECT * veranstaltung from kalender WHERER 'tag'=$tagWert"

enthält mindestens 3 Fehler. Solltest Du das Konstrukt je zum laufen bekommen und im Internet zugänglich machen, wird es Dir vermutlich innerhalb von Stunden durch SQL-Injection zerbröseln.

Alles in allem hast Du zuerst einmal ein ganz massives PHP-Nichtwissen-Problem, das ist aber hier OffTopic.

Hallo
Ich weiß, dass ich ne NULL bin in Sachen Programmierung. Als geisteswissenschaftler fehlt mir auch die Affinität dafür.
Versuche es aber.
Habe die postgres DB genommen , weil das sonst nicht geklappt hat mit der erstellung der DB. Habe keine Berechtigung, stand dort jedenfalls.
Habe folgende probleme:

  1. Ich will mich mit der postgresql db verbinden , die auch auf dem server ist.
  2. ich will, dass er abfragt, ob es einträge gibt
  3. die einträge in die entsprechende zeilen anfügen
  4. neue einträge speichern

irgendwie finde ich kein buch , dass mir zeigt, wie ich das mit php machen kann, sondern immer über eine shell unter linux.
wäre dankbar für einen guten lehrer

Der Datenbank- bzw. SQL-Teil Deiner Fragen ist simpel: zum Abfragen SELECT, zum Einfügen INSERT. Der Rest ist PHP und hier weitestgehen OffTopic. Bücher zu PHP gibt es mehr als Sand am Meer, die PHP-Funktionen zum Verbinden mit PostgreSQL und zum Abschicken von Abfragen / abholen von Ergebnissen hast Du, glaube ich, auch schon gefunden.

Die Wahl, als Datenbank PostgreSQL zu nehmen, ist absolut in Ordnung, und wenn Du ganz konkrete Fragen zu SQL allgemein oder PostgreSQL an sich hast bist Du hier auch absolut richtig, aber mit PHP kann ich (und wohl fast alle hier) Dir nicht helfen.

Andreas