CSS und PHP kombinieren

J3ossy

Newbie
Registriert
Feb. 2020
Beiträge
3
Hallo zusammen

Ich bin gerade an einer kleinen Arbeit und habe folgendes Problem.. meine in der ausgelagerten CSS Datei referenzierten ID und Classes von der PHP Seite funktionieren nicht.. Ich hab schon etliches versucht aber ich komme nicht mehr weiter..

Meine PHP Datei:

<!DOCTYPE HTML>
<html>
<head>
<title>Bestellliste</title>
<meta charset="UFT-8">
<link rel="stylesheet" href="stylesheet.css" type="text/css">
</head>
<body id="Liste">
<div id="rand">
<?php

include("config.php");
mysqli_select_db($db,"projekt");
$table_name = "bestellung";
$sql = "SELECT * FROM $table_name";
$result = mysqli_query ($db, $sql) or
die ("Kann nicht selektieren");
echo '<table class ="tabelle" >';
echo '<tr> <th>Name</th> <th>Anzahl</th> <th>Material</th></tr>';
while ($row = mysqli_fetch_array($result)) {
$name = $row['name'];
$anzahl = $row['anzahl'];
$material = $row['material'];
echo "<tr id= 'treihe'>";
echo "<td>". $row['name'] . "</td>";
echo "<td>". $row['anzahl'] . "</td>";
echo "<td>". $row['material'] . "</td>";
echo "</tr>";
}
echo "</table>";
echo '<p> <a href="Bestellformular.html">Brauchst du etwas?</a></p>';
echo '<p> <a href="login.html">Login</a></p>';
?>
</div>
</body>
</html>

und das CSS, sind nur Beispiele die ich getestet habe:

#Liste {
background-image: url(Marktgasse.jpg);
}
.tabelle {
border: #262626;
position: absolute;
top: 50%;
left: 50%;
}
#rand {
border: red;
}
#treihe {
border: red;
}

aber keines von funktioniert..
Habe ich etwas übersehen ?

Danke für euer Feedback!!
LG
Sandro
 
Bitte den Code-Tag benutzen :)

Im Prinzip bist du auf dem richtigen weg, allerdings musst du das ganze als z.B. index.php speichern und alle HTML-Elemente mittels echo oder print ausgeben. Sprich das:

PHP:
<?php

muss das erste und das letze sein Tag sein. Dann sollte auch das CSS ohne Probleme klappen.
 
Cool Master schrieb:
muss das erste und das letze sein Tag sein
Nö. Ist zwar schlechter Stil, aber mann kann das auch so mischen. Die wichtigere frage ist: was kommt beim Browser an? Mit der taste F12 kommt man bei jedem aktuellen Browser in die Entwickleransicht und kann sich anzeigen lassen was der Browser an Daten bekommen hat und wie er es interpretiert. Passt da das HTML? Hat er auch das CSS geladen?
 
Wenn du die "border" Werte meinst, dann muesstest du aber border: 1px solid red; schreiben damit die angezeigt werden. Ansonsten passt das eigentlich so.
 
Zuletzt bearbeitet: (Raute bei Farbe entfernt)
@Jesterfox

Ok, dass man das Mischen kann war mir nicht bewusst aber ich habs ehrlich gesagt auch noch nie gemacht.
 
Ich würde auch folgende Punkte angucken:

border benötigt drei Angaben in dieser verkürzten Schreibweise: Dicke Strichart Farbe, z.B.
CSS:
border: 1px solid red;
border: medium dotted #00ff00;

Ist schon länger her, aber probier auch mal
PHP:
echo "<tr id= \"treihe\">";
statt
PHP:
echo "<tr id= 'treihe'>";

Ich weiß nicht, ob es relevant ist, aber ich habe Klassen und IDs nie groß geschrieben.

Schönen Abend noch!
 
@r15ch13

fast, die Raute bei "#red" kann weg. Die Raute bräuchte man nur für Hex-Code.
 
  • Gefällt mir
Reaktionen: r15ch13
Wird denn tatsächlich auch die stylesheet.css geladen?

@r15ch13 ohne Raute ist es richtig. Die Raute nutzt man bei Hex Werten: border: 1px solid red;

Und da fehlt am Ende ein backslash:
Code:
<link rel="stylesheet" href="stylesheet.css" type="text/css" />
 
  • Gefällt mir
Reaktionen: r15ch13
CSS und PHP hat erstmal nichts gemein.
PHP: Server
CSS: client

Falls da was nicht läuft ist der Fehler im HTML oder CSS teil. Als erstes würde ich mir mal das CSS anschauen und da testweise sowas reinschreiben:

