id - Lücken bei Zählung in mysql...??
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anhang
auslese
bearbeiten
code
datei
datum
eintrag
folgendes problem
hilfe
jaja
parameter
problem
spalte
suchen
tabelle
tip
update
url
versuch
waldorf
-
Ich habe folgendes Problem: Die lückenhafte Zählung der id's bei mysql wirft meine Skripts über den Haufen.
Ich habe ein Editiersystem programmiert, mit dem ich Blog-
Einträge ändern und in die Tabelle zurückschreiben kann.
Nur leider werden bislang völlig falsche Einträge geändert bzw.
z.T. auch gar nicht. Der Grund liegt in der Zählung der Einträge bei mysql:
Die "Ändern"-Links unter den Blog-Einträgen übergeben an eine bearbeiten.php-Datei GET-Parameter. Der erste Eintrag übergibt
den Parameter 1 usw. (an URL angehängt).
Problem: mysql zählt ganz anders, auch deshalb, da ich mal Einträge gelöscht habe. Mittlerweile zählt mysql so:
1,2,3,20,21,22.
So. Will ich z.B. den 4. Eintrag ändern, wird als Parameter 4 übergeben. Das Skript sucht dann id = 4 in der Tabelle - und findet da natürlich nüscht, weil da ja eine Lücke ist.
Etwas kompliziert - aber vielleicht kann mir jemand einen Tipp geben?? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
ist ja auch ganz klar das mysql so zähl, auto_increment ...der Datensatz mit der id 4 oder so wirste dann ja wohl gelöscht haben...
zur lösung:
kommt drauf an wie dein editier system aussieht...du musst ja iwo die datenbank auslesen wie...
vllt.. einfach die id's auslesen und anhängen...
mom..code kommt...
<?php $id = $_GET['id']; if(empty($_POST['id']) && !empty($id)) { $select = "SELECT spalte FROM tabelle WHERE id = '$id'"; $do = mysql_query($select) OR DIE("ERROR! ".mysql_error()); if(mysql_num_rows($do) <= 0) { echo "Diese ID gibts nicht! <br />"; exit(); } while($row = mysql_fetch_object()) { echo "<form method='post' action='datei.php'>"; echo "<input type='text' value='$row->spalte' name='NameVariable' />"; echo "<input type='hidden' name='id' value='$row->id' />"; echo "<input type='submit' name='submit' value='editieren' />"; echo "</form>"; } } if(!empty($_POST['id'])) { $id = $_POST['id']; $update = "UPDATE table SET spalte = 'wert' WHERE spalte = $id"; mysql_query($update) OR DIE("Error!"); } ?>
Das ist jetzt wahrscheinlich nicht genau das was du suchst, aber vllt. kommst du damit weiter...ansonsten poste mal deinen code, dann kann man den umschreiben^^
Beitrag geändert: 1.10.2008 12:36:47 von myhead -
@myhead: Super, danke für die Hilfe.
Allerdings sieht so das Script meiner bearbeiten.php-Datei bereits
aus. Das Problem liegt glaube ich noch vorher:
Es kommt nämlich "oben" bereits der falsche id-Wert an.
Der Parameter wird von meiner blog-Datei an die bearbeiten-Datei
geschickt, und zwar hiermit:
<a href="bearbeiten.php?id=<?= $id ?>">Edit</a>
Kommt dann der Wert "1" an, wird dieser auch brav abgearbeitet.
Allerdings hat der Beitrag nur im Blog diesen Wert, guck ich
in der Tabelle nach, steht da bspw. "3".
Also alles irgendwie durcheinander...;-( -
jo bidde immer wieder gerne^^
...jaja so ein problem hatte ich auch mal^^
Das Problem liegt daran, dass im Blog der oberste
Beitrag automatisch als id 1 bekommt, der zweitoberste
2 usw.
Der oberste Eintrag hat aber in der Tabelle den Wert 5,
der zweitoberste 22 usw.
Es müsste doch möglich sein, bevor ich den Link mit
URL-Anhang setze, dafür zu sorgen, dass der richtige
id-Wert ausgelesen wird. So was hab ich auch schon versucht mit:
<?while ($ds = mysql_fetch_object($sql)) { $id = $ds->id; // USW. }?>
Wenn ich dann den Link mit Anhang setze, erscheint
aber gar kein Parameter mehr... da steht dann nur
?id=... Hä?
Beitrag geändert: 1.10.2008 13:33:59 von waldorf -
versuchs mal so:
<?php while($ds = mysql_fetch_object($sql)) { $id = $ds->id; echo "<a href='datei.php?ID=$id'>Link</a>"; } ?>
die id ist nur in der while schleife vorhanden
oder mach n array draus:
<?php while($ds = mysql_fetch_object($sql)) { $id[0] = $ds->id; } $id = $id[0]; ?>
...wenn ichs richtig verstanden hab^^ -
versuchs mal so:
@Myhead:
Das Problem hat sich erledigt: Ursache war ein echter
Schussel-Fehler.
Ich hatte vor dem Setzen des Links zwar per SELECT-Anweisung
Tabelleneinträge ausgelesen, ABER NICHT DIE ID!
Daher konnte die richtige ID aus der Tabelle auch nicht
im URL-ANHANG landen:
<?$select = "id, UNIX_TIMESTAMP(datum) as datum, titel, beitrag, rubrik, link, url "; if (empty($id)) $query = "SELECT $select FROM blog ORDER BY datum DESC"; //USW.?>
Noch mal vielen Dank für die Hilfe.
Grüße
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage