Undefinied function, wie richtig?
Stephan
- php
Hallo,
ich habe leider im Forumswirrwa meinen anderen Tread von vorgestern verlegt und muss jetzt neu Posten:
Ich habe eine Suchmaschine, die von einem Formular die Variable $suche bekommt. Das Formular heisst index.php3, die Ergebnisseite ergebnis.php3
Jetzt habe ich diesen Code, der eigendlich in der MySQL Tabelle alles herausfildern soll, was mit dem Suchbegriff zusammen in einem Tet ist, also sowas wie eine Suche, die die Dateien durchsucht, nur auf MySQL Basis:
<?php
/* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql_connect("", "", "")
or die("Keine Verbindung möglich: " . mysql_error());
print "Verbindung zum Datenbankserver erfolgreich";
mysql_select_db("") or die("Auswahl der Datenbank fehlgeschlagen");
// ausführen einer SQL Anfrage
$result = mysql_query("SELECT * FROM Searchengine WHERE titel LIKE '%$suche%' OR meta LIKE '%$suche%' OR beschreibung LIKE '%$suche%' ORDER BY pr DESC")
or die("Anfrage fehlgeschlagen: " . mysql_error());
// Ausgabe der Ergebnisse in HTML
print "<table>\n";
while ($ue = mysql_fetch_array($result, titel))
while ($lk = mysql_fetch_array($result, link))
while ($bs = mysql_fetch_array($result, beschreibung)) {
print "\t<tr>\n";
print "\t\t<td><a class=style2 href='$link'>$ue</a></td>\n";
print "\t</tr>\n";
}
print "</table>\n";
// Freigeben des Resultsets
mysql_free_result($result);
// schliessen der Verbinung
mysql_close($link);
?>
und die fehlermeldung:
Zitat:
Warning: mysql_fetch_array(): The result type should be either MYSQL_NUM, MYSQL_ASSOC or MYSQL_BOTH. in /home/www/web1027/html/de/search/ergebnis.php3 on line 253
Und dann hebe ich noch eine Frage: Wie kann ich es machen, dass $suche und $result, egal wie sie geschrieben wurden, von ABC zu abc gemacht werden?
Danke schon jetzt für die hilfe
Stephan
Hi Stephan,
print "<table>\n";
while ($ue = mysql_fetch_array($result, titel))
while ($lk = mysql_fetch_array($result, link))
while ($bs = mysql_fetch_array($result, beschreibung)) {
Warning: mysql_fetch_array(): The result type should be either MYSQL_NUM, MYSQL_ASSOC or MYSQL_BOTH. in /home/www/web1027/html/de/search/ergebnis.php3 on line 253
wie wärs mit nachgucken unter <www.php.net>
mysql_fetch_array hat entweder nur einen Parameter oder aber eine Angabe darüber ob das Ergebnis mit numerischen Indizes oder mit den Spaltenüberschriften als Indizes oder mit beidem ausgestattet werden soll.
Was Du versuchst kann ich nicht nachvollziehen, Vermutung: Du versucht die Spalten einzeln heruaszuziehen?
$test = mysql_fetch_array($result); liefert Dir ein Array mit den Ergebnissen der ersten Zeile.
$test[0] repräsentiert die erste Spalte $test[1] die Zweite uwsw.
Und dann hebe ich noch eine Frage: Wie kann ich es machen, dass $suche und $result, egal wie sie geschrieben wurden, von ABC zu abc gemacht werden?
Auch hier wirst Du schnell fündig unter php.net. DU suchst nach uppercase oder lowercase. Je nach Wunsch kann das aber auch die Datenbank bei der Abfrage für dich machen, dort heissen die Befehle ähnlich.
ciao
romy
Hallo,
dann sieht das ja so aus:
while ($row = mysql_fetch_array($result, MYSQL_NUM))
while ($row[1] = mysql_fetch_array($result, MYSQL_NUM))
while ($row[3] = mysql_fetch_array($result, MYSQL_NUM)) {
Jetzt noch 2 Fragen: Wie sind dann die Variablen, die ich zum Antzeigen benutze?
und wie kann ich $row[3] sagen, dass es nur ab Zeichen 5 bis Zeichen 205 anzeigen soll?
Danke schon jetzt
Stephan
Hi Stephan,
dann sieht das ja so aus:
while ($row = mysql_fetch_array($result, MYSQL_NUM))
while ($row[1] = mysql_fetch_array($result, MYSQL_NUM))
while ($row[3] = mysql_fetch_array($result, MYSQL_NUM)) {
nein
while($row=mysql_fetch_array($result, MYSQL_NUM)) {
echo $row[0];
echo $row[1];
}
in $row stehen nach einer while-Abfrage alle Spalten der ersten Zeile, dann alle Spalten der nöchsten Zeile usw.
Jetzt noch 2 Fragen: Wie sind dann die Variablen, die ich zum Antzeigen benutze?
siehe oben
und wie kann ich $row[3] sagen, dass es nur ab Zeichen 5 bis Zeichen 205 anzeigen soll?
substr() sollte das Gewünschte liefern.
findest Du alles toll erklärt auf http://www.php.net
Ich weiss, dass man schlecht nach etwas suchen kann, was man nicht kennt, aber in diesem Falle war die Aufgabenstellung recht einfach.
mysql_fetch_array hattest Du ja schon als FUnktion und kannst danach suchen. Und wenn du Stringoperationen ausführen willst, könte man logischerweise nach string suchen bzw. str.
ciao
romy
OK, jetzt, wenn ich aber mit %{$suche}% und einem Formular (das übergibt) suchen will, macht er alles nach einem Leerzeichen irgendwie weg, woran liegt das?
Stephan
Hi Stephan,
OK, jetzt, wenn ich aber mit %{$suche}% und einem Formular (das übergibt) suchen will, macht er alles nach einem Leerzeichen irgendwie weg, woran liegt das?
tut mir leid, aber den satz verstehe ich nicht.
Was steht in $suche drin? Gib es mal aus bevor Du die Datenbankdinge machst. Besser wäre natürlich Du greifst mit $_POST oder $_GET auf die Suche zu (post bzw. get ermittelt sich aus deiner Formularmethode -> method="get" --> $_GET["suche"])
Bzw. gib mal dein Statement aus, bevor Du es abschickst und versuche es direkt bei deinem datenbankserver abzusetzen um zu schauen ob es überhaupt funktioniert.
Wenn das alles klappt, schau nach was var_dump($row) ergibt.
ciao
romy
Ich bekomme in mein Feld, wo ich es mit der Variable reinlade nur das vor dem Leerzeichen angezeigt :-(
Hi Stephan,
Ich bekomme in mein Feld, wo ich es mit der Variable reinlade nur das vor dem Leerzeichen angezeigt :-(
was ergibt var_dump($row[1]); // oder welche Spalte auch immer
Ist dort noch alles ganz?
Wenn ja, schau bitte mal unter Quelltext anschauen in deinen Browser, ob der Inhalt korrekt drinsteht und vielleicht nur nicht richtig angezeigt wird.
Bzw.
print "\t\t<td><a class=style2 href='$link'>$ue</a></td>\n";
verwende hier korekkte Stringverknüpfung
print "\t\t<td><a class=style2 href='".$link."'>".$row[1]."</a></td>\n";
Wenn nicht, guck bitte in Deiner Datenbank, ob dort alles korrekt steht.
ciao
romy
hi,
Ich bekomme in mein Feld, wo ich es mit der Variable reinlade nur das vor dem Leerzeichen angezeigt :-(
rateversuch(!) zu diesem gestammel:
du möchtest den wert als vorbelegung eines formularfeldes ausgeben, und schreibst ihn dazu ins value-attribut.
leider hast du dabei die anführungszeichen um den wert vergessen, so dass der wert nur bis zum ersten blank geht.
falsch:
<input type="text" value=mein text>
richtig:
<input type="text" value="mein text">
gruss,
wahsaga