Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 13.10.2004, 14:28 Titel:
Datenbankfehler bei eigenem Script |
|
|
|
|
Erstmal vorweg: Bin absoluter Anfänger in PHP
Fakt: Bin gerade dabei mir aus Codeschnipseln, Tutorials und meinem sehr sehr sehr geringen Basiswissen ein eigenes Aboutme-Script nur mal so zum Test zusammenzubasteln. Hat bis jetzt auch alles wunderbar geklappt: Login-Script mit Cookies funktioniert, keine Schreibfehler im Gerüst usw.
Allerdings stoße ich jetzt auf ein Problem.. Da ich leider nur Bahnhof verstehe und den Fehler nicht nachvollziehen kann bitte ich die Coder-Elite hier um Rat
Mir wird folgender Fehler angezeigt:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\programme\easyphp\www\about\edit.php on line 65
Und hier der Code der Admin-Intern Seite:
Code: |
<?php
if(!empty($_COOKIE['login_user']))
{
echo 'Herzlich willkommen im ACP, '.$_COOKIE['login_user'].' !';
}
else
{
echo 'Sie sind nicht eingeloggt.';
}
//MySQL Verbindung aufbauen
$user="meinedbdaten";
$db="meinedbdaten";
$pw="meinedbdaten";
$host="meinedbdaten";
mysql_connect($host, $user, $pw) OR die(mysql_error());
mysql_select_db($db) OR die(mysql_error());
//Variablen setzen
$template_source="aboutme_template.htm";
$fp=fopen($template_source,"r");
$template=fread($fp,filesize($template_source));
$template2 = $template;
//Einträge löschen
if($_GET['delete'] == 1 and $_GET['id'] !="") {
$id = $_GET['id'];
echo "Löschen?<br>
<form action='?id=$id' method=post>
<input name=del type=submit value='Delete'>
</form>";
exit;
};
if($_POST['del'] !="" and $_GET['id'] !="") {
$id = $_POST['id'];
$sql = mysql_query("DELETE FROM 'aboutme' WHERE id = $id");
if($sql) { echo "Einträge wurden gelöscht!<br>";} else {
echo "Einträge konnten nicht gelöscht werden!<br>";};}
//Einträge schreiben
if(isset($_POST['absenden'])) {
$name = $_POST['name'];
if($name == "") { echo "Du musst mindestens deinen Namen eintragen!<br>";} else {
$sql = mysql_query("INSERT INTO 'aboutme' ('id','name') VALUES ('','$name');");
if($sql) { echo "Du hast deine Einträge erfolgreich vorgenommen!<br>";}
else { echo "Es ist ein Fehler aufgetreten! Einträge konnten nicht vorgenommen werden!<br>";
};};};
//Einträge auslesen
$sql = mysql_query("SELECT * FROM 'aboutme' ORDER BY 'id' DESC");
while($row = mysql_fetch_assoc($sql)) {
$id = $row['id'];
$id = $row['name'];
$template = str_replace("{name}",$name,$template);
echo $template;
$template = $template2; // template wieder auf standart setzen
};
//Admin Eintrag Formular
echo "<form method=post >
<table border=0>
<tr>
<td>Name:</td>
<td><input type=text name=name></td>
</tr>
<tr>
<td></td>
<td><input type=submit name=absenden value=Eintragen></td>
</tr>
</table></form>";
?>
|
Das ganze ist wie ihr vielleicht schon gemerkt habt Templatebasiert aber das ist ja eigentlich irrelevant. Bitte gebt mir keine Ratschläge wie ich es hätte besser machen können da ich dadurch sowieso nur durcheinander gebracht werde ^^ Will keinen total durchoptimierten Code sondern nur das Erfolgsgefühl (fast) alleine so etwas geschafft zu haben!
Mich interessiert lediglich: Warum kommt der Fehler zustande (schon wenn ich mich in die Intern-Seite einlogge)?
Danke |
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 13.10.2004, 16:10 Titel:
|
|
|
|
|
Vielleicht makierst du Line 65 ein bisschen, habe jetzt kein Lust das nachzuzählen und zu gucken was da steht |
|
Nach oben |
|
|
ShortY Mitglied
Angemeldet: 04.06.2004 Beiträge: 556 Wohnort: Herdorf Interessen: Glaube, MTB, klettern, Musik(hören und machen), Computer
|
Verfasst am: 13.10.2004, 16:54 Titel:
|
|
|
|
|
$sql = mysql_query("SELECT * FROM `aboutme` ORDER BY `id` DESC;");
schreib das ma in Zeile 64... un lösch das was da steht... wenns dann immernoch nich geht schau ma nach, ob die tabelle auch wirklich aboutme heißt und die spalte id hat |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 13.10.2004, 18:43 Titel:
|
|
|
|
|
dankeschön, mir fällt grad auf das die spalte id nicht existiert (jetzt wo du es erwähnt hast), werds mal testen |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 13.10.2004, 18:53 Titel:
|
|
|
|
|
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in c:\programme\easyphp\www\about\edit.php on line 64
steht da jetzt aber, nachdem ich die zeile gelöscht und eins weiter nach oben verschoben hab :\ |
|
Nach oben |
|
|
ShortY Mitglied
Angemeldet: 04.06.2004 Beiträge: 556 Wohnort: Herdorf Interessen: Glaube, MTB, klettern, Musik(hören und machen), Computer
|
Verfasst am: 13.10.2004, 21:22 Titel:
|
|
|
|
|
hmmm sag mal genau, wie die tabelle aboutme aussieht...
probier auchmal aus, das ORDER BY weg zumachen... |
|
Nach oben |
|
|
rey Mitglied
Angemeldet: 24.07.2004 Beiträge: 810 Wohnort: Bad Homburg Interessen: synth ;)
|
Verfasst am: 13.10.2004, 23:03 Titel:
|
|
|
|
|
ShortY hat folgendes geschrieben: | $sql = mysql_query("SELECT * FROM `aboutme` ORDER BY `id` DESC;");
schreib das ma in Zeile 64... un lösch das was da steht... |
Was soll das denn bitte? Hinter das DESC gehört mit Sicherheit kein ";". |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 14.10.2004, 13:11 Titel:
|
|
|
|
|
Code: |
# phpMyAdmin MySQL-Dump
# version 2.2.6
# http://phpwizard.net/phpMyAdmin/
# http://www.phpmyadmin.net/ (download page)
#
# Host: localhost
# Erstellungszeit: 14. Oktober 2004 um 14:05
# Server Version: 3.23.49
# PHP-Version: 4.2.0
# Datenbank : `db`
# --------------------------------------------------------
#
# Tabellenstruktur für Tabelle `aboutme`
#
CREATE TABLE aboutme (
id int(11) NOT NULL auto_increment,
name text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
#
# Daten für Tabelle `aboutme`
#
|
so sieht die tabelle aus..
und wenn zeile 64 und 65 so aussehen:
$sql = mysql_query("SELECT * FROM `aboutme` ORDER BY `id` DESC;");
while($row = mysql_fetch_assoc($sql)) {
ist die fehlermeldung zwar weg aber dann kommt noch wenn ich was eintragen will:
Es ist ein Fehler aufgetreten! Einträge konnten nicht vorgenommen werden!
|
|
Nach oben |
|
|
ShortY Mitglied
Angemeldet: 04.06.2004 Beiträge: 556 Wohnort: Herdorf Interessen: Glaube, MTB, klettern, Musik(hören und machen), Computer
|
Verfasst am: 14.10.2004, 15:30 Titel:
|
|
|
|
|
wenn du meinst rey... dann kommt halt kein semikolon an den abschluss von ner dbabfrage...
nanos: des auslesen klappt dann jetzt oder wie?
suchma nach
Code: | $sql = mysql_query("INSERT INTO 'aboutme' ('id','name') VALUES ('','$name');"); |
und ersetz des durch
Code: | $sql = mysql_query("INSERT INTO `aboutme` (id, name) VALUES('', $name);"); |
|
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 14.10.2004, 15:51 Titel:
|
|
|
|
|
da sich noch keine daten in aboutme befinden kann ich schlecht beurteilen ob da etwas ausgelesen wird jedenfalls wird keine fehlermeldung mehr ausgegeben.. aber das eintragen klappt auch nicht wenn ich es so ändere wie du gesagt hast.. es kommt wieder
Es ist ein Fehler aufgetreten! Einträge konnten nicht vorgenommen werden!
|
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 15.10.2004, 12:26 Titel:
|
|
|
|
|
Schreib es mal mit Hilfe von Variablen:
Zitat: |
$query = "INSERT INTO aboutme(id, name) VALUES('', '$name')";
mysql_query($query);
|
Und dann vielleicht noch die Überprüfung:
Zitat: |
if($query){
echo "Daten erfolgreich eingetragen";
} else{
echo "Fehler beim Eintragen der Daten!";
}
|
|
|
Nach oben |
|
|
ShortY Mitglied
Angemeldet: 04.06.2004 Beiträge: 556 Wohnort: Herdorf Interessen: Glaube, MTB, klettern, Musik(hören und machen), Computer
|
Verfasst am: 15.10.2004, 13:24 Titel:
|
|
|
|
|
das mit den variablen sollte im normalfall aber nix ausmachen...
$query = "INSERT INTO aboutme(id, name) VALUES('', '$name')";
mysql_query($query);
is ja prinzipiell genau das selbe wie mysql_query("INSERT INTO aboutme(id, name) VALUES('', $name);"); |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 15.10.2004, 13:28 Titel:
|
|
|
|
|
dankeschön, damit klappts
bedanke mich außerdem bei allen codern die sich netterweise mit dem script auseinandergesetzt haben und versuchten mir zu helfen |
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 15.10.2004, 15:01 Titel:
|
|
|
|
|
ShortY hat folgendes geschrieben: | das mit den variablen sollte im normalfall aber nix ausmachen...
$query = "INSERT INTO aboutme(id, name) VALUES('', '$name')";
mysql_query($query);
is ja prinzipiell genau das selbe wie mysql_query("INSERT INTO aboutme(id, name) VALUES('', $name);"); |
Funktionier aber - Und ist ( wie ich finde ) übersichtlicher. |
|
Nach oben |
|
|
ShortY Mitglied
Angemeldet: 04.06.2004 Beiträge: 556 Wohnort: Herdorf Interessen: Glaube, MTB, klettern, Musik(hören und machen), Computer
|
Verfasst am: 15.10.2004, 15:08 Titel:
|
|
|
|
|
jo jedem das seine... ich machs lieber so... is halt gewöhnungssache... ich escape allgemein recht eigensinnig... zB das da oben... da muss ich erst für mich "Ordnung" rein bringen ^^ |
|
Nach oben |
|
|
|