Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Content Management mit MySQL und PHP [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Content Management mit MySQL und PHP


 
Berni
10-07-2002, 21:55 
 
Content Management mit MySQL und PHP (http://www.php-resource.de/tutorials.php?show=20020710_cms_p1.php)

Dieses Tutorial richtet sich an alle, die ihre Homepage oder auch Projekte dynamischer und interaktiver gestalten möchten. Sicherlich lohnt es sich nicht für eine Homepage, welche aus fünf Seiten besteht diese mit einem Verwaltungssystem zu versehen, wie wir es hier vorhaben zu erstellen. Diese Seiten können weiter dem Motto folgen: "Offline Inhalt kreieren/erstellen - abspeichern und danach hochladen". Aber für Seiten mit viel Inhalt wird es sich sicher lohnen dieses Tutorial durchzuarbeiten und eventuell auch die daraus resultierenden Lösungen für Probleme anzuwenden und gegebenenfalls noch zu erweitern und auszubauen.

 
johnny
03-08-2002, 05:06 
 
Hi

Also zuerstmal find ich das Tutorial echt super, da es verständlich geschrieben ist und jeder Schritt super erklärt wird.
Nur leider hab ich am Anfang schon ein kleines Problem.
Also mit php kenn ich mich schon etwas aus auch mit phpmyadmin, nur halt nicht mit dem auslesen einer mysql

also ich hab mal die datenbank erstellt ging ohne problem
leider als ich jetzt die index.php anlegen wollte kam dieses Problem

Warning: Supplied argument is not a valid MySQL result resource in C:\apache\htdocs\php1\index.php on line 5

Hier der quellcode dazu

<?
include("sql_config.php");
$abfrage = "SELECT wort FROM woerterbuch";
$ergebnis = mysql_query($abfrage);
while(list($wort) = mysql_fetch_row($ergebnis)){
echo"
- $wort<br>
";
}
?>

tja jetzt bin ich ratlos den normal müsste es doch gehn?
hoffe ihr könnt mir weiterhelfen

thx im vorraus!!

 
hand
03-08-2002, 07:02 
 
Wurde mit mysql_select_db("mydb"); // Datenbank auswählen eine Datenbank ausgewählt?
Gibt es die Tabelle "woerterbuch" (schreibweise bitte beachten) darin?
Gibt es das Feld "wort" in dieser Tabelle (schreibweise bitte beachten)?

ansonsten

<?
include("sql_config.php");
$abfrage = "SELECT wort FROM woerterbuch";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis)){
echo"
- $row[$wort]<br>
";
}
?>

 
johnny
03-08-2002, 16:09 
 
also wie meinst du das jetzt mit mysql_select_db("mydb");

Also ich hab ne neue Datenbank erstellt die auch woerterbuch heißt.
Dann hab ich die Tabelle erstellt und die Daten eingegeben.

die Datenbank in der die Tabelle woerterbuch liegt hab ich so in der sql_config.php bestimmt

<?
$database = "woerterbuch"; //Datenbankname
$sqlhost = "localhost"; //mySQL Hostname
$sqluser = "*****"; //mySQL Username
$sqlpass = "*****"; //mySQL Passwort
?>

das is doch richtig oder?

Nachtrag:
hab das Script jetzt mal probiert auf meinem Server zum laufen zu bekommen. leider immer noch die fehlermeldung

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /www/htdocs/v028637/tip/index.php on line 5

wäre wirklich super wenn mir jemand weiterhelfen könnte

thx

 
hand
03-08-2002, 18:04 
 
Datenbankname lautet "woerterbuch"
Wie lautet der Tabellenname?
Gibt es in der Tabelle ein Datenfeld, daß "wort" heißt?

Der SELECT: $abfrage = "SELECT wort FROM woerterbuch";
möchte von allen Sätzen das Datenfeld "wort" aus der Tabelle "woerterbuch".

EIne Datenbank kann mehrere Tabellen beinhalten ...

 
johnny
03-08-2002, 18:12 
 
also der tabellenname lautet auch "woerterbuch"
hab aber schonmal mit datenbankname "gamelist" versucht da ich dachte es gibt probleme wenn datenbank und tabelle gleich heißen.

ja in der Tabelle gibt es ein Datenfeld das "wort" heißt
da ich es ja 1 zu 1 aus dem Tutorial übernommen habe

CREATE TABLE woerterbuch (id TINYINT not null AUTO_INCREMENT, art TEXT not null , wort TEXT not null , text TEXT not null , PRIMARY KEY (id))

also ich hab mal das Tutorial 1zu1 bis zum ersten auslesen der Datenbank bzw dieser Tabelle genommen

doch wie gesagt kommt immer diese fehlermeldung.

und die sql_config.php stimmt doch so wenn die Datenbank woerterbuch heiß oder?

<?
$database = "woerterbuch"; //Datenbankname
$sqlhost = "localhost"; //mySQL Hostname
$sqluser = "*****"; //mySQL Username
$sqlpass = "*****"; //mySQL Passwort
?>

 
johnny
03-08-2002, 19:43 
 
