1.Gästebuch - Fehler :(

MiD

macht munter
ID: 217060
L
21 April 2006
4.390
243
Hi,

ich habe eben mein 1. Gästebuch geschrieben. Ihr werdet euch wohl fragen, wie dumm dieser MiD ist, aber es sind halt meine ersten Code Schnipsel.

LINK

Ich habe mich schon umgehört, es liegt anscheinend an der Datenbank, das ich dort irgendwo nen Fehler gemacht hab.

Ich würde mich sehr freuen wenn ihr mir helfen könntet.
 
Ohne Infos und ohne Code kann man dir nicht helfen. Die Hellseher sind gerade alle nicht im Forum, da die gleich auf 9live und anderen Sendern den Anrufern die Zukunft voraussagen müssen. :mrgreen:
 
  • Like
Reaktionen: MiD
Datei "gb.php"
PHP:
<?php
    echo "<h2>Gästebuch</h2>\n";
    echo "<p>\n";
    echo "    <a href=\"gb_add.php?section=gb_add\">Ins Gästebuch reinschreiben</a>\n";
    echo "</p>\n";
    $test = "SELECT
                Name,
                Datum,
                Email,
                Homepage,
                Inhalt
            FROM
                gaestebuch
            ORDER BY
                Datum DESC";
    $result = mysql_query($sql) OR die(mysql_error());
    echo "<p>Einträge im Gästebuch: ".mysql_num_rows($result)."</p>\n";
    echo "<hr>\n";

    while($row = mysql_fetch_assoc($result)) {
        echo "<div class=\"gb-eintrag\">\n";
        echo "    <div class=\"Kopfdaten\">\n";
        if(trim($row['Email']) == "") {
            echo $row['Name'];
        } else {
            echo "<a href=\"mailto:".$row['Email']."\">".$row['Name']."</a>\n";
        }
        if(trim($row['Homepage']) != "") {
            if(strtolower(substr($row['Homepage'], 0, 7)) == "https://") {
                // Wenn der Teilstring gleich "https://" ist, so
                // soll er den Link ohne "https://" erzeugen, denn
                // der Steht ja schon drin
                echo " (<a href=\"".$row['Homepage']."\">Homepage</a>)";
            } else {
                // Wenn nicht, so soll er das "https://" manuell hinzufügen
                echo " (<a href=\"https://".$row['Homepage']."\">Homepage</a>)";
            }
        }

        echo " schrieb um ".$row['Datum']."\n";
        echo "    </div>\n";
        echo "    <div class=\"Inhalt\">\n";
        echo "        ".nl2br($row['Inhalt'])."\n";
        echo "    </div>\n";
        echo "</div>\n";
    }
?>

Datei "gb_add.php"

PHP:
<h2>Eintrag ins Gästebuch hinzufügen</h2>
<form action="gb.php?section=gb_insert" method="post" class="formular">
    <ol>
        <li>
            <label for="name">Name</label>
            <input type="text" name="Name" id="name" />
        </li>
        <li>
            <label for="email">Email</label>
            <input type="text" name="Email" id="email" />
        </li>
        <li>
            <label for="homepage">Homepage</label>
            <input type="text" name="Homepage" id="homepage" />
        </li>
        <li>
            <label for="beitrag">Beitrag</label>
            <textarea name="Text" id="beitrag"></textarea>
        </li>
        <li>
            <input type="submit" name="submit" value="Speichern" />
            <input type="reset" name="submit" value="Zurücksetzen" />
        </li>
    </ol>
</form>

Datei "include.php"

PHP:
<?php
    $datei = array ()
	$datei['gb'] = "gb.php"
        $section = gb_add.php
?>


Das sind alle Dateien. Braucht man noch Infos von MySql? Wenn ja welche?
 
So wie ich das sehe, gibst Du der Variable "$sql" garkeinen Wert.

Zeile 16, gb.php
PHP:
$result = mysql_query($sql) OR die(mysql_error());
Deswegen wird auch der Fehler
ausgegeben, weil ja garnichts aus der Datenbank abgefragt wird.

Ich glaube Du verwendest statt der Variable "$sql" eher die Variable "$test",
da Du da ja eine mySQL-Abfrage in der 6. Zeile definiert hast.
PHP:
    $test = "SELECT 
                Name, 
                Datum, 
                Email, 
                Homepage, 
                Inhalt 
            FROM 
                gaestebuch 
            ORDER BY 
                Datum DESC";



Versuch also jetzt im Großen und Ganzen folgendes:

Suche:
PHP:
$result = mysql_query($sql) OR die(mysql_error());
Ersetze durch:
PHP:
$result = mysql_query($test) OR die(mysql_error());


MfG: Crazy_EB
 
Zuletzt bearbeitet:
  • Like
Reaktionen: MiD
Schaut jetzt mal bitte.
No Database Selected
Keine Datenbank ausgewählt

Wie wähl' ich den eine Datenbank aus?

Ihr bekommt schonmal nen Grünen Poppel ;)
 
