# MySQL Eintrag mit PHP suchen und ausgeben ?



## Cry (8. Juli 2004)

moin ,

habe folgendes problem ich möchte aus meiner db einen kompletten datensatz heraussuchen, vorher will ich in einem formular nur einen Namen eingeben und dann soll dieser halt komplett mit den daten angezeigt werden kann mir da jemand helfen ? hab schon was versucht aber bitte nicht lachen *g bin erst seit 3 tagen am php proggen.



Das ist das formular :

```
...
<form action="scuhen.php" method=post>
Name <br>
<input type=text name="such" size= 30>
<br>
<br>
<input type=submit name="SUBMIT" value="suchen">
<br>
</form>
...
```

das ist die scuchen.php

```
..

<?php
$i = 0;
$db = @mysql_connect("localhost","**","**") or die ("Keine Verbindung!");
@mysql_select_db("Intern2",$db) or die ("Datenbank existiert nicht!");

$result = mysql_query("SELECT * FROM uebersicht2 WHERE Name == $such",$db);

echo "$result";

mysql_close($db);
?>
..
```



Gruss Cry


----------



## Mirko D (8. Juli 2004)

```
"SELECT * FROM uebersicht2 WHERE Name Like %$such%",$db
```

versuchs ma so 

Gruß mirko


----------



## Cry (8. Juli 2004)

ne spuckt leider auch nur ne leere php seite aus 

glaube ich sollte noch sagen das die tabelle uebersicht2 aus 4 feldern besteht 
einmal 

ID auto_increment <- soll nicht mit ausgegeben werden ist mein PK
Apteilung
Name 
Tele


----------



## mini_xs (8. Juli 2004)

```
<?php
$db = @mysql_connect("localhost","**","**") or die ("Keine Verbindung!");
@mysql_select_db("Intern2", $db) or die ("Datenbank existiert nicht!");

$sql = "SELECT * FROM uebersicht2 WHERE Name = '$such'";
$result = mysql_query($sql);

//dannach Ausgabe, wenn es mehrere Ergebnisse werden mit einer while Schleife arbeiten

$row = mysql_fetch_array($result);
mysql_close($db);

?>
```


----------



## Mirko D (8. Juli 2004)

```
"SELECT * FROM uebersicht2 WHERE Name  LIKE '%".$such."%'";
```

So starte ich meine Suchabfrage und sie funktioniert.  Versuchs noch mal und pass deine Tabellen evtl mal an. 

Gruß Mirko


----------



## Cry (8. Juli 2004)

danke leute ich probiere das mal eben aus , meld mich dann


----------



## Mirko D (8. Juli 2004)

> Original von mini_xs
> 
> ```
> $sql = "SELECT * FROM uebersicht2 WHERE Name = '$such'";
> ```



Das würde ja heissen das man *genau* das Suchwort eingeben müsste um einen Treffer in der Datenbank zu landen. Es geht ja glaub ich viel mehr um eine Volltext suche. 

Gruß Mirko


----------



## mini_xs (8. Juli 2004)

> _Original geschrieben von Mirko D _
> *Das würde ja heissen das man genau das Suchwort eingeben müsste um einen Treffer in der Datenbank zu landen. Es geht ja glaub ich viel mehr um eine Volltext suche.
> 
> Gruß Mirko *



Schreibt er das er eine *Volltextsuche * realisieren möchte?
Habe nichts dergleichen *gelesen*.

Mir gibt nur zu denken dass er nicht direkt eine resource id Warnung ausgespuckt bekommt.


----------



## Cry (8. Juli 2004)

ne bekomme leider nichts dergleichen ausgegeben  

also um nochmal auf das suchen zurück zu kommen, es sollte halt nur der name eingegeben werden und dann soll mir die nummer herausgespuckt werden..

so sieht mein script jetzt aus 



```
..
<?php
$db = @mysql_connect("localhost","*","*") or die ("Keine Verbindung!");
@mysql_select_db("intern2", $db) or die ("Datenbank existiert nicht!");

$sql = "SELECT * FROM uebersicht2 WHERE Name = '$such'";
$result = mysql_query($sql);

while ($row = mysql_fetch_array($result))
{
 echo "Apteilung : $row[1]<br>";
 echo "Name    : $row[2]<br>";
 echo "Nummer    : $row[3]<br>";
 echo "<br> <br> <hr>";
}

mysql_close($db);

?>
..
```


das ich bei dem array bei 1 anfange ist doch richtig oder ? weil 0 wäre ja die id !?


----------



## Mirko D (8. Juli 2004)

@ mini_xs 

*MySQL Eintrag mit PHP suchen und ausgeben ?*
Das ist der Titel des Posts. Und somit denke ich das er ein Wort in einem Feld sucht und nicht gleich alle. 

