Kleine PHP-Frage

cschirmbeck

cschirmbeck

Aktives Mitglied
Thread Starter
Dabei seit
07.02.2004
Beiträge
978
Reaktionspunkte
0
Ich beschäftige mich seit einiger Zeit mit PHP und habe PHP schon in verschiedenen Projekten eingebracht (siehe www.juergen-roth.com , www.designforthesoul.com , www.focus-film.de etc.)
Nun habe ich im Projekt www.prodomo-immobilien.com eine ID-Suche für Immobilien erstellt, d.h. über eine ID (z.B. 30173478) gelangt man direkt zur in der Verwaltungsdatenbank gespeicherten Immobilie.
Das Feld ist einzusehen z.B. unter http://www.prodomo-immobilien.com/home.html oben rechts.

Das verwunderliche ist nur: manche IDs führen zu einem Ergebnis, andere nicht. So führt z.B. 30173478 zu keinem Ergebnis, während 30022832 sehr wohl ein Ergebnis erzielt. Beide Immobilien sind, zusammen mit ca. 50 anderen, in einer Datenbank vorhanden (ich habe beide Zahlen direkt aus der DB kopiert, es kann also an keinem Tippfehler liegen). Die Zahlen sind auf jeden Fall einzigartig, d.h. es exsitieren keine doppelten Einträge.
Wenn ich nach der internen ID (zweistellige Zahl) suche und das Skript entsprechend ändere, erscheint übrigens niemals ein Ergebnis.

Hat jemand eine Ahnung, woran das liegen kann? Sind sich manche IDs zu ähnlich (kann ich mir bei der Länge nicht vorstellen) und werden daher nicht angezeigt?

Danke für eure Tipps,

Cyril
 
könntest du die genaue SQL Abfrage dafür posten? Das wäre hilfreich
 
Original geschrieben von Thommy
könntest du die genaue SQL Abfrage dafür posten? Das wäre hilfreich
 


$abfrage = "SELECT * FROM `prodomo-im` WHERE ISCode LIKE $index";

$index ist dabei natürlich die Suche (=ID). Ich habe auch schon "=" an Stelle von LIKE verwendet, aber das ergab keinen Unterschied.
 
Versuch mal folgendes:
PHP:
 $abfrage = "SELECT * FROM prodomo-im WHERE ISCode = '$index'";
 
falls das nicht klappt, kannst ja mal ein echo $index vor dieser abfrage ausgeben, evtl läuft bei der übergabe irgendwas falsch!
 
Original geschrieben von [TB]Lucky
Versuch mal folgendes:
PHP:
 $abfrage = "SELECT * FROM prodomo-im WHERE ISCode = '$index'";
 

Also das ergibt die Fehlermeldung:

Parse error: parse error in /homepages/0/d37677127/htdocs/prodomo/idsearch.php on line 212

Also scheint etwas nicht zu stimmen... vielleicht die ' ?
 
Original geschrieben von Thommy
falls das nicht klappt, kannst ja mal ein echo $index vor dieser abfrage ausgeben, evtl läuft bei der übergabe irgendwas falsch!
 

Habe ich schon probiert, da liegt der Fehler leider nicht! Gibt es irgendeine Abfragemöglichkeit, die evtl. Ähnlichkeiten oder sonstiges "ausschliesst"?
 
Also die '' mache ich immer. Ich habe damit keine Probleme. Komisch.

Ich habe meistens das Problem, das Fehler garnicht in der angezeigten Zeile sind, sondern manchmal eine oder mehr drüber. Ein vergessenes Semikolon oder so....

Björn
 
Original geschrieben von cschirmbeck
 

Habe ich schon probiert, da liegt der Fehler leider nicht! Gibt es irgendeine Abfragemöglichkeit, die evtl. Ähnlichkeiten oder sonstiges "ausschliesst"?
 
ja, das wäre die sql abfrage, die vorhin gepostet wurde. durch das WHERE spalte='wert' wird auch nur der exakte wert ausgelesen. Falls dieser nicht existiert gibts auch kein Ergebnis.
Evtl postest du mal den ganzen Source der Datei (ohne Zugangsinfos oder sonstige Sicherheitssachen :)), da könnten wir vielleicht den komischen parse error rausfinden.
 
Original geschrieben von [TB]Lucky
Also die '' mache ich immer. Ich habe damit keine Probleme. Komisch

Björn
 

Es liegt wohl daran, dass Du keine `` bei dem Tabellennamen gesetzt hast. Ich habe es ergänzt, jetzt geht es auch so - aber nicht besser oder schlechter als vorher...

:confused:
 
Original geschrieben von cschirmbeck
 

Es liegt wohl daran, dass Du keine `` bei dem Tabellennamen gesetzt hast. Ich habe es ergänzt, jetzt geht es auch so - aber nicht besser oder schlechter als vorher...