ok ich hab jetzt den fehler

nach include gehören noch diese zwei zeilen eingefügt

$conn = @mysql_connect($sqlhost, $sqluser, $sqlpass) or die("Verbindungsfehler!");
$db = mysql_select_db($database, $conn);

damit überhaupt ne verbindung erstellt wird^^

 
hand
03-08-2002, 19:49 
 
Ich bin ratlos ...
Ich habe die Tabelle, so wie Du sie gepostet hast bei mir in der Datenbank "test" angelegt, mit Testdaten befüllt und das Skript aufgerufen und ich bekomme keine Fehlermeldung!

<?php
mysql_connect("localhost", "", "") or die("could not connect"); // Connect zur DB
mysql_select_db("test"); // Datenbank auswählen

$abfrage = "SELECT wort FROM woerterbuch";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis)){
echo"
- $row[wort]<br>
";
}
?>


Was klar ist, ist der Name der Tabelle: "woerterbuch"
Wie bei Dir die Datenbank heißt weiß ich nicht mit Sicherheit - und ich denke da liegt der Hund begraben, schau mal bitte nach, ob es die Datenbank und die Tabelle tatsächlich gibt.

Mach mal ein DOS Fenster auf (DOS-Eingabeaufforderung) und gib ein:

C:\WAMP\Apache\htdocs\test>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 20 to server version: 3.23.49-nt

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show databases;
+----------+
| Database |
+----------+
| hand |
| mydb |
| mysql |
| test | <-- hier ist die Datenbank in der ich die Tabelle angelegt habe
+----------+
4 rows in set (0.00 sec)

mysql> use test; <-- ich wechsle in diese DB
Database changed
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| woerterbuch | <-- hier ist die Tabelle
+----------------+
5 rows in set (0.00 sec)

mysql> describe woerterbuch; <-- jetzt die Struktur der Tabelle
+-------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+----------------+
| id | tinyint(4) | | PRI | NULL | auto_increment |
| art | text | | | | |
| wort | text | | | | |
| text | text | | | | |
+-------+------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
mysql>


