WebSite X5Help Center

 
Matthias W.
Matthias W.
User

Datenbank Inhalt abrufen  de

Autor: Matthias W.
Besucht 3629, Followers 3, Geteilt 0  

Hallo,

Ich möchte bei meiner Website Daten einfügen, die auf einer MySQL Datenbank hinterlegt sind. Jetzt zu meiner Frage was sind die nötigen Schritte um den Inhalt auf der Website anzuzeigen. Ich habe die Datenbank im Datenmangement registriert und dann die Seite in eine PHP Seite verändert. Dazu noch die Abfrage als HTML Objekt eingefügt und wie sie sehen sehen sie nichts. Die Seite ist ein Intranet, ich kann sie also nicht herzeigen. Gibt es einen How-To Guide im Helpcenter um so etwas zu realisieren(Ich hab keinen gefunden)? Es ist ein stinknormaler Counter der nur etwas hochzählt und dieser Wert wird dann in eine Datenbank gespeichert. Also nichts besonderes....

Gepostet am
10 ANTWORTEN - 2 NüTZLICH - 1 KORREKT
Matthias W.
Matthias W.
User
Autor

Und anders ist es nicht möglich? Ich will keine Tabelle ausgeben, es ist nur ein Wert mehr nicht!

Mehr lesen
Gepostet am von Matthias W.
Matthias W.
Matthias W.
User
Autor

PHP Code einfügen gutes Stichwort. Wo könnte ich das den zum Beispiel tun. PHP Code Direkt geht ja eigentlich nur bei erweitert, jedoch hab ich hier wieder das Problem, dass es nirgends angezeigt wird, weil das Programm keinen Bezug dazu hat wo es was hinmachen soll. Deshalb hab ich mir immer mit dem Baukasten HTML Objekt geholfen. Dies hat auch einwandfrei funktioniert mit den jetzigen PHP Skripten(ohne MySQL), aber bei dem MySQL Skritpt, was funktioniert will er nicht. Er zeigt auch nichts an, irgendwie einen Zugriff verweigert oder andere Sachen. Jetzt ist die Frage folgende und ich hoffe ich bekomme keine flapsige Antwort.

1. Wie verbinde ich die Datenbank mit der Website! Geht das auch ohne das kaufbare Widget? Im Programm habe ich die Datenbank bereits bei 2: Datenmanagement eingetragen reicht das oder müssen noch andere Schritte befolgt werden.

2. Wo kann ich das PHP Skript einfügen, dass es das Programm in der Seite ausgibt. Das Skript habe ich schon passend fertig sogar mit CSS Code zusätzlich um die Sache zu gestalten. Es funktioniert einwandfrei seit 2 Jahren in der alten Version der Website(nicht mit Website X5 gebaut).

Ich frage also nicht wie ich es schreiben muss, da das wie du schon sagtest individuell ist und nicht Teil dieses Helpcenters ist. Ich frage wie muss ich es im Programm anpacken, dass es sich verbindet und wo kann ich steuern in welchem Abschnitt ausgegeben wird. Nur nach der Funktion des Programms, nichts weiter.

Mehr lesen
Gepostet am von Matthias W.
Andreas S.
Andreas S.
Moderator

1. Die Datenbank brauchst du nicht mit der Website zu verbinden. Außer du willst Blogkommentare oder Benutzerdaten speichern. Dann musst du im Datenmanagement die Datenbank-Zugangsdaten eintragen. Ansonsten wenn du nur die Datenbank auslesen willst, wird das nicht benötigt.  Ein PHP Skript muss vom Server gestartet werden und deshalb muss die php Datei auch dort liegen.  Starten kann man es mit einem Link auf diese URL !   Normalerweise kann man auch PHP Skripte in ein HTML-Objekt oder unter Seo&Code einfügen. Man muss nur die Seite dann auf PHP umstellen, damit es auch reagiert. Ansonsten kann ich dir mit dem Code nicht weiterhelfen.

Mehr lesen
Gepostet am von Andreas S.
Matthias W.
Matthias W.
User
Autor

Naja so ganz kann das nicht stimmen. Man kann nicht einfach nur so zum Spaß eine Verbindung mit einer Datenbank aufbauen, das scheint mir dann doch ein bisschen zu einfach. Meine Datenbank hat natürlich auch Zugangsdaten mit der sich der Server bei der Datenbank meldet und sagt "hey du kennst mich ich darf Daten nehmen". Würde ich jetzt so mir nichts dir nichts eine Verbindung zu MySQL aufbauen geb ich dir Brief und Siegel, dass er zumindest bei meiner Datenbank erstmal sagt "ne du kommst hier nicht rein dich kenne ich nicht" und das sollte auch bei jeder normalen Datenbank so sein. Also muss es einen Weg geben mit der Datenbank eine Verbindung aufzubauen um an die Daten zu kommen. Was passiert den in diesem Widget? Man wird es doch nicht einfach so da reinsetzten und dann ganz gemächlich Daten eingeben, die dir das Widget dann ausgibt. Hier muss man doch auch sicherlich irgendwie Zugangsdaten eingeben bzw. festlegen in welche Datenbank man greifen möchte. Ich brauche nämlich kein Widget zu KAUFEN, dass mir am Ende genau das gleiche wie zuvor beschert nämlich eine leere Anzeige. Gibt es hierzu irgendwelche Infos?? Und ja ich weiß das PHP Serverseitig ist, bloß komischerweise funktionieren alle alten Skripte auch, nur dieses MySQL Skript nicht, was zuvor auch funktioniert hat.

Mehr lesen
Gepostet am von Matthias W.
Dieter D.
Dieter D.
User

Hi Matthias!

