PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : jump fehler



viper-rs
06-02-2002, 20:50
Hallo,

ich übergebe einem php-script beim öffnen zwei werte (angid und kndid),

die erste abfrage wird noch ausgeführt, die andere nicht mehr.
da kommt die meldung auf der seite.

Warning: Unable to jump to row 0 on MySQL result index 3 in /usr/local/httpd/htdocs/detail-angebote.php on line 20

was will es????

Danke
Rene

detail-angebote.php #

<?PHP
mysql_pconnect("192.168.0.99","*","*");
mysql_select_db("old-mobile");

$query = "select * from angebote where angid='$angid'";
$query1 = "select * from kunden where kndid='$kndid'";
$result = mysql_query($query);
$result1 = mysql_query($query1);

$num = mysql_numrows($result);
$y = mysql_numrows($result1);

echo "<center>";
echo "<br><table width=60% border=0>";

while($i<$num) {
echo "<tr><td>"; echo
mysql_result($result,$i,"angid"); echo "&nbsp &nbsp<td>";
mysql_result($result1,$y,"kndname");echo ", "; echo "<td> ";
usw...

jwebworks
06-02-2002, 22:18
Original geschrieben von viper-rs
Hallo,

[..]
echo "<center>";
echo "<br><table width=60% border=0>";

while($i<$num) {
echo "<tr><td>"; echo
mysql_result($result,$i,"angid"); echo "&nbsp &nbsp<td>";
mysql_result($result1,$y,"kndname");echo ", "; echo "<td> ";
usw...

deine art und weise, daten aus einem result zu holen passt nicht sooo ganz.

mit mysql_query führst du den query aus und mit mysql_result
bekommst du einen zeiger auf das ergebnis zurück.

eine richtige datenbankabfrage schaut so aus:

--<schnipp>--

$db_conn = mysql_connect ( "server", "user", "password" );
if (!$db_conn) die ("Fehler beim Verbinden mit der Datenbank");

$sql = "SELECT field1, field2, field3 FROM table WHERE id = \"$id\"";

$result = mysql_query ($sql, $db_conn);

while ( $row = mysql_fetch_array ($result, MYSQL_ASSOC)) {
echo $row["field1"];
echo $row["field2"] . "<br>";
echo $row["field3"];
}

mysql_close ($db_conn);

---<schnipp>---

verwende lieber "mysql_fetch_array", der befehl ist schneller und
die zeilen sind leichter zu verwenden. bei mysql_pconnect musst du
die db-verbindung natürlich nicht wieder trennen.

cu, stoph.

viper-rs
06-02-2002, 22:59
Hi,

ja das meine abfrage menthode nicht ok ist, glaube ich, das war auch nur einer von vielen.

der select befehl unten ist besser aber er funzt auch nicht!!!

$query = "select a.*, k.kndid, k.kndname, k.kndvorname from angebote a, kunden k where angid='$angid' and kndid='$kndid'";
$result = mysql_query($query);
.....

echo
mysql_result($result,$i,"angid"); echo " <td>";
mysql_result($result,$i,"kndname"); echo
....

Rene

jwebworks
07-02-2002, 06:30
Original geschrieben von viper-rs
Hi,
$query = "select a.*, k.kndid, k.kndname, k.kndvorname from angebote a, kunden k where angid='$angid' and kndid='$kndid'";
$result = mysql_query($query);


hmm, der befehl schaut bis auf den teil zwischen FROM und WHERE ganz
gut aus. was ist "angebote a, kunden k"? hier ein kurzer auszug
aus der mysql-doc (unter http://www.mysql.com/doc/ )


---<mysqldoc>-------

A SELECT expression may be given an alias using AS. The alias is used as the expression's column name and can be used with ORDER BY or HAVING clauses. For example:
mysql> select concat(last_name,', ',first_name) AS full_name
from mytable ORDER BY full_name;

The FROM table_references clause indicates the tables from which to retrieve rows. If you name more than one table, you are performing a join. For information on join syntax, see section 6.4.1.1 JOIN Syntax.
You can refer to a column as col_name, tbl_name.col_name, or db_name.tbl_name.col_name. You need not specify a tbl_name or db_name.tbl_name prefix for a column reference in a SELECT statement unless the reference would be ambiguous. See section 6.1.2 Database, Table, Index, Column, and Alias Names, for examples of ambiguity that require the more explicit column reference forms.
A table reference may be aliased using tbl_name [AS] alias_name:
mysql> select t1.name, t2.salary from employee AS t1, info AS t2
where t1.name = t2.name;
mysql> select t1.name, t2.salary from employee t1, info t2
where t1.name = t2.name;

---<mysqldoc>-------

cu, stoph.

Sellew
07-02-2002, 08:48
hi,

also ich kenn das auch so das man spalten mit as machen kann aber nicht das man tabellennamen abkürzen kann. imho kann das kein RDBMS. der kann dein from auf garantie nicht auflösen. du müsstest einen mysql fehler zurückkriegen.

mfg

viper-rs
07-02-2002, 21:10
Hi,

Danke, ich habe jetzt das ergebnis was ich wollte. dank euch habe ich noch mal nachgedacht.

select a.*, k.kndid, k.kndname, k.kndvorname from angebote a, kunden k where a.angknd=k.kndid and a.angid='$angid'

Rene