body
{
background-color: #E8E8E8;
}

Kann sein das dein lokaler Appache/xampp neugstartet werden muss damit die Änderungen übernommen werden.
 
Cool Master schrieb:
Ok, dass man das Mischen kann war mir nicht bewusst aber ich habs ehrlich gesagt auch noch nie gemacht.
Das stammt aus der Anfangszeit von PHP wo es eigentlich als eine Art Template-Sprache gedacht war, deswegen gibt es eben auch diese <?php Tags um zwischen HTML und Code trennen zu können. Aber mittlerweile ist das komplett unüblich geworden, weils auch sehr unübersichtlich wird bei größeren Projekten.
 
Vielen Dank für die ganzen Antworten, es lag tatsächlich daran, das zb. das Border tag im css nicht die richtige Syntax hatte.

Ich habe nun noch folgendes Problem, für das Bearbeiten der Datensätze habe ich folgenden Code geschrieben:
Code:
<!DOCTYPE html>
<html>
<head>
<title>Bestellung bearbeiten</title>
</head>
<body>

<h1>Ausgewählte Bestellung bearbeiten</h1>

<?php

include("config.php");
mysqli_select_db($db,"projekt");


// Prüfe Button-Auswahl
if(isset($_POST["auswahl"])){

    // Datenbankabfrage starten
    $id = $_POST["auswahl"];
    $abfrage = "SELECT * FROM bestellung WHERE id = $id";
    $result = mysqli_query($db, $abfrage);

    // Datensatz in Variablen speichern
    $dsatz = mysqli_fetch_assoc($result);
    $name = $dsatz["name"];
    $anzahl = $dsatz["anzahl"];
    $material = $dsatz["material"];
 

    // Das Bearbeiten-Formular anzeigen
    echo "<form action='bearbeiten.php' method='post'>";
    echo "<input name='id' type='hidden' value='$id'>";
    echo "<p><input name='name' value='$name'> Name</p>";
    echo "<p><input name='anzahl' value='$anzahl'> Anzahl</p>";
    echo "<p><input name='material' value='$material'> Material</p>";
    echo "<input name='bearbeitungAbschicken' value='Bearbeitung abschließen' type='submit'>";
    echo "</form>";

    echo "<a href='listeadmin.php'>zurück zur Übersicht</a>";
}

//Datensatz aktualisieren mit UPDATE
if(isset($_POST["bearbeitungAbschicken"])){
    $id = $_POST["id"];
    $name = $_POST["name"];
    $anzahl = $_POST["anzahl"];
    $material = $_POST["material"];
 

//String für Update-Anweisung erstellen
$update = "UPDATE bestellung SET
name=$name,
anzahl=$anzahl,
material=$material,
WHERE id = $id";

//MySQL-Anweisung ausführen
    mysqli_query($db, $update);

    echo "Datensatz bearbeitet.<br>";
    echo "<a href='listeadmin.php'>zurück zur Übersicht</a>";
}

//Wenn der Nutzer in listeadmin.php keine Auswahl getroffen hat:
if(!isset($_POST["auswahl"]) && !isset($_POST["bearbeitungAbschicken"])){
    echo "Es wurde kein Datensatz ausgewählt.<br>";
    echo "<a href='listeadmin.php'>zurück zur Übersicht</a>";
}
?>
</body>
</html>

Dieser wird auch ohne Fehler ausgeführt, jedoch werden die neuen Werte nicht in die MySql Datenbank geschrieben...
Weiss jemand warum?

Danke und liebe Grüsse
Sandro
 
Oje, dein Query ist grob fahrlässig. Du musst auf jeden Fall mit Prepared Statements arbeiten.
 
  • Gefällt mir
Reaktionen: Web-Schecki, r15ch13 und BeBur
Jepp, das ist auch das erste was mir aufgefallen ist. Das mag zwar nicht die Ursache für das aktuelle Problem sein (den Grund seh ich auf Anhieb jetzt nicht, aber das "ohne Fehler" könnte wohl mit daran liegen das gar nicht nach Fehlern beim Ausführen des Queries geschaut wird), aber das sollte auf jeden Fall geändert werden.
 
Wie würde das für obigen Code ausschauen mit prepared?

theoretisch müsste es jedoch auch mit dieser simplen Variante funktionieren
 
Such mal nach mysqli prepared statements. Außerdem lassen sich SQL-Fehlermeldungen ausgeben, die so nicht direkt als Fehler via PHP-Fehlerog ausgegeben werden.
Ein Fehler dürfte mindestens sein, dass du im Statement einen String hast (name) der nicht SQL-Typisch mit ' umschlossen ist.
 
Zurück
Oben