Bin ich blind oder baust du nicht einmal eine MySQL Vebrindung auf?

Sollte dies zutreffen, klatsch mal in der gb.php ganz oben

PHP:
$host="localhost";
$sqlname="BENUTZER_NAME";
$sqlwort="PASSWORT";
$db="DATENBANK";

$l=mysql_connect($host,$sqlname,$sqlwort) or die("Fehler beim Verbinden zur DB");
mysql_select_db($db);

Wenn bereits eine Verbindung besteht, schreibst du nur
PHP:
mysql_select_db($db);
in die gb.php

Mit mysql_select_db() wählst du eben eine Datenbank aus. ;)
 
  • Like
Reaktionen: MiD
Hi,

hab's mal so gemacht wie du gesagt hast ;) Sieht schon gut aus, aber er gibt dennoch ein Fehler an.

Line 28
PHP:
    echo "<p>Einträge im Gästebuch: ".mysql_num_rows($test)."</p>\n";
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/loseengine_service4lose_de/www/scripts/gb.php on line 28

------------------------------------

Line 31
PHP:
    while($row = mysql_fetch_assoc($test)) {
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/loseengine_service4lose_de/www/scripts/gb.php on line 31
 
der fehler muss nicht immer in der angegeben zeile liegen.

poste jeweils den SQL string der in $test steht
 
  • Like
Reaktionen: MiD
Ich habe mal die Such Funktion von Dreamweaver benutzt und "test" eingegeben

Linie 27
PHP:
    $result = mysql_query($test) OR die(mysql_error());

Linie 30
PHP:
    while($row = mysql_fetch_assoc($test)) {

Und die übrigen beiden von oben ;)
 
PHP:
    echo "<p>Einträge im Gästebuch: ".mysql_num_rows($test)."</p>\n";
PHP:
    while($row = mysql_fetch_assoc($test)) {

Übergibst du den beiden Funktionen wirklich $tets, oder hast dich da verschrieben?
Wenn ja, in $Test steht ja der Query, deshalb gibts den Fehler aus. So wie ich das sehe, müsstets du den beiden Funktionen $result übergeben.

Ansonsten tun ein paar echo mysql_error(); Wunder.

z.b. könntest nach dem
PHP:
    $result = mysql_query($sql) OR die(mysql_error());
mal ein echo mysql_error(); reinhauen.
 
Schaut mal jetzt ;) Nur wenn ich was eintrage, speichert er das nicht ab. Woran kann das liegen?
 
Schwer zu sagen, da ich nirgends Code entdecken kann, der für das EIntragen zuständig ist ;)
Wo ist die Section "insert" in der gb.php?
Poste mal den Code :)
 
mh des können wir dir ohne den code, den du zum eintragen benutzt nicht sagen
oder bin ich blind un seh den nicht
 
Ich hab' so verstanden das du die gb.php brauchst. Wenn ich dich falsch verstanden hab' sags nochmal ;)

PHP:
<?php
		
$host="localhost";
$sqlname="kevin123";
$sqlwort="***";
$db="test";

$l=mysql_connect($host,$sqlname,$sqlwort) or die("Fehler beim Verbinden zur DB");
mysql_select_db($db);  

mysql_select_db($db);  

    echo "<h2>Gästebuch</h2>\n";
    echo "<p>\n";
    echo "    <a href=\"gb_add.php?section=gb_add\">Ins Gästebuch reinschreiben</a>\n";
    echo "</p>\n";
    $test = "SELECT
                Name,
                Datum,
                Email,
                Homepage,
                Inhalt
            FROM
                gaestebuch
            ORDER BY
                Datum DESC";
    $result = mysql_query($test) OR die(mysql_error());
    echo "<p>Einträge im Gästebuch: ".mysql_num_rows($result)."</p>\n";
    echo "<hr>\n";

    while($row = mysql_fetch_assoc($result)) {
        echo "<div class=\"gb-eintrag\">\n";
        echo "    <div class=\"Kopfdaten\">\n";
        if(trim($row['Email']) == "") {
            echo $row['Name'];
        } else {
            echo "<a href=\"mailto:".$row['Email']."\">".$row['Name']."</a>\n";
        }
        if(trim($row['Homepage']) != "") {
            if(strtolower(substr($row['Homepage'], 0, 7)) == "https://") {
                // Wenn der Teilstring gleich "https://" ist, so
                // soll er den Link ohne "https://" erzeugen, denn
                // der Steht ja schon drin
                echo " (<a href=\"".$row['Homepage']."\">Homepage</a>)";
            } else {
                // Wenn nicht, so soll er das "https://" manuell hinzufügen
                echo " (<a href=\"https://".$row['Homepage']."\">Homepage</a>)";
            }
        }

        echo " schrieb um ".$row['Datum']."\n";
        echo "    </div>\n";
        echo "    <div class=\"Inhalt\">\n";
        echo "        ".nl2br($row['Inhalt'])."\n";
        echo "    </div>\n";
        echo "</div>\n";
    }
?>

edit:

hier die gb_add

PHP:
<h2>Eintrag ins Gästebuch hinzufügen</h2>
<form action="gb.php?section=gb_insert" method="post" class="formular">
    <ol>
        <li>
            <label for="name">Name</label>
            <input type="text" name="Name" id="name" />
        </li>
        <li>
            <label for="email">Email</label>
            <input type="text" name="Email" id="email" />
        </li>
        <li>
            <label for="homepage">Homepage</label>
            <input type="text" name="Homepage" id="homepage" />
        </li>
        <li>
            <label for="beitrag">Beitrag</label>
            <textarea name="Text" id="beitrag"></textarea>
        </li>
        <li>
            <input type="submit" name="submit" value="Speichern" />
            <input type="reset" name="submit" value="Zurücksetzen" />
        </li>
    </ol>
</form>
 
Zuletzt bearbeitet:
Jein, man braucht dne Teil, dee fürs eintragen zuständig ist.
Hier:
PHP:
form action="gb.php?section=gb_insert" method="post" class="formular">
Werden die Datenj an die gb.php geschickt, wo allen Anschein nach auf die GET Variable "section" reagiert werden soll.
Aber diese Stelle sehe ich in deinem COde nicht, deshalb geh ich davon aus, dass diese nicht existiert.

PS:
man kann GET und POST nicht mischen.
D.h. entweder du wendest method="get" an, oder du fügst dem Formular ein verstecktes Formularfeld ein, das "gb_insert" übergibt.

Hoffe du verstehst, was ich meine :)
 
*hust*

wenn das vorne dein richtiges pw für die datenbank ist würd ich die zugansdaten hier raus löschen oder noch besser ändern bevor es ein anderer tut :!:
 
Wie?
Wie heißt den der Code, damit das in der gb.php angezeigt wird?

Edit: @hans danke dir 1000mal
 
so was in der art wirst du brauchen um den code eintragen zu können

PHP:
if($section=="gb_insert")
{


$eintrag = "INSERT INTO links (url, urlname, name,
  banner, beschreibung) VALUES ('$url', '$hpname',
  '$name', '$banner','$beschreibung')";

$eintragen = mysql_query($eintrag);
 

}

hier auf dieser seite kannst dich ein bischen einlesen über PHP und mysql
https://schattenbaum.net/php/insert2.php
 
Also soll ich
PHP:
    echo "<p>Einträge im Gästebuch: ".mysql_num_rows($result)."</p>\n";
    echo "<hr>\n";

    while($row = mysql_fetch_assoc($result)) {
        echo "<div class=\"gb-eintrag\">\n";
        echo "    <div class=\"Kopfdaten\">\n";
        if(trim($row['Email']) == "") {
            echo $row['Name'];
        } else {
            echo "<a href=\"mailto:".$row['Email']."\">".$row['Name']."</a>\n";
        }
        if(trim($row['Homepage']) != "") {
            if(strtolower(substr($row['Homepage'], 0, 7)) == "https://") {
                echo " (<a href=\"".$row['Homepage']."\">Homepage</a>)";
            } else {
                echo " (<a href=\"https://".$row['Homepage']."\">Homepage</a>)";
            }
        }

        echo " schrieb um ".$row['Datum']."\n";
        echo "    </div>\n";
        echo "    <div class=\"Inhalt\">\n";
        echo "        ".nl2br($row['Inhalt'])."\n";
        echo "    </div>\n";
        echo "</div>\n";
    }
?>


durch den Code

PHP:
if($section=="gb_insert")
{


$eintrag = "INSERT INTO links (Name, Datum, Email,
  Homepage, Inhalt) VALUES ('$Homepage',  '$Name', '$Email')";

$eintragen = mysql_query($eintrag);
 

}

ersetzen?