php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 2 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 27-07-2009, 01:21
erniedd
 Registrierter Benutzer
Links : Onlinestatus : erniedd ist offline
Registriert seit: Mar 2009
Beiträge: 51
erniedd ist zur Zeit noch ein unbeschriebenes Blatt
Standard Suchfunktion mit PHP und SQL

Hallo erstmal :-)

ich möchte für meine Website eine Suchfunktion einbauen, das ganze soll ein eingabe
feld haben und einen suchbutton,
dann soll sich das ganze auf einer neuen Site aufbauen um dann die ergebnisse
sortiert auspucken.

Ich habe zunächst im Internet etwas reserchiert und habe folgendes Scrypt
gefunden:

PHP-Code:
Hallo,
das Ziel dieses Tutorial ist, dass es jedem möglich sein sollte eine Suchfunktion
 für seine Datenbank zu programmieren.

Wichtig: Dieses Skript für die Suchfunktion beinhaltet nur das aller nötigste! 
Sprich es soll nur zeigen wie eine Suchfunkion aufgebaut sein kann. Natürlich 
kann man soclhe "Extras" noch ergänzen.


Zum Skript: Ich poste einfach mal das ganze Skript. Folgend werden dann die 
verschiedenen Punkte genauer erklärt.
php:


<? 

//Formularfeld 
echo " <form name=form1 method=post  action='" .$_SERVER['PHP_SELF'] ."'>\n"
echo 
"<input class= formular name=suche type=text maxlenght=255 size=20 value='".$_POST['suche']."'>\n"
echo 
"<input class= formular type=submit name=Submit value='Senden'>\n"
echo 
"<input class= formular type=reset name=Submit value=Reset>\n</form>"

//Verbindung herstellen
include 'db_connect.inc';
$sqldatabase mysql_pconnect("$host","$user","$pwd") or die('<b>#'.mysql_errno().':</b> '.mysql_error());
                
mysql_select_db($dbname$sqldatabase) or die('<b>#'.mysql_errno().':</b> '.mysql_error());