Andreas hat recht, du brauchst die DB Verbindung nicht über X5, wenn du nicht die X5-Standardobjekte, die DB Daten nutzen, verwendest (Userregistrierung, Shopartikel,..).

Nun, ich löse so etwas recht simpel über ein Codeobjekt. Allerdings bin ich doch ein halbwegs erfahrener PHP-Programmierer und wenn du mit MySQL und PHP arbeitest, musst du schon immer auch viel an Sicherheit denken.

Hier ein ganz kurzes Beispiel, wie ein solches Codeobjekt aussehen könnte:

<?php
require_once("include/dbconn.php");
$abfrage = "SELECT id, field1, field2, sort_field FROM mytable order by sort_field";
$ergebnis = mysqli_query($verbindung, $abfrage);
while ($row = mysqli_fetch_object($ergebnis)) {
    if (isset($row->field1) and isset($row->field2))
        {echo $row->field1 . ' - ' . $row->field1 . '<br />';}
    }
mysqli_free_result($ergebnis);
?>

Dazu brauchst du auf deinem Webspace in einem Unterverzeichnis "include" noch die Verbindungsdatei "dbconn.php", die etwa so aussehen könnte:

<?php
/* INCLUDE: Verbindung zur Datenbank herstellen */
$verbindung = new mysqli("localhost","my_user", "my_password", "my_database")
or die ("keine Verbindung möglich. Benutzername oder Passwort sind falsch");
mysqli_set_charset($verbindung, 'utf8');
$abfrage = "SET NAMES utf8";
$ergebnis = mysqli_query($abfrage);
?>

Das Beispiel holt die aus deiner DB aus einer Tabelle "mytable" alle Einträge der Felder "field1" und "field2" und gibt sie aus.
Normalerweise kommt in das Codeobjekt auch noch der HTML Code "rundherum" um die Datenfelder dazu, denn meist brauchst du ja mehr, als nur den puren DB-Inhalt.
Beachte, dass die Inhalte aus der DB mit Codeobjekt normalerweise nicht in X5 in der Vorschau angezeigt werden, da die DB-Verbindung ja nicht auf deinem EntwicklungsPC liegt. Du musst die Seite schon in eine Testumgebung am Server hochladen, um die Ergebnisse zu sehen.

Vielleicht hilft dir das ja.

LG,
Dieter

Mehr lesen
Gepostet am von Dieter D.
Matthias W.
Matthias W.
User
Autor

Hi Dieter,

Erstmal danke dafür. Bei mir sieht die Sache im alten Intranet so aus.

<script>
var montharray=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
function countup(yr,m,d){
var today=new Date()
var todayy=today.getYear()
if (todayy < 1000)
todayy+=1900
var todaym=today.getMonth()
var todayd=today.getDate()
var todaystring=montharray[todaym]+" "+todayd+", "+todayy
var paststring=montharray[m-1]+" "+d+", "+yr
var difference=(Math.round((Date.parse(todaystring)-Date.parse(paststring))/(24*60*60*1000))*1)
difference+=" Tage"
document.write("Wir sind "+difference+" Unfallfrei!")
}
<?php
$abfrage = MYSQL_QUERY("SELECT * FROM `countup`"); //Daten aus der Datenbank holen
while($daten = MYSQL_FETCH_ARRAY($abfrage)) //Tabellendaten ausgeben
{
?>
countup(<?php echo $daten["jjjj"];?>,<?php echo $daten["mm"];?>,<?php echo $daten["dd"];?>) //Hier werden die Daten für den Counter aus der Datenbank abgerufen
<?php
};?>
</script>

Nichts spektakuläres eigentlich. Ein Datum wird in der Datenbank hinterlegt und die Differenz daraus und dem jetzigen Zeitpunkt ergibt dann den Datensatz bzw. die Aussage wir sind so und solange Unfallfrei fertig. 

Dieses Skript habe ich versucht mithilfe des Programms dem neuen Intranet mitzugeben. Wie es scheint hast du dem Server statt dieser Eintragung in diesem Datenmanagement Feld den DB_connector.php included. Also gibst du im Codeprojekt der Seite alles an und includest den connector auch noch um die Verbindung zur Datenbank aufzubauen. Oder bin ich da ganz schief gewickelt?

Mehr lesen
Gepostet am von Matthias W.
Dieter D.
Dieter D.
User

Hi Matthias!

Ja, wenn du die DB-Verbindung noch in dein Script inkludierst, sollte das gut laufen.

Theoretisch kannst die Verbindungsdaten auch im Skript-Objekt angeben, ist aus Sicherheitsbedenken meist in einer eigenen Datei in einem anderen Verzeichnis oft besser aufgehoben :-)

Du musst es auch nicht über Javascript machen, kannst deine Datumsrechnerei sicher auch in PHP durchführen. Aber das ist Geschmackssache.

LG,
Dieter

Mehr lesen
Gepostet am von Dieter D.
Matthias W.
Matthias W.
User
Autor

Bevor den Beitrag als Korrekt markiere.... Sowas gehört einem gesagt und auch irgendwo beschrieben. 

Die Sache funtkioniert einwandfrei, aber erst seitdem man den include in Code mitaufnimmt. Diese Datenmanagement Geschichte unter Punkt 2 ist sehr verwirrend und war für mich nicht ganz ersichtlich. 

Also ich möchte hier Dieter D. danken! Für das schnelle reagieren und die tolle Unterstützung. 

Kurzer Überblick:

Die Code Schnippsel werden in ein HTML Objekt gelegt mit dem Include des DB Connector Beispiele dafür hat Dieter D. schon gebracht. Dafür wird kein extra Widget benötigt.... 

Mehr lesen
Gepostet am von Matthias W.