:confused:
 

Ist aber komisch, denn die mache ich bei meinen Scripten nie, und da gehts auch.
Kann es vielleicht sein, das du vielleicht ein vergessenes Zeichen oder '' vergessen hast du schliessen? Einfach eine oder mehr Zeilen drüber?

Björn
 
Original geschrieben von [TB]Lucky
 

Ist aber komisch, denn die mache ich bei meinen Scripten nie, und da gehts auch.
Kann es vielleicht sein, das du vielleicht ein vergessenes Zeichen oder '' vergessen hast du schliessen? Einfach eine oder mehr Zeilen drüber?

Björn
 

Unwahrscheinlich, denn warum funktioniert die Abfrage dann bei manchen? Wenn die Abfrage nie funktionieren würde, wäre die Sache ja einfacher. Es muss etwas mit der Tabellenstruktur zu tun haben...

@Thommy: kann ich machen - aber: könnte es daran liegen, dass nach der ID in der Datenbank z.B. ein Leerzeichen gesetzt wurde? (Die DB wird vom Kunden verwaltet, ich weiss nicht, ob der das so genau nimmt...)?
 
Original geschrieben von cschirmbeck
 

@Thommy: kann ich machen - aber: könnte es daran liegen, dass nach der ID in der Datenbank z.B. ein Leerzeichen gesetzt wurde? (Die DB wird vom Kunden verwaltet, ich weiss nicht, ob der das so genau nimmt...)?
 
das wäre eine möglichkeit, ja. aber afaik dürfte das nicht möglich sein bei einem ID Feld mit Datentyp INT,TINYINT,..
 
bei einem Like musst du natuerlich auch noch ein WildCard Zeichen mitgeben, bei mysql ist das glaube ich %.

probier mal

PHP:
$abfrage = "SELECT * FROM prodomo-im WHERE ISCode like '%$index%';

ist das feld ISCode als Zahlen oder Textfeld definiert?? Nur bei Textfeldern braucht man ein >'<
 
Original geschrieben von Thommy
&nbsp;
das wäre eine möglichkeit, ja. aber afaik dürfte das nicht möglich sein bei einem ID Feld mit Datentyp INT,TINYINT,..
&nbsp;

Habe gerade geschaut, daran liegt es aber nicht... :(
Noch ein Kandidat, bei dem es nicht funktioniert: 30173745
Ich versuche gerade Gemeinsamkeiten derjenigen Einträge zu finden, die funktionieren, und derjenigen, die nicht funktionieren...
 
Original geschrieben von TheFallenAngel
bei einem Like musst du natuerlich auch noch ein WildCard Zeichen mitgeben, bei mysql ist das glaube %.

probier mal

PHP:
$abfrage = "SELECT * FROM prodomo-im WHERE ISCode like '%$index%';

ist das feld ISCode als Zahlen oder Textfeld definiert?? Nur bei Textfeldern braucht man ein >'<
&nbsp;
das möchte er doch grade nicht ... dann würde ein $index von z.b. "123", auch die resulate von "4412344" oder "12345" hervorbringen.
 
Original geschrieben von TheFallenAngel
bei einem Like musst du natuerlich auch noch ein WildCard Zeichen mitgeben, bei mysql ist das glaube ich %.

probier mal

PHP:
$abfrage = "SELECT * FROM prodomo-im WHERE ISCode like '%$index%';

ist das feld ISCode als Zahlen oder Textfeld definiert?? Nur bei Textfeldern braucht man ein >'<
&nbsp;

ISCode ist als longtext definiert, also Text.
 
das möchte er doch grade nicht ... dann würde ein $index von z.b. "123", auch die resulate von "4412344" oder "12345" hervorbringen.

dann ists aber keine richtige suche ;)


wenn das feld als text definiert ist brauchst du zum einen die >'< zum anderen musst du dich wie schon gesagt mit z.B. leerzeichen rumaergern
 
Original geschrieben von TheFallenAngel
dann ists aber keine richtige suche ;)


wenn das feld als text definiert ist brauchst du zum einen die >'< zum anderen musst du dich wie schon gesagt mit z.B. leerzeichen rumaergern
&nbsp;

Soll ich das Feld in ein INT umwandeln?
 
Original geschrieben von TheFallenAngel
dann ists aber keine richtige suche ;)
&nbsp;
:confused:
er will das bei ID 123 auch nur der tupel mit der ID 123 auftaucht, nicht mit 1234 oder sonstwas wo "123" drin vorkommt.

ich würde ein id feld niemals als text definieren ... (außer bei IDs mit alphanummerischen Werten), daher würde ich empfehlen das du die Spalte in INT änderst...
 
Zurück
Oben Unten