php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Fehler und ich weiß nicht wo. Bin totaler Anfänge


 
Laslayer
02-06-2003, 14:58 
 
Hallo,

folgendes Problem:

#############################################
Hier zuerst mal die Eingabemaske:
#############################################

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Unbenanntes Dokument</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p>&nbsp;</p>
<form name="suche" method="get" action="../suche_mitglied.php">
<p align="center"><font size="2" face="Arial, Helvetica, sans-serif"><strong>Datenbank
durchsuchen</strong></font></p>
<table width="34%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="2"><font size="2" face="Arial, Helvetica, sans-serif">Suchbegriff
eingeben</font></td>
</tr>
<tr>
<td width="48%">&nbsp;</td>
<td width="52%">&nbsp;</td>
</tr>
<tr>
<td colspan="2"><div align="center">
<input name="suche" type="text" id="suche" size="40">
</div></td>
</tr>
<tr>
<td colspan="2"><font size="2" face="Arial, Helvetica, sans-serif">
<input type="checkbox" name="checkbox" value="checkbox">
in Mitgliedereigenschaften suchen</font></td>
</tr>
<tr>
<td><div align="right">
<input type="submit" name="Submit" value="Suchen">
</div></td>
<td><input type="reset" name="Submit2" value="Eingaben l&ouml;schen"></td>
</tr>
</table>
<div align="center"></div>
</form>
<p>&nbsp;</p>
</body>
</html>


#############################################
und das dazugehörige PHP Skript für die Abfrage.
#############################################

<?
// Verbindung zur Datenbank herstellen

$db = mysql_connect("localhost", "root", "");
mysql_select_db("mitglied_db",$db);

// Beim Erstaufruf die Eingabemaske anzeigen:
if (empty($action))
{
include "suche.htm";
}
// User hat den Button angeklickt:

else
{
$qu = trim($keyword);
$query = "".$qu;
$query = "".$query;
$searchQuery = $query;
$qquery = ereg_replace("%","\\%",$query);
$qquery = ereg_replace("_","\\_",$qquery);

// Keine Eingabe durch User

if ( strlen($query)==0 )
{
print $tlt_font;
include "empty_search.htm";
exit;
}

$user_query = "SELECT * FROM mitglieder WHERE name='$qu'";
$kunden_result = mysql_query($mitglied_query);
if ($mitglied_result)
{
$row = mysql_fetch_array($mitglied_result);
if ($row > 0)
{
$id = mysql_result($mitlied_result,0,"id");
}
else
{
print $flr_font."<center>Mitglied $qu nicht in Datenbank gefunden.</center><BR>";
include "suche.htm";
}
}

else
{
print mysql_error();
}
}
?>

Wo liegt der Fehler? Ich werde ständig nach klicken des Submit Buttons auf "Seite nicht gefunden" zurückgelinkt. Bitte nach möglichkeit den Fehler einfach beschreiben da ich noch am Anfang stehe und mich erst seit einen Monat mit mysql und php beschäftige. Danke Euch allen im vorraus.

php.tags powered by Abraxax

 
Wurzel
02-06-2003, 15:03 
 
du rufst ne seite auf, die es nicht gibt. änder mal das hier:

<form name="suche" method="get" action="../suche_mitglied.php">
in
<form name="suche" method="post" action="suche_mitglied.php">

 
hand
02-06-2003, 15:04 
 
Möglichkeit 1:

Nach dem Absenden des Forms wird das Sktript "../suche_mitglied.php" aufgerufen.

Exisitiert dieses File ?

 
Laslayer
02-06-2003, 17:02 
 
Hallo,

Danke für die schnellen Antworten. Also dieses File suche_mitglied.php existiert. Der Fehler lag in der Pfadangabe. Dummer Fehler der mir eigentlich nicht passieren sollte :-). Jetzt bekomme ich zumindest keine Fehlermeldung mehr was aber auch nicht so gut ist da ich überhaupt keine Rückmeldung bzw. mysql_error bekomme. Ich sende die Suchanfrage ab und das wars. Die Eingabemaske bleibt stehen. hmmmm. klingt wenn ich das beschreibe zwar ein klein wenig blöd (zumindest für die Profis unter Euch) jedoch hilft mir meine vorhandene Literatur da auch nicht weiter.

Wo liegt der Fehler nun?

Danke

 
Wurzel
02-06-2003, 17:06 
 
es macht schon sinn, "action" zu übergeben. wo nix ist, ist empty($action) auch immer wahr.

<input type="submit" name="action" value="Suchen">
sollte dein problem lösen

btw: im formular hast due ein feld namens 'suche', in der php-datei
prüfst du $keyword.


$qu = trim($keyword);
$query = "".$qu;
$query = "".$query;
$searchQuery = $query;
$qquery = ereg_replace("%","\%",$query);
$qquery = ereg_replace("_","\_",$qquery);

// duch das ersetzen:
$query = addslashes($suche);


zudem wäre es besser auf die variablen per $_POST[], $_GET[], ... zuzugreifen. such mal im forum nach "register globals"

 
Laslayer
02-06-2003, 17:45 
 
super, ich erhalte eine Fehlermeldung. "Query was empty". Diese erscheint aber nur wenn ich den Radiobutton "in Mitgliedereigenschaften suchen" aktiviert habe. sonst bleibt alles wie vorher beschrieben.

Aber mich drängt ja niemand ;-)

 
Wurzel
02-06-2003, 18:02 
 
schau dir dein php-script mal ganz genau an.

ich pick nur mal eine stelle raus:

...
$user_query = "SELECT * FROM mitglieder WHERE name='$qu'";
$kunden_result = mysql_query($mitglied_query);
if ($mitglied_result)
...


- du formulierst eine db-abfrage => $user_query
- du fragst die db => $kunden_result = mysql_query($mitglied_query);
- $mitglied_query ??? hallo, wo kommt die denn plötzlich her
- du fragst, ob es ein ergebnis gibt => if ($mitglied_result)
- dasselbe phänomen: eine undefinierte variable, die somit inhaltlos ist

undsoweiter undsofort. mach dich am besten erst einmal grundlegend mit
php vertraut. wie werden variablen übergeben, kauf dir ein gutes buch.
verstehe, was du liest ;) und dann leg los.

ein gutes tutorial gibts auch unter http://www.schattenbaum.net/php

 
Laslayer
03-06-2003, 10:52 
 
Hallo,

du hast ja recht. Ich habe jedoch kein gutes Buch gefunden was meine Probleme einfach beantworten kann. Ich habe mir zum Beispiel das Buch "Jetzt lerne ich MySql und PHP" aus dem Markt und Technik Verlag zugelegt aber ich finde es einfach zu umständlich beschrieben oder ich denke zu kompliziert. Das die Abfragen nicht stimmen liegt nur daran das ich den Code schon mehrmals umgeschrieben habe und immer wieder neue Datenbanken angelegt habe. Das nächste Problem ist das meine Skripte auf dem Lokalen Server teilweise nicht laufen jedoch wenn ich Sie auf den Webspace kopiere gehen Sie auf einmal und umgekehrt. Das macht das dahintersteigen für mich als Anfänger nicht gerade leicht wenn man auf einmal mit Problemen konfrontiert ist die nirgendwo oder nur mit ewiger Suche zu lösen sind und mit der eigentlichen Aufgabe nichts zu tun haben.

Danke jedoch für Deine Hilfe und ich werde nichts desto trotz weitermachen.

 
invitatoinvitat
03-06-2003, 11:04 
 
ich würde nicht den button action nennen.

da viele einfach enter drücken anstatt den button, und dann wäre action natürlich auch empty.

 
Wurzel
03-06-2003, 11:21 
 
Original geschrieben von Laslayer
.... Danke jedoch für Deine Hilfe und ich werde nichts desto trotz weitermachen.

Davon wollte ich dich auch nicht abhalten ;)

Ok, kleiner schnellkurs anhand deines scriptes:

formulare & formfelder
- formulare mit method=post & action=DasAufzurufendeScript.php versehen
- hast du ja :)
- formfelder (input, textarea, select, buttons, etc.) bekommen einen eindeutigen namen
- der name des feldes wird nach dem absenden des formulares zum namen der variablen, z.B.<input type="text" name="meinfeld" value="test">
wird nach absenden zu
$meinfeld mit dem inhalt "test"
besser:
$_POST['meinfeld'] mit dem inhalt "test"



Bedingungen
- vergleichen kannst du nur, was du vorher auch definiert hast
- nur wenn im formular ein feld namens "action" existiert, kannst du auch
ein ergebnis aus if(!empty($action))erwarten. ansonsten
wird die bedingung nie erfüllt, weil die var immer leer ist.

SQL-Abfragen
- siehe verwenden von variablen

grundsätzlich
- wenn etwas nicht funktioniert, füg nicht wahllos irgendetwas in ein script
ein, in der hoffnung, das wird schon
- halte den code so einfach wie möglich, aufblähen kannst du ihn immer noch
- überlege, was du willst und code dann

ein einfaches beispiel

// SUCHMASKE
<form name="suche" method="get" action="suche_mitglied.php">
<p>Suchbegriff eingeben</p>
<p><input name="suche" type="text" id="suche" size="40"></p>
<p><input type="submit" name="action" value="Suchen"></p>
</form>


// SUCHE_MITGLIED.PHP

if ($suche == "") // wenn form gesendet, aber keine eingabe im feld suche
{
print "Kein Suchwort eingegeben";
}
else
{
// Verbindung zur Datenbank herstellen
$db = mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("mitglied_db",$db) or die(mysql_error());

$suche = trim($suche);
$suche = addslashes($suche);

$user_query = "SELECT * FROM mitglieder WHERE name='$suche'";
$result = mysql_query($user_query) or die(mysql_error());
if (mysql_num_rows($result) >0) // hats ein ergebnis
{
$id = mysql_result($result,0,"id");
print "Mitglied ".$suche." mit ID: ".$id." gefunden.";
}
else
{
print "Mitglied ".$suche." nicht gefunden.";
}
}
?>


so, nu schau mal in ruhe darüber, schlag die verwendeten funktionen nach und bau es aus.

mist, zischenzeitlich die falsche taste gedrückt, gmmml

 
Laslayer
03-06-2003, 14:49 
 
Danke für diese ausführliche Hilfe. Anhand so eines Tutorial verstehe ich auch die Thematik. Ich kann nur nichts damit anfangen wenn in einen Buch wie den meinen steht ich soll dann eine Verbindung zur Datenbank herstellen und die erklären das anhand der Dos-Box beziehen sich aber auf ein HTML bzw. PHP Dokument. Gerade dies ist für Anfänger sehr verwirrend zumal viele und ich zähle mich darunter lieber praktisch an die Sache herangeführt werden. Kannst Du mir denn ein gutes Buch empfehlen?

Danke

 
Wurzel
03-06-2003, 18:11 
 
guckst du hier
http://www.php-resource.de/forum/showthread.php?s=&threadid=16288&highlight=b%FCcher


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:21 Uhr.