Sind Userid/Passwort korrekt? (Ich hoffe die "*" sind nur um die ID und das PWD zu verschleieren - oder?

 
hand
03-08-2002, 19:51 
 
ok

 
johnny
03-08-2002, 20:00 
 
also danke für die hilfe
auch wenn sie etwas zu spät kam ^^

naja jetzt werd ich mal weiter das tutorial durchgehen und nochmal danke für die hilfe

 
johnny
03-08-2002, 23:47 
 
ich woll nur nochmal schnell fragen ob jemand dieses tutorial schon ausprobiert hat und ob es bei ihm geht?

den bei mir geht gar nix
ok auslesen aus der db geht aber der nächste punkt "per link zu infos über das wort" geht schon wieder garnet

link wird erstellt
wenn man draufklickt kommt garnix.

naja ich wollt auch gleich mal fragen ob jemand vielleicht so ein ähnliches Tutorial kennt wo einem das erstellen einer datenbank erklärt wird mit ein paar Abfragen.

nachtragt:
so ich hab jetzt alles bis auf das Eingabeformular hinbekommen.
Vielleicht kann mir hier ja einer von euch helfen.

<?
include("sql_config.php");
$insert=("INSERT INTO woerterbuch (art,wort,text) VALUES ('$art',$wort','$text')"):
mysql_query("$insert,$verb);
?>

Wegen den anderen Sachen:
was nicht stimmt is der Link der auf die show.php verweißt.

also in der index.php und in der seek.php müsst ihr den link in folgt ändern
- <a href=\"show.php?id=$id&art=$art\">$wort</a><br>

ich hoffe ich konnte so benutzern dieses tutorials helfen

 
taikonaut
12-08-2002, 13:48 
 
Hallo,
ich bin gerade dein Tut durchgegangen, und einige dinge verstehe ich nicht so richtig:
z.B.:
<a href=\"show.php?id?$id$art=$art\">$wort</a>
Was soll ...?id?$id$art=$art bedeuten??
Du willst doch Parameter übergeben, muß das dann nicht so aussehen:
<a href=\"show.php?id=$id&art=$art\">$wort</a>
also : id=$id&art=$art ????
Mich würde wirklich interessieren warum du das so gemacht hast?

Deine insert-Anweisungen haben für das auto_increment-Feld (id)
einträge 1,2,3 usw.
Warum nimmst du dann auto_increment ?

Warum definierst du z.B. für art ein feld mit datentyp text???

Warum verwendest du LIKE '%$string% um zu suchen in der seek.php?
Ist doch die Totalbremse.

 
Titus
12-08-2002, 18:58 
 
Original geschrieben von taikonaut
Du willst doch Parameter übergeben, muß das dann nicht so aussehen:
<a href=\"show.php?id=$id&art=$art\">$wort</a>
also : id=$id&art=$art ????
hast recht.
Deine insert-Anweisungen haben für das auto_increment-Feld (id) einträge 1,2,3 usw.
Warum nimmst du dann auto_increment ?
Das ist ein Dump vom phpMyAdmin. Die IDs dürfen, müssen aber nicht angegeben werden.
Ein Skript zum Insert sollte natürlich die ID nicht angeben.
(siehe auch ganz unten in Abschnitt 2.1)

Warum definierst du z.B. für art ein feld mit datentyp text???Da hat der Autor wohl nicht überlegt. varchar(xx) wäre natürlich passender.

Warum verwendest du LIKE '%$string% um zu suchen in der seek.php?
Ist doch die Totalbremse. Natürlich kann man mit LOCATE suchen, das ist aber auch nicht schneller als LIKE. Außerdem wird bei LIKE nicht zwischen Groß-und Kleinschreibung unterschieden.

Ich werde dem Autor mal eine Mitteilung über den Post hier schicken.

 
crono
12-08-2002, 22:15 
 
Hihi @ all

ich bin der autor des tutorials.
Das Tutorials ist schon etwas älter und viele Dinge würde ich heute anders machen als damals

-> zb würde ich nimmer list(); sondern mysql_fetch_array verwenden und und und *g*

Ich hab jetzt auch nimmer 100%ig alles im Kopf was ich damals geschrieben hab.

Das Tutorial zu überarbeiten - bugs entfernen - wäre wohl eine schlechte idee weil es da ziehmlich viel zu ändern gäbe *g*

Mein vorschlag: Berni nimmt das Tutorial offline und ich schreib diese woche ein neues.

sorry @ all

 
taikonaut
13-08-2002, 11:07 
 
Hallo,
erstmal danke, dass mein Posting so schnell beantwortet wurde.
Seit der Version 3.23.23. bietet Mysql die Unterstützung von Volltextindizierung und Volltextsuche.
Dabei verwendet man einen Fulltext-Index.
Ein Suche sieht dann so aus:

SELECT * FROM woerterbuch WHERE MATCH (wort,text) AGAINST ('Suchbegriff');

Sowas meinte ich mit "Totalbremse". Vielleicht hier als kleiner Tipp zur Optimierung von Suchanfragen.

Ciao

 
crono
13-08-2002, 13:12 
 
werd schauen was ich tun kann bin ja auch nur ein kleiner dummer noob (== anfänger *g*):cool:

 
php_newb
28-08-2002, 07:40 
 
Ich weis nicht ob der Thread hier noch aktuel ist, aber ich habe da auch so meiner Probleme mit dem Tutorial.

Meine Datenbank heisst "test", die Tabelle heisst "worterbuch" (war zu dumm ein "oe" zu schreiben *g*).

Das Script greift wunderbar auf die Tabelle zu und holt sich auch seine Daten heraus.

Allerdings habe ich da ein kleines Problem bei der Datenübergabe.

Ich verschicke meine Daten wie es beschrieben wird mit :

while(list($id,$art,$wort) = mysql_fetch_row($ergebnis))
{
echo "- <a href=\"show.php?id?$id$art=$art\">$wort</a><br>";
}

Aber wenn ich das dann in der show.php abfragen will, erscheint einfach nur eine leere Seite.

Ich schreib hier jetzt einfach mal die Codes der beiden seiten rein.

index.php :

<?
include("sql_config.php");
$abfrage = "SELECT id,art,wort FROM worterbuch";
$ergebnis = mysql_query($abfrage);
while(list($id,$art,$wort) = mysql_fetch_row($ergebnis))
{
echo "- <a href=\"show.php?id?$id$art=$art\">$wort</a><br>";
}

?>

show.php:

<?php
include("sql_config.php");
$abfrage = "SELECT wort FROM worterbuch WHERE id='$id'";
$ergebnis = mysql_query($abfrage);
while (list($wort) = mysql_fetch_row($ergebnis))
{
echo" <h1>Weitere Informationen zum Wort: $wort<p></p>";
}

if ($art=="sub")
{
echo "Wortart: Substantiv";
}
if ($art=="verb")
{
echo "Wortart: Verb";
}
if ($art=="ad")
{
echo "Wortart: Adjektiv";
}
?>
<?php
include("sql_config.php");
$abfrage = "SELECT text FROM worterbuch WHERE id='$id'";
$ergebnis = mysql_query($abfrage);
while (list($text) = mysql_fetch_row($ergebnis))
{
echo "Erklärung:<br>
$text";
}
?>

Ich hoffe ihr könnt mir sagen was falsch ist.
Greetz Noob

 
johnny
28-08-2002, 13:55 
 
das gleiche problem hatte ich auch und etwas weiter oben hab ich die lösung gepost

du musst den link der die show.php aufruft wie folgt ändern

- <a href="show.php?id=$id&art=$art\">$wort</a><br>

obwohl normal müsste es auch gehen wenn du nur
show.php?id=$id nimmst

einfach mal versuchen

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:18 Uhr.