Aber das ist natürlich reine Interpretationssache. Ich wollte dir nicht an den Karren p..en. Wenn es so angekommen ist, tut es mir leid. 

Gruß Mirko


----------



## Mirko D (8. Juli 2004)

```
while ($row = mysql_fetch_array($result)) 
{ 
echo "Apteilung : $row['feld1']<br>"; 
echo "Name    : $row[feld2']<br>"; 
echo "Nummer    : $row[feld3']<br>"; 
echo "<br> <br> <hr>";
```

Wenn du fetch_array benutzt musst du die Feldnamen zurückgeben. 

Gruß Mirko


----------



## Cry (8. Juli 2004)

hey jungs wollte hier kein streitthema anfangen  habs oben noch einmal beschrieben wie genau das suche von statten gehen soll sorry falls ich mich etwas unklar ausgedrückt haben sollte


----------



## jenno (8. Juli 2004)

Mache bitte als allererstes mal die "@" aus Deinem Code raus.  Die unterdrücken nämlich Fehlermeldungen.  Und gerade die sollen ja sichtbar sein, vor allem wenns nicht geht und Du auf der Fehlersuche bist!


----------



## Marine_of_Hell (8. Juli 2004)

Probiers mal mit


```
$row = mysql_fetch_row($result);
```
So funktioniert das immer bei mir.

Gruss,
M@rine_of_Hell


----------



## jenno (8. Juli 2004)

Oder das hier (hab den Code ein bisschen verändert...)


```
.. 
<?php 
$db = mysql_connect("localhost","*","*") or die ("Keine Verbindung!"); 
mysql_select_db("intern2", $db) or die ("Datenbank existiert nicht!"); 

$sql = "SELECT * FROM uebersicht2 WHERE Name = '".$such."'"; 
$result = mysql_query($sql) or die(mysql_error()); 

while ($row = mysql_fetch_assoc($result)) 
{ 
echo "Apteilung : $row['spaltenname']<br>";  //ersetze spaltenname mal bitte durch den namen deiner tabellenspalte!
echo "Name    : $row['spaltenname']<br>"; 
echo "Nummer    : $row['spaltenname']<br>"; 
echo "<br> <br> <hr>"; 
} 

mysql_close($db); 

?> 
..
```


----------



## Ben Ben (8. Juli 2004)

welches mysql_fetch benutzt wird ist ja unwichtig. Zu einem Ergebnis führen diese alle.
Die @ kann man ruhig auch lassen, da er ja wenigstens ein or die dahinter hat.
ALso entweder ist dein Statement falsch ( das überprüfst du ja noch nicht) oder das Ergebnis ist eben leer...


```
$result = mysql_query($sql);
if( ! is_ressource($result) )
           die("Fehler: ".mysql_error());

while ($row = mysql_fetch_assoc($result))
{
echo 'Apteilung : '.$row['feld1'];
echo '<br>Name    : '.$row['feld2'].']<br>';
echo "<br> <br> <hr>";
}

mysql_close($db);
```
 
EDIT: da war ich wohl zu langsam


----------



## mini_xs (8. Juli 2004)

Tut mir selber leid, unsere Kaffeemaschine ist kaputt, deshalb bin ich morgens wohl etwas etwas "hellhörig" .

Die @s entfernen und nochmal schauen ist ein guter Ansatz.
Wenn er dann immer nochnichts tut ist vielleicht kein passender Datensatz vorhanden.
Gibt er denn wenn du ohne die WHERE Abfrage arbeitest was aus?

Viele Grüße

Stefan


----------



## Marine_of_Hell (8. Juli 2004)

Ich bin mir jetzt nicht sicher, aber musst du nicht die Connectionvariable mit angeben bei:


```
$result = mysql_query($sql);
```

?

Das muss doch so aussehen:


```
$result = mysql_query($sql, $db);
```

oder?

Gruss M@rine_of_Hell


----------



## Cry (8. Juli 2004)

also ich habe mal den ausschnitt von jenno genommen 
jetzt bekomme ich folgende meldung :


Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in J:\Programme\Apache Group\Apache2\htdocs\scuhen.php on line 16


in line 16 ist bei mir :

14)while ($row = mysql_fetch_assoc($result))
15){
16)echo "Apteilung : $row['Apteilung']<br>";  
17)echo "Name    : $row['Name']<br>";
18)echo "Nummer    : $row['Nummer']<br>";
19)echo "<br> <br> <hr>";
20)}

und die spalten sind auch die richtigen, komisch


----------



## Ben Ben (8. Juli 2004)

@Marine: Diese kann man optional angeben. Macht eigentlich nur sinn wenn du verschiedene Connections hast in einem Script. Bei einer einzelnen, ist es Wurst.


----------



## Ben Ben (8. Juli 2004)

die Arrays müssen aus dem String raus oder {]rum...