//Suche starten, Ergebnise ausgeben
$daten mysql_query('SELECT * FROM `'.$tblname.'` WHERE `Artist`=\''.$_POST['suche'].'\''$sqldatabase); 
while(
$row=mysql_fetch_array($daten)){
echo 
$row['Artist'];


?>



Gut, also zur genaueren Erklärung des Skripts:

1.Eingaben per Formularfeld
php:


<?php //Formularfeld 
echo " <form name=form1 method=post  action='" .$_SERVER['PHP_SELF'] ."'>\n"
echo 
"<input class= formular name=suche type=text maxlenght=255 size=20 value='".$_POST['suche']."'>\n"
echo 
"<input class= formular type=submit name=Submit value='Senden'>\n"
echo 
"<input class= formular type=reset name=Submit value=Reset>\n</form>"?>



Dieser Code beinhaltet das Formularfeld. Die Angaben aus dem Formular wird 
danach an sich selber geschickt. (action='" .$_SERVER['PHP_SELF'] ."') Das 
Textfeld bekommt den Wert: $_POST (value='".$_POST['suche']."')




2. Verbindung herstellen
php:


<?php include 'db_connect.inc';
$sqldatabase mysql_pconnect("$host","$user","$pwd") or die('<b>#'.mysql_errno().':</b> '.mysql_error());
                
mysql_select_db($dbname$sqldatabase) or die('<b>#'.mysql_errno().':</b> '.mysql_error()); ?>


In diesem Abschnitt wird Verbindung mit der Datenbank aufgenommen. 
Ich benütze dafür eine externe Datei! Man muss einfach $host, $user, $pwd, $tblname, $dbname 
durch seine Daten ersetzen.



3. Suche starten und Ergebnisse anzeigen:
php:


<?php $daten mysql_query('SELECT * FROM `'.$tblname.'` WHERE `Artist`=\''.$_POST['suche'].'\''$sqldatabase); 
while(
$row=mysql_fetch_array($daten)){
echo 
$row['Artist'];
?>


so nun zum wichtigsten Punkt. Hier wird wie es der Titel schon sagt, die Eingaben verwertet. 
Er checkt ab, ob der Suchbegriff mit einem Wert der Spalte identisch ist. (WHERE `Artist`=\''.$_POST['suche'].) Also muss man
 "Artist" durch einen vorhandenen Spaltennamen ersetzen. Danach wird mit der while schleife der Suchbegriff weiterverarbeitet 
bis zum echo $row['Artist'];!
Hier werden die Ergebniss per echo ausgegen!
Den Scrypt bin ich dann schritt für schritt durchgegangen nur leider klappt es nicht.

Meine Daten:

$hostname_verbindung = "localhost";
$database_verbindung = "phost136983";
$username_verbindung = "phost136983";
$password_verbindung = "******";

Meine Tabelle heißt: tblspieledatenbank und meine Spalte str_spiel_name

Es soll mit hilfe von Stichwörten nach Spielen gesucht werden.

Ich habe dann 2 Datein erstellt, erstmal das Eingabe Formular:

PHP-Code:
<?php //Formularfeld 
echo " <form name=form1 method=post  action='" .$_SERVER['PHP_SELF'] ."'>\n"
echo 
"<input class= formular name=suche type=text maxlenght=255 size=20 value='".$_POST['suche']."'>\n"
echo 
"<input class= formular type=submit name=Submit value='Senden'>\n"
echo 
"<input class= formular type=reset name=Submit value=Reset>\n</form>"?>

<?php require_once('../test/connect.html'); ?>
<?php



<?php $daten mysql_query('SELECT * FROM `'.$tblspieledatenbank.'` WHERE `str_spiel_name`=\''.$_POST['suche'].'\''$sqldatabase); 
while(
$row=mysql_fetch_array($daten)){
echo 
$row['Artist'];
?>
und connect.php :
PHP-Code:
<?php include 'db_connect.inc';
$sqldatabase mysql_pconnect("localhost","phost136983","*****") or die('<b>#'.mysql_errno().':</b> '.mysql_error());
                
mysql_select_db(phost136983tblspieledatenbank) or die('<b>#'.mysql_errno().':</b> '.mysql_error()); ?>
Ich bekomme folgenden Fehler:

Parse error: parse error in C:\xampp\htdocs\gameboxx\test\formular.php on line 24


Und ich verstehe auch nicht, was $sqldatabase zu bedeuten hat, ich bin jetzt mal davon
ausgegangen, dass es meine Taballe tblspieledatenbank ist O.o, glaube aber das es falsch ist.

für Hilfe bin ich sehr dankbar :-)
Mit Zitat antworten
  #2 (permalink)  
Alt 27-07-2009, 01:35
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

In Zeile 24 oder davor, hast du einen Tippfehler drin.

Der Fehler hat nix mit der DB zu tun.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #3 (permalink)  
Alt 27-07-2009, 01:38
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo Ernie,

Zitat:
Zitat von erniedd Beitrag anzeigen
Ich bekomme folgenden Fehler:

Parse error: parse error in C:\xampp\htdocs\gameboxx\test\formular.php on line 24
Hättest du nicht vielleicht Lust, diese Datei (formular.php) mal zu posten und darin die Zeile 24 kenntlich zu machen, z. B. durch Einfügen von "// Line 24" (ohne ") am Ende der Zeile?

Zitat:
Zitat von erniedd Beitrag anzeigen
Und ich verstehe auch nicht, was $sqldatabase zu bedeuten hat, ich bin jetzt mal davon
ausgegangen, dass es meine Taballe tblspieledatenbank ist O.o, glaube aber das es falsch ist.

für Hilfe bin ich sehr dankbar :-)
Die Dinger, die mit $ beginnen, nennt man in PHP Variablen, die Assoziation zu Variablen aus Mathe ist durchaus angebracht. In dieser speziellen Variablen befindet sich ein Wert, der die Verbindung zu deiner Datenbank repräsentiert. Deine Annahme, dass sich dahinter deine Taballe tblspieledatenbank verbirgt, ist also falsch.

Beispielcode und Funktionen zum Arbeiten mit MySQL-Datenbanken findest du unter PHP: PDO - Manual (objektorientierter, allgemeiner Ansatz), unter PHP: Mysqli - Manual (verbesserter, objektorientierter MySQL-Zugriff) und schließlich unter PHP: MySQL - Manual (traditioneller, funktionsbasierter MySQL-Zugriff)

Gruß,

Anja
Mit Zitat antworten
  #4 (permalink)  
Alt 27-07-2009, 01:43
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Achso, ich seh grad, in deinem ersten Code-Block geht in Zeile 7 ein PHP-Block auf, der nicht wieder geschlossen wird, dann kommen Leerzeilen und dann geht wieder ein Block auf. Das darf nicht sein, PHP-Blöcke lassen sich nicht verschachteln, also: Zeile 7 löschen, wenn dort sowieso nichts mehr kommt.
Mit Zitat antworten
  #5 (permalink)  
Alt 27-07-2009, 01:52
erniedd
 Registrierter Benutzer
Links : Onlinestatus : erniedd ist offline
Registriert seit: Mar 2009
Beiträge: 51
erniedd ist zur Zeit noch ein unbeschriebenes Blatt
Standard

so ersteinmal die zeile

24
PHP-Code:
<?php $daten mysql_query('SELECT * FROM `'.tblspieledatenbank.'` WHERE `str_spiel_name`=\''.$_POST['suche'].'\''tblspieledatenbank);

Geändert von erniedd (27-07-2009 um 01:55 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 27-07-2009, 02:14
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hinten bei tblspieledatenbnak fehlt der Dollar davor.

Edit: achso und vorne ja auch
Mit Zitat antworten
  #7 (permalink)  
Alt 27-07-2009, 02:22
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Wenn ich nochmal genauer auf deine bisher geposteten Beispiele sehe, fällt mir auf, dass da noch mehr gravierende Fehler drin sind, die mich zu der Vermutung führen, dass du noch nie mit PHP zu tun hattest.

In diesem Falle solltest du auf PHP: Hypertext Preprocessor mit der Einführung beginnen (wenn du genug Zeit hast) oder in diesem Forum dein Glück versuchen: Jobs und Projekte - PHP script resource

Denn ohne zumindest Grundlagen von PHP zu haben, glaube ich nicht ganz daran, dass du in den nächsten 3 Tagen eine Suchfunktion in deiner Homepage anbieten kannst.

Gruß,

Anja
Mit Zitat antworten
  #8 (permalink)  
Alt 27-07-2009, 09:24
piratos
 Guest
piratos
Beiträge: n/a
Standard

Mit der Suchfunktion wirst du auch keine große Freude haben, da nur Treffer gemeldet werden, wenn der Suchbegriff exakt einem Feldinhalt gleicht.

Beschäftige dich mal mit der Mysql Volltextsuche.

Wie man das macht steht hier:

MySQL :: MySQL 5.1 Referenzhandbuch :: 12.7 MySQL-Volltextsuche
Mit Zitat antworten
  #9 (permalink)  
Alt 27-07-2009, 10:16
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.595
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Der Code ist anfällig für SQL-Injections. Jeder Anfänger könnte die Seite hacken.
Mit Zitat antworten
  #10 (permalink)  
Alt 29-07-2009, 20:19
erniedd
 Registrierter Benutzer
Links : Onlinestatus : erniedd ist offline
Registriert seit: Mar 2009
Beiträge: 51
erniedd ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hey, erstma sorry das ich mich nicht solange gemeldet habe, und danke für die vielen antworten :-), ich hab es überarbeitet:

PHP-Code:

<?php ;

$sqldatabase mysql_pconnect("localhost","phost136983","******") or die('<b>#'.mysql_errno().':</b> '.mysql_error());
                
mysql_select_db(phost136983$sqldatabase) or die('<b>#'.mysql_errno().':</b> '.mysql_error()); ?>



<?php //Formularfeld 
echo " <form name=form1 method=post  action='" .$_SERVER['PHP_SELF'] ."'>\n"
echo 
"<input class= formular name=suche type=text maxlenght=255 size=20 value='".$_POST['suche']."'>\n"
echo 
"<input class= formular type=submit name=Submit value='Senden'>\n"
echo 
"<input class= formular type=reset name=Submit value=Reset>\n</form>"?>






<?php $daten mysql_query('SELECT * FROM `'.$tblspieledatenbank.'` WHERE `str_spiel_name`=\''.$_POST['suche'].'\''$sqldatabase); 
while(
$row=mysql_fetch_array($daten)){
echo 
$row['str_spiel_name'];
?>

Ich bekomme folgenden Fehler:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\gameboxx\test\formular.php on line 19

Die Reihe 19 ist diese hier(die dritt letzte) :
PHP-Code:
while($row=mysql_fetch_array($daten)){ 
wäre sehr dankbar wenn ihr mir au da weiterhelfen könntet

Geändert von erniedd (29-07-2009 um 21:07 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 29-07-2009, 20:22
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Zitat:
Zitat von erniedd Beitrag anzeigen
........ich hab es überarbeitet:
................
wäre sehr dankbar wenn ihr mir au da weiterhelfen könntet
Wieso sehe ich kein mysql_error() an der richtigen Stelle ? Du kennst es doch schon...
Weiterhin anfällig gegen:
1. SQL Injection
2. XSS

P Connect ist bedenklich.
Solange du nicht weißt, was du tust: Lass das P weg.
__________________
Wir werden alle sterben
Mit Zitat antworten
  #12 (permalink)  
Alt 29-07-2009, 20:34
erniedd
 Registrierter Benutzer
Links : Onlinestatus : erniedd ist offline
Registriert seit: Mar 2009
Beiträge: 51
erniedd ist zur Zeit noch ein unbeschriebenes Blatt
Standard

da is doch nen mysql error ganz oben, sql injection hab ich mich noch nit so richtig drum gekümmert, weis zwar ja jetzt was es damit auf sich jetzt hat, aber muss mir das nochma in ruhe vertiefen

oder meintest du das so ?

PHP-Code:
<?php $daten mysql_query('SELECT * FROM `'.$tblspieledatenbank.'` WHERE `str_spiel_name`=\''.$_POST['suche'].'\''$sqldatabase); 
while(
$row=mysql_fetch_array($daten)){
echo 
mysql_errno() . ": " mysql_error() . "\n";
echo 
$row['str_spiel_name'];
?>

Geändert von erniedd (29-07-2009 um 20:39 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 29-07-2009, 20:43
gourmet
 Registrierter Benutzer
Links : Onlinestatus : gourmet ist offline
Registriert seit: Feb 2007
Beiträge: 154
Blog-Einträge: 1
gourmet ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von erniedd Beitrag anzeigen
da is doch nen mysql error ganz oben, sql injection hab ich mich noch nit so richtig drum gekümmert, weis zwar ja jetzt was es damit auf sich jetzt hat, aber muss mir das nochma in ruhe vertiefen

oder meintest du das so ?

PHP-Code:
<?php $daten mysql_query('SELECT * FROM `'.$tblspieledatenbank.'` WHERE `str_spiel_name`=\''.$_POST['suche'].'\''$sqldatabase); 
while(
$row=mysql_fetch_array($daten)){
echo 
mysql_errno() . ": " mysql_error() . "\n";
echo 
$row['str_spiel_name'];
?>

nein so
PHP-Code:
$daten mysql_query('SELECT * FROM `'.$tblspieledatenbank.'`
WHERE `str_spiel_name`=\''
.$_POST['suche'].'\''$sqldatabase) or die(mysql_error()); 
Mit Zitat antworten
  #14 (permalink)  
Alt 29-07-2009, 20:45
combie
 PHP Expert
Links : Onlinestatus : combie ist offline
Registriert seit: May 2006
Beiträge: 3.296
combie wird schon bald berühmt werden
Standard

Wo tritt der Fehler auf?
Hier: while($row=mysql_fetch_array($daten))

Warum?
Weil in $daten nicht das erwartete drin steht.

Warum steht in $daten nicht das erwartete din?
Weil die vorhergehende Abfrage fehlschlägt.

Warum schlägt die vorhergehende Abfrage fehl?
KA!
Du hast da kein mysql_error() eingebaut
__________________
Wir werden alle sterben
Mit Zitat antworten
  #15 (permalink)  
Alt 29-07-2009, 20:58
erniedd
 Registrierter Benutzer
Links : Onlinestatus : erniedd ist offline
Registriert seit: Mar 2009
Beiträge: 51
erniedd ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ahhh ok

er hat mir angezeigt das der table name nit korrekt ist, nun hab ich das $ von tblspieledatenbnk weggemacht und dann gings, allerdings ist die suche irgendwie dumm

möchte ich beispiels weiße nach duke nukem 3d suchen, muss ich den kompletten namen eingeben, statt einfach nur duke oder nukem oder 3d
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
suchfunktion crislot SQL / Datenbanken 16 21-09-2006 18:52
Sql Php Suchfunktion sonny411 SQL / Datenbanken 2 10-03-2006 13:36
suchfunktion joeCrack Fragen/Vorschläge zum Forum 4 20-02-2006 11:11
suchfunktion lukeacid SQL / Datenbanken 5 21-11-2005 22:13
suchfunktion mukraker BRAINSTORMING PHP/SQL/HTML/JS/CSS 2 18-02-2004 22:26

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:38 Uhr.