installation.php ausführen

M3Y3R

Well-known member
ID: 336361
L
8 Mai 2006
1.608
60
Hallo,

ich möchte gerne die Installation meiner Scripte automatisieren. Das heißt das Script soll Tabellen selbst anlegen.

Nun habe ich folgendes gemacht:
PHP:
include("data.php");

$sql1="CREATE TABLE IF NOT EXISTS `SV_LINKVERWALTUNG`
     (`id` int(255) NOT NULL auto_increment,
      `linkname` varchar(50) NOT NULL,
      `url` text NOT NULL,
      PRIMARY KEY  (`id`))
      ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=23";

$sql2="INSERT INTO `SV_LINKVERWALTUNG` (`id`, `linkname`, `url`) VALUES
       (1, 'Scan', 'scan.php'),
       (2, 'Report', 'report.php'),
       (3, 'Cronjob', 'cronjob.php')";

Wenn ich ich nun die Datei aufrufe, dann erscheint keine Fehlermeldung oder ähnliches. Ich möchte abfragen ob die Tabellen existieren oder nicht. Wenn nicht soll er die anöegen und mir das auch anzeigen...

Wer kann mir helfen oder URL´s zu Seiten geben die solche Themen behandeln?


MFG
Papenburger
 
Mal ganz blöd gefragt: Ist das der komplette Inhalt deiner Datei oder kommt da auch noch sowas wie mysql_query() ?

Die Ausgabe der Daten wird in einer anderen Datei vorgenommen. Diese wird allerdings erst ausgeführt wenn die Tabelle existiert...

Das heißt wenn die Tabelle nicht existiert, soll er sie erst anlegen und dann die Datei includen. Ansonsten soll der die gleich includen ohne die Tabelle anzulegen
 
Wie wäre es einfach den PHP code von PHPMyAdmin generieren zu lassen? Das ist doch in meinen Augen das einfachste.
 
[...]
Das heißt wenn die Tabelle nicht existiert, soll er sie erst anlegen und dann die Datei includen. Ansonsten soll der die gleich includen ohne die Tabelle anzulegen

Er erstellt die Tabelle doch auch nur, wenn sie nicht existiert - "IF NOT EXISTS".

- Tabelle erstellen, falls nicht vorhanden
- Tabelle mit Daten füllen
 
ich glaube ihr versteht mich nicht...

Ich möchte das automatisieren und nicht anders. Ich möchte mich nicht im PhpMyAdmin einloggen müssen...

Es gibt Lose-Scripte die haben immer so eine installation.php-Datei dabei. So etwas suche ich. Ich hatte sowas schon mal nur leider habe ich das grad nicht zur Hand, da ich auf der Arbeit sitze...
 
Und wo ist das Problem? Tabellen erstellen wird doch wohl eine einmalige Sache sein?! Also SQL-Befehle zusammen stellen (mit phpmyadmin kann man den nötigen Code durch exportieren ganz einfach generiert bekommen - das war wohl gemeint) und ausführen lassen. Nur wird dein bisheriger Code wird nicht ausgeführt, weil du im Prinzip erst irgendwelchen Text in Variablen speicherst. Du musst PHP ja erst noch mitteilen, dass der Text von MySQL ausgeführt werden soll.
 
Richtig Joschi des meinte ich, wusste nicht das man alles Haarklein beschreiben muss. :-?

Nochmal langsam.

Du hast Deine DB online also einloggen in PHPMyAdmin dann auf export klicken dann machst deine Einstellungen(IF NOT EXISTS) und klickst auf den unteren Button schon hast Du deine Query die Du für die Installation brauchst. Hoffe das war diesmal deutlich genug.
 
Zuletzt bearbeitet:
Richtig Joschi des meinte ich, wusste nicht das man alles Haarklein beschreiben muss. :-?

Nochmal langsam.

Du hast Deine DB online also einloggen in PHPMyAdmin dann auf export klicken dann machst deine Einstellungen(IF NOT EXISTS) und klickst auf den unteren Button schon hast Du deine Query die Du für die Installation brauchst. Hoffe das war diesmal deutlich genug.

Das hab ich ja gemacht. nun habe ich die Tabele mal gelöscht um das Script zu testen..

PHP:
<?
include("data.php");

$sql1="CREATE TABLE IF NOT EXISTS `SV_LINKVERWALTUNG`
     (`id` int(255) NOT NULL auto_increment,
      `linkname` varchar(50) NOT NULL,
      `url` text NOT NULL,
      PRIMARY KEY  (`id`))
      ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=23";

$db_connection=db_connect();
$result = mysql_query($sql1);
db_disconnect($db_connection);
?>

in der data.php wird zur Datenbank verbunden!
Nun sollte der eigentlich die Tabelle erstellen und genau dies macht der nicht...


MFG
Papenburger
 
Nimm mal das IF NOT EXISTS raus und lass Dir nach dem Ausführen des Querys den Fehler anzeigen.
 
Der macht dann genau das gleiche wie vorher auch. Der gibt nichts aus und erstllt keine Tabelle...
 
Ja die stimmen, anstatt dass die nun über eine weitere Datei in die Funktion includet werden habe ich die beim Connection direkt angegeben.

Deswegen wundert mich das auch, das das Script nicht funktioniert...
 
ich habe nun folgendes:

PHP:
include ("data.php");

$sql1="CREATE TABLE IF NOT EXISTS `SV_LINKVERWALTUNG` (
  `id` int(255) NOT NULL auto_increment,
  `linkname` varchar(25) NOT NULL,
  `url` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1";

$db_connection=db_connect();
$result = mysql_fetch_array($sql1);
db_disconnect($db_connection);

echo error_reporting("E_ALL");
Da gibt der mir folgendes aus:

Die 2039 kommt vom Error-Reporting, jedoch weiß ich nicht was sie bedeutet...
 
2039 steht für die vorherige Einstellung von error_reporting(). Wobei es übrigens sehr sinnig ist, das error_reporting umzustellen, nachdem das Skript abgearbeitet wurde. Zudem fehlt mir in dem ganzen Skript ein mysql_error(), was an dieser Stelle wohl äußerst interessant sein dürfte. Und ich im übrigen auch meinte, als ich schrieb "lass Dir nach dem Ausführen des Querys den Fehler anzeigen".