```
echo "Apteilung : $row['Apteilung']<br>";

//entweder so:
 
echo 'Apteilung : '.$row['Apteilung'].'<br>';

//oder
echo "Apteilung : {$row['Apteilung']}<br>";
```


----------



## jenno (8. Juli 2004)

Nein, das mit der Connectionvariable muss man nicht.  Ich tu das jedenfalls nie.  Wenns da gute Gründe für gibt, dann bin ich neugierig.

Edit: Puh, das geht ja in einem Affentempo hier.  Darf man keine 2 Minuten wegschauen!


----------



## Cry (8. Juli 2004)

jenno hat gesagt.:
			
		

> Edit: Puh, das geht ja in einem Affentempo hier.  Darf man keine 2 Minuten wegschauen!



da muss ich dir recht geben 

also selbst wenn ich die array aus dem string nehme bekomme ich zwar keine fehlermeldung mehr aber dafür wieder eine leere seite 


so siehts jetzt aus 


```
<?php
$db = mysql_connect("localhost","*","*") or die ("Keine Verbindung!");
mysql_select_db("intern2", $db) or die ("Datenbank existiert nicht!");

$sql = "SELECT * FROM uebersicht2 WHERE Name = '".$such."'";
$result = mysql_query($sql) or die(mysql_error());

while ($row = mysql_fetch_assoc($result))
{
echo 'Apteilung : '.$row['Apteilung'].'<br>';
echo 'Name    : '.$row['Name'].'<br>';
echo 'Nummer    : '.$row['Nummer'].'<br>';
}

mysql_close($db);

?>
```


----------



## Ben Ben (8. Juli 2004)

was gibt dir denn statt der While-Schleife ein
mysql_num_rows aus?

also so:


```
$sql = "SELECT * FROM uebersicht2 WHERE Name = '".$such."'";
$result = mysql_query($sql) or die(mysql_error());

var_dump( mysql_num_rows($result) );
```


----------



## Mirko D (8. Juli 2004)

Du kannst es ja auch mal mit einer for() schleife versuchen. 


```
for ($i=0; $i<=mysql_num_rows($result); $i++) { 

//Deine Ausgaben 
//...............................................

}
```

Gruß Mirko


----------



## Cry (8. Juli 2004)

geht leider auch nicht, ich mach mal eben pause, dann schau ich mir das gleich nochmal ganz in ruhe an , wenn ich was gefunden haben sollte melde ich mich auf jeden fall..

erst einmal besten dank für eure hilfe 


Gruss Cry


----------



## jenno (8. Juli 2004)

Tips über Tips

Lass Dir mal Dein sql-statement ausgeben:


```
$sql = "SELECT * FROM uebersicht2 WHERE Name = '".$such."'";
echo($sql);
```


----------



## Cry (8. Juli 2004)

so wieder da  

also hab mal das mit dem statement ausprobiert, bekomme folgendes ausgegeben :

SELECT * FROM uebersicht2 WHERE Name = '' 

und mein php sieht so aus :

```
<?php
$db = mysql_connect("localhost","*","*") or die ("Keine Verbindung!");
mysql_select_db("intern2", $db) or die ("Datenbank existiert nicht!");

$sql = "SELECT * FROM uebersicht2 WHERE Name = '".$such."'";
$result = mysql_query($sql) or die(mysql_error());

echo ($sql);
while ($row = mysql_fetch_assoc($result))
{
echo 'Apteilung : '.$row['Apteilung'].'<br>';
echo 'Name    : '.$row['Name'].'<br>';
echo 'Nummer    : '.$row['Nummer'].'<br>';
}


mysql_close($db);

?>
```


----------



## Mirko D (8. Juli 2004)

Dann wird dein Name nicht übergeben also register_globals ist auf off. 

Da musst du dann $_POST['such'] benutzen und dann müsste es funktionieren. 

Gruß Mirko


----------



## Cry (8. Juli 2004)

juhuuuuuuuuuu es geht   

danke euch allen noch einmal 


Gruss Cry


----------



## Mirko D (8. Juli 2004)

Es freut mich wenn ich andere Menschen glücklich machen kann. 
* ich bin zutiefst gerührt*  

Gruß Mirko


----------



## jenno (8. Juli 2004)

Das kann ich mir ja jetzt wohl nicht verkneifen:

Das war ja wohl ein Standardfehler!  Den gibts hier täglich!  Und das da so ein langer Thread draus werden kann...einfach unglaublich!


----------



## Mirko D (8. Juli 2004)

Aber es hat dafür gereicht das 29 Posts lang keiner drauf gekommen ist.
Das finde ich für uns doch eigentlich ein bisschen blamabel. :-( 
Aber naja auch Standartfehler haben immer eine Ursache. 

Gruß Mirko


----------



## Ben Ben (8. Juli 2004)

Aber ich war mit num_rows nah dran 
So lange wir es aber gefunden haben ist es ja gut


----------

