wo ist der fehler?

Brian Folte

Angesehenes Mitglied
hallo ich habe diesen code um meine datenbank anbzurufen aber ich sehe nur eine weiße seite. was ist daran falsch an dem code?
CODE <?php
$mysqlhost="localhost";
$mysqluser="web16";
$mysqlpwd="passwort";
$mysqldb="usr_web16_1";
$connection=mysql_connect($mysqlhost=localhost, $mysqluser=web16, $mysqlpwd=passwort) or
die("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb=usr_web16_1, $connection) or die("Konnte die Datenbank
nicht waehlen.");
?>
<?
$abfrage = "SELECT url  FROM links";
$ergebnis = mysql_query($abfrage);
?>
 
Tja, nun musst Du natürlich das Resultat Deiner Abfrage auch noch ausgeben, logisch oder?
Mit Deinem Code hat zwar der Server die Datenbank abgefragt, aber mit dem Resultat nichts gemacht.
Ausgabe geht etwa so:
CODE <?php
while (list ($url) = $ergebnis)
{
echo $url;
}
?>
Du musst dem Server schon sagen, was er mit den Abfrage-Resultaten anfangen soll, der macht keinen Streich freiwillig!
laugh.gif


Hamlet
 
hi auch wenn ich das mit einbaue sehe ich nur eine weiße seite. das ist das erste mal das ich eine datenbank in betrieb nehme.
 
Probier mal das hier:

-- Code-Beginn --
<?php
// Zugangsdaten
$Host = "DEIN_HOST"; // Meist passt hier "localhost"
$User = "DEIN_USERNAME";
$Password = "DEIN_PASSWORT";
$Dbase = "DEINE_DATENBANK";
$Abfrage = "SELECT * FROM DEINE_TABELLE";

// Verbindung zur DB
$Verbindung = @mysql_connect($Host,$User,$Password);

// Datensätze auslesen
$Auswahl = mysql_db_query($Dbase,$Abfrage,$Verbindung);

// Datensätze ausgeben
while ($Row = mysql_fetch_array ($Auswahl))
{
echo $Row[DEIN_DATENFELD];
echo "<br>";
}
?>
-- Code-Ende --

Alles was rot ist ersetzt Du durch Deine Angaben, dann funzt das schon.

Grüsse
Hamlet

Nachtrag:
-----------
Dann gibts hier ein gutes Manual:
http://php3.de/manual/de/
und auch hier lohnt sich das Lesen:
http://www.selfphp.de/
 
Da ist mir doch beim genauen Ansehen Deines Codes was aufgefallen:
Hier weist Du Deinen Variablen Werte zu:
CODE $mysqlhost="localhost";
$mysqluser="web16";
$mysqlpwd="passwort";
$mysqldb="usr_web16_1";

Was also soll das hier darstellen? Du brauchst doch den Variablen nicht die Werte nochmals zuzuordnen:

CODE $connection=mysql_connect($mysqlhost=localhost, $mysqluser=web16, $mysqlpwd=passwort) or
die("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb=usr_web16_1, $connection) or die("Konnte die Datenbank nicht waehlen.");

Das muss dann schon so heissen:

CODE $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or
die("Verbindungsversuch fehlgeschlagen");
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

Ist klar oder? Die verwendeten Variablen haben bereits ihre Werte erhalten.

Hamlet
 
VIELEN DANK jetzt geht es mit deinem code ich habe bei echo $Row[DEIN_DATENFELD]; id eingegeben nun sehe ich eine eins. wie schaff ich das das ich alle felder sehe? und wie mach ich das das andere leute dort was eintragen können?
 
QUOTE wie schaff ich das das ich alle felder sehe?
Ist nicht Dein Ernst jetzt oder?

while ($Row = mysql_fetch_array ($Auswahl))
{
echo $Row[id];
echo $Row[DEIN_DATENFELD_2];
echo $Row[DEIN_DATENFELD_3];
echo "<br>";
}
 
doch das ist mein ernst gewesen
unsure.gif
aber durch dich bin ich wieder schlauer geworden. aber wie schaff ich es jetzt das ich da auch was eintragen kann. ja ich weiß ich bin zu dumm für sowas aber aller anfang ist schwer
rolleyes.gif
 
nun habe ich ein formualr erstellt das sieht so aus:
CODE <html>
<head>
<title></title>
</head>
<body>
<?php

$db=mysql_connect("localhost","web16","passwort");
mysql_select_db("usr_web16_1", $db);
$result=mysql_query("SELECT * FROM formular ORDER BY datum DESC LIMIT 30", $db);
for($i=0; $i<mysql_num_rows($result); $i++)
{
  $formular[$i]=mysql_fetch_object($result);
}
echo "<table border=\"0\">";
for($i=0; $i<mysql_num_rows($result); $i++)
{
  echo "<tr>",
       "<td><b>#",
       $i+1,
       ": ",
       $formular[$i]->titel,
       "</b></td>",
       "</tr>",
       "<tr>",
       "<td>",
       nl2br($formular[$i]->eintrag),
       "</td>",
       "</tr>",
       "<tr>",
       "<td>Eintrag von <b>",
       $formular[$i]->name,
       "</b>am <b>",
       substr($formular[$i]->datum, 8, 2),
       ".",
       substr($formular[$i]->datum, 5, 2),
       ".",
       substr($formular[$i]->datum, 0, 4),
       " ",
       substr($formular[$i]->datum, 10),
       "</b></td>",
       "</tr>",
       "<tr><td><hr></td></tr>";
}
echo "</table><br><br>";

?>
<a name="neuereintrag"><h3>Neuer Eintrag:</h3></a>

<form action="einfuegen.php" method="post">
<table border="1">
<tr>
<td><b>id:</b></td>
<td><input type="text" name="id" maxlength="50"></td>
</tr>
<tr>
<td><b>url:</b></td>
<td><input type="text" name="url" maxlength="40"></td>
</tr>
<tr>
<tr>
<td><b>url name:</b></td>
<td><input type="text" name="url name" maxlength="40"></td>
</tr>
<td><b>name:</b></td>
<td><input type="text" name="name" maxlength="40"></td>
</tr>
<td><b>banner:</b></td>
<td><input type="text" name="banner" maxlength="40"></td>
</tr>
<td><b>beschreibung:</b></td>
<td><textarea name="beschreibung" cols="30" rows="5"></textarea></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" value="Eintragen">
<input type="reset" value="Löschen">
</td>
</tr>
</table>
</form>
</body>
</html>

hier bekomme ich ich folgenen fehler angezeigt:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web16/html/formular.php on line 11

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/www/web16/html/formular.php on line 16
was mach ich hier mal wieder falsch?
 
Nee jetzt, oder?
Du weisst schon, was Du codest oder?
laugh.gif


So geht das:
1.
Datenbankname = deinedatenbank
Die Tabelle heisst: deinetabelle
und enthält folgende Felder:
id (autoincrement)
Zahl (integer)
Text_Eins (Varchar,255)
Text_Zwei (Varchar,255)

2.
Der Code sieht so aus:
CODE <?php
// Prüfen ob Formular abgesendet
if ($Neueintrag)
{
// Zugangsdaten
$Host = "localhost";
$User = "BENUTZERNAME";
$Password = "PASSWORT";
$Dbase = "deinedatenbank";
// Dieses SQL-Statement schreibt die Formulardaten ind die DB
$Abfrage = "INSERT INTO deinetabelle (Zahl, Text_Eins, Text_Zwei) VALUES ('$ZahlWert', '$TextA', '$TextB')";

// Verbindung zur DB
$Verbindung = @mysql_connect($Host,$User,$Password) or die ("Fehler");

// Datensätze eintragen
$Auswahl = mysql_db_query($Dbase,$Abfrage,$Verbindung) or die ("Fehler");

// Resultat anzeigen
echo "Eingetragen wurden:<BR>Zahl: $ZahlWert<BR>Text Eins: $TextA<BR>Text Zwei:$TextB";
}
// Wenn Formular nicht abgesendet, dann anzeigen
else
{
?>
<!-- Das Formular -->
<form action="<?php echo $PHP_SELF ?>" method="post">
<table border="1">
<tr>
<td><b>Eine Zahl:</b></td>
<td><input type="text" name="ZahlWert" maxlength="10"></td>
</tr>
<tr>
<td><b>Text Eins:</b></td>
<td><input type="text" name="TextA" maxlength="40"></td>
</tr>
<tr>
<td><b>Text Zwei:</b></td>
<td><input type="text" name="TextB" maxlength="40"></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" name="Neueintrag" value="Eintragen">
<input type="reset" value="Löschen">
</td>
</tr>
</table>
</form>
<?php
}
?>

Dann schnurrt das auch

Hamlet
 
Das passiert hier:
CODE // Verbindung zur DB
$Verbindung = @mysql_connect($Host,$User,$Password) or die ("Fehler");

// Datensätze eintragen
$Auswahl = mysql_db_query($Dbase,$Abfrage,$Verbindung) or die ("Fehler");
Sind Deine Zugangsdaten richtig?

CODE $Host = "localhost";
$User = "BENUTZERNAME";
$Password = "PASSWORT";
$Dbase = "deinedatenbank";

Tabellenname?

CODE $Abfrage = "INSERT INTO deinetabelle (Zahl, Text_Eins, Text_Zwei)
"deinetabelle" ist natürlich nur ein Beispielname, da muss der Name der richtigen Tabelle stehen.

Sind die Variablen im SQL-Statement richtig?
Gemäss Deinem Formular müsste das ja so heissen:

CODE $Abfrage = "INSERT INTO deinetabelle (id, url, url name) VALUES ('$id', '$url, '$url name')";

Dann sollte der Name keines datenfeldes ein Space besitzen, Variablennamen mit Space funktionieren auch nicht. Schreib das zusammen.

Und!!!
Im Formular sollte kein Feld id sein, das ist ja vermutlich autoincrement.

Hamlet
 
also das das so schwer ist hätte ich nicht gedacht
sad.gif

also meine tabelle heißt test. ich möchte das die leute dort ihre url, den url namen, ihren namen, den banner und die beschreibung eintragen können. wie genau muß ich das jetzt machen?
 
ich habe deinen code genommen und dann hab ich nur noch den code hier CODE <html>
<head>
<title>Eintrag hinzufügen</title>
</head>
<body>
<?php
$Host = "localhost";
$User = "web16";
$Password = "passwort";
$Dbase = "usr_web16_1";
$Abfrage = "test>";
mysql_query("
 INSERT INTO formualr.php
 (datum, id, url, url name, name, banner, beschreibung)
 VALUES
 (NOW(''), '$name', '$titel', '$eintrag')", $db=usr_web16_1);
if(mysql_affected_rows($db=usr_web16_1)==1)
  echo "Vielen Dank für Ihren Eintrag!<br>",
       "<a href=%22gaestebuch.php3/%22>Zurück</a>";
else
  echo "Beim Eintragen ist ein Fehler aufgetreten.<br>",
       "<a href=%22javascript:history.back();/%22>Zurück</a>";
?>
</body>
</html>
mehr hab ich nicht (peinlich
unsure.gif
)
 
Probier mal das:
CODE <?php
// Prüfen ob Formular abgesendet
if ($Neueintrag)
{
// Zugangsdaten
$Host = "localhost";
$User = "root";
$Password = "";
$Dbase = "deinedatenbank";
// Dieses SQL-Statement schreibt die Formulardaten in die DB
$datum = date("Y-m-d");
$Abfrage = "INSERT INTO test (datum, url, urlname, name, banner, beschreibung) VALUES ('$datum', '$url', '$urlname', '$name', '$banner', '$beschreibung')";

// Verbindung zur DB
$Verbindung = @mysql_connect($Host,$User,$Password) or die ("Fehler");

// Datensätze eintragen
$Auswahl = mysql_db_query($Dbase,$Abfrage,$Verbindung) or die ("Fehler");

// Resultat anzeigen
echo "Eingetragen wurden:<BR>Datum: $datum<BR>URL: $url<BR>URL Name: $urlname<BR>Name:$name<BR>Banner: $banner<BR>Beschreibung: $beschreibung";
}
// Wenn Formular nicht abgesendet, dann anzeigen
else
{
?>
<!-- Das Formular -->
<form action="<?php echo $PHP_SELF ?>" method="post">
<table border="1">
<tr>
<td><b>URL:</b></td>
<td><input type="text" name="url" maxlength="40"></td>
</tr>
<tr>
<td><b>URL-Name:</b></td>
<td><input type="text" name="urlname" maxlength="40"></td>
</tr>
<tr>
<td><b>Name:</b></td>
<td><input type="text" name="name" maxlength="40"></td>
</tr>
<tr>
<td><b>Banner:</b></td>
<td><input type="text" name="banner" maxlength="40"></td>
</tr>
<tr>
<td><b>Beschreibung:</b></td>
<td><input type="text" name="beschreibung" maxlength="40"></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" name="Neueintrag" value="Eintragen">
<input type="reset" value="Löschen">
</td>
</tr>
</table>
</form>
<?php
}
?>

Bitte beachten
Meine Tabelle "test" sieht so aus:
id = integer autoincrement
datum = date
url = varchar 255
urlname = varchar 255
name = varchar 255
banner = varchar 255
beschreibung = varchar 255

Kein Datenfeld-Name in der Tabelle darf einen Leerschlag enthalten.
Kein Textfeldname im Formular darf einen Leerschlag enthalten, daraus leiten sich nämlich die Variablen ab und Variablen-Namen dürfen keinen Leerschlag enthalten.


Im SQL-Statement "Insert" enthält das erste Klammerpaar die zu befüllenden Felder und das zweite Klammerpaar die Werte, die einzufüllen sind. Die Reihenfolge darf nicht vertauscht werden.

Wenn id = autoincrement, dann füllt das die Datenbank selbständig aus, da darf kein Wert angegeben werden.

Hier Dein SQL-Statement:

CODE INSERT INTO formualr.php
(datum, id, url, url name, name, banner, beschreibung)
VALUES
(NOW(''), '$name', '$titel', '$eintrag')",
Das bedeutet:
datum = datum
id = Name
url = Titel
Name = Eintrag
banner hat keinen Wert erhalten
Beschreibung hat keinen Wert erhalten
und "INSERT INTO formualr.php" bedeutet, Du willst ins PHP-Script was eintragen, Nonsens oder? Das muss heissen "INSERT INTO test", da soll ja was in die Tabelle mit Namen "test" rein!

Alles klar
Hamlet
 
// Zugangsdaten
$Host = "localhost";
$User = "root";
$Password = "";
$Dbase = "deinedatenbank";
 
Zurück
Oben