Webstatt.org - Community seit 2006 - 2012 (2024?)

Auto_increment

Avatar user-289
22.02.2007 22:58

Hallo,
ich habe eine Tabelle von einem Gästebuch, die die Spalte "ID" enthält. Dieser ID ist "AUTO_INCREMENT" zugewiesen. Das Problem ist, dass beim Löschen eines Datensatzes die AUTO_INCREMENT-Zahl nicht gelöscht wird, und somit quasi eine Zahl übersprungen wird, wenn man den nächsten Datensatz einfügt.
Wie kann ich die ID manuell zurücksetzen, sodass keine Ziffer "ausgelassen" wird?

Was wäre eine Möglichkeit um diesen Effekt zu umgehen und die Beiträge eines GBs beispielsweise anders zu zählen? Jedesmal wenn ein Beitrag erstellt wird die höchste ID ausgeben, 1 dazu addieren und sie wieder speichern?

Interesse? meine Referenzen. hier!!!
Avatar user-271
22.02.2007 23:01

auto_increment bedeutet auch, dass sie unique ist, dass kann man meines wissens nicht umgehen....warum willst du das umgehene? sinn?

ein unsigned integer geht bis: 0 - 4.294.967.295
ich glaube das sollte reichen Fettes Grinsen

und wenn nicht, dann: BigInt: 0 - 18.446.744.073.709.551.615

und wenn das nicht reichen sollte: double: 2.2250738585072014E-308 to 1.7976931348623157E+308

ich glaube das sollte reichen frech

Quelle: http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html


zählen würde ich sie erst beim ausgeben zwinkern d.h eine for-schleife oder was ähnliches zu machen Fettes Grinsen und darin zu zählen, so wird das meistens gemacht

#!/bin/bash
traurig){ neutral:& };:
Avatar user-289
22.02.2007 23:09

Ich versteh den Sinn von deinem Post nicht =) Fettes Grinsen

Das sind doch Zahlentypen oder nicht?

Sinn = Wenn ich Beispielsweise 7 Posts in meinem GB habe und der 7. ist Spam so lösch ich ihn. Jetzt kommt ein user und macht einen neuen Eintrag und siehe da - die Einträge sind so nummeriert:

1, 2, 3, 4, 5, 6, 8


Daher meine Frage, wie ich die Nummerierung von einem GB zB. so programmiere, dass diese eine Zahl beim Löschen eines Posts nicht "verloren geht"


Fettes Grinsen Fettes Grinsen Fettes Grinsen

Interesse? meine Referenzen. hier!!!
Avatar user-271
22.02.2007 23:33

Original von user-271
[...]zählen würde ich sie erst beim ausgeben zwinkern d.h eine for-schleife oder was ähnliches zu machen Fettes Grinsen und darin zu zählen, so wird das meistens gemacht

dann bist du unabhängig von der ID Fettes Grinsen und so ein grosser aufwand eine variable hochzuzählen ist es auch nicht... zwinkern
ich denke der aufwand ist größer, wenn du alle ids umschreiben musst Fettes Grinsen jedesmal, wenn 1 Post gelöscht wird.....

also benutz die id um auf sie zuzugreifen, aber die nummerierung am besten vor der ausgabe, wenn du sie eh durchgehen musst Fettes Grinsen

edit: ich habs dann später auch user-128rkt, was du meinst zwinkern aber dachte du willst Zahlen sparen, dadurch, dass du die ID zurücksetzt Fettes Grinsen und ich wollte dir eigentlich nur zeigen, dass du das nicht brauchst....nicht in der heutigen Zeit

#!/bin/bash
traurig){ neutral:& };:
user-150
23.02.2007 08:16

Original von user-289
Daher meine Frage, wie ich die Nummerierung von einem GB zB. so programmiere, dass diese eine Zahl beim Löschen eines Posts nicht "verloren geht"


Bin mir nicht sicher ob das Problem schon gelöst wurde, ich habe es auf jedenfall so gelöst:

$i = 0;
while(..){
$i++;
echo "Eintrag NR. $i";
....
}


also nicht die ID ausgeben, sondern mit ner extra Zählvariablen arbeiten.

Mehr schlaue Sprüche gibt es auf: anotherstyle.de Psicologia
Avatar user-289
23.02.2007 12:53

Original von user-148tian
Original von user-289
Daher meine Frage, wie ich die Nummerierung von einem GB zB. so programmiere, dass diese eine Zahl beim Löschen eines Posts nicht "verloren geht"


Bin mir nicht sicher ob das Problem schon gelöst wurde, ich habe es auf jedenfall so gelöst:

$i = 0;
while(..){
$i++;
echo "Eintrag NR. $i";
....
}


also nicht die ID ausgeben, sondern mit ner extra Zählvariablen arbeiten.

Ja, genau so hat user-271 es auch vorgeschlagen.

@nuit, sorry, ahb den letzen teil von deinem ersten Beitrag überlesen :O

Interesse? meine Referenzen. hier!!!
Avatar user-289
23.02.2007 16:24

Mhh... das ist dann ja falschrum...

Frage am Rande: Wann macht man bei Ausgaben in Form von HTML Codes in PHP ein neues echo"" wie hier:

    echo "            <div id=\"asdadf\">\n";
echo " Blablubb";
echo " </div>\n";

Für jedes Tag bzw. jeden Inhalt für ein Tag ein neue echo?

Interesse? meine Referenzen. hier!!!
user-303
23.02.2007 16:47

das machen nur anfänger Fettes Grinsen

Avatar user-289
23.02.2007 16:49

Mh hab mal von irgendjemandem hier gehört man macht das so. Fettes Grinsen

Wie denn dann? einfach

echo " <html>
<div>
</div>undsoweiter";

Interesse? meine Referenzen. hier!!!
Avatar user-162
23.02.2007 16:50

ja, technisch gesehen ist's egal... aber es geht einfacher wenn du's so machst

Perfection is not when there’s nothing to add, but when there’s nothing to take away swisscheek.com/magazine
user-303
23.02.2007 16:58

nur dass der parser jedes mal ein neues echo und eine neue zeichenkette bearbeiten muss.
nunja, mit template system hat man im endeffekt eh nur noch ein echo, ganz am ende

Avatar user-271
23.02.2007 17:28

frech
echo "<html>\n<div>\n</div>undsoweiter"; 

und für einen tab:
\t

#!/bin/bash
traurig){ neutral:& };:
Avatar user-289
23.02.2007 17:46

alles in eine zeile?

Interesse? meine Referenzen. hier!!!
Avatar user-168
23.02.2007 17:47

Das funzt aber nur mit echo "..."; und nicht mit echo '...'; !

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-209
24.02.2007 15:44

Alles in einer Zeile sieht find ich pers. nicht schön aus.

Ich mache es im Regelfall so:

<?php
//Schleifendurchlauf und Ausgabe
while($db->next())
{
?>
<div id="gbeintrag">
<?=$db->value("Name"zwinkern?><br/>
<?=$db->value("Eintrag"zwinkern?>
</div>
<?php
}
?>


Hat den Vorteil, dass Syntaxhighlighting funktioniert.
Alternativ, wenn man noch XML verwenden möchte muss der Spass so aussehen:

<?php
//Schleifendurchlauf und Ausgabe
while($db->next())
{
?>
<div id="gbeintrag">
<?php echo $db->value("Name"zwinkern."<br/>".$db->value("Eintrag"zwinkern;?>
</div>
<?php
}
?>


Ob man jetzt Variante 1 oder 2 nimmt ist Geschmackssache, ich nehme meistens die Erste. So sit der Code leicht lesbar.

Jo

PS: Bei diesem kurzen Ausgabecode ist es jedoch fraglich ob man das auf meine Art machen muss, aber spätestens wenn man ganze Formularfelder ausgeben muss ist der Vorteil doch sehr merkbar.

Avatar user-271
24.02.2007 17:17

<?=$db->value("Eintrag"zwinkern?>

unsauberer stil Fettes Grinsen

schreib besser:
<?php echo $db->value("Eintrag"zwinkern; ?>

bzw:
<?php print $db->value("Eintrag"zwinkern; ?>


nachdem die kurzschreibweise wahrscheinlich bald aussterben wird

#!/bin/bash
traurig){ neutral:& };:
Avatar user-168
24.02.2007 17:28

Wenn du auf sowas achtest, solltest du aber auch nur echo verwenden. Denn print stirbt auch aus. Fettes Grinsen

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-303
24.02.2007 17:31

echo() besitzt zusätzlich eine Syntax-Kurzform, Sie können also ein öffnendes PHP-Tag von einem Gleichheitszeichen gefolgt notieren.
Diese Syntax-Kurzform funktioniert nur, wenn short_open_tag in der php.ini eingeschaltet ist.


=> absolut unbrauchbar!

Avatar user-271
24.02.2007 20:08

Original von user-168
Wenn du auf sowas achtest, solltest du aber auch nur echo verwenden. Denn print stirbt auch aus. Fettes Grinsen

mit print ist auch sowas lustiges möglich:
$var = print "hallo";

wobei $var nun 1 ist zwinkern

insofern kann ich mir kaum vorstellen, dass print aussterben soll Fettes Grinsen print ist nämlich != echo
siehe: php.net/print
bzw: http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40

#!/bin/bash
traurig){ neutral:& };:
user-209
26.02.2007 12:11

@snake & user-271: Deshalb habe ich auch direkt die 2te Variante eingefügt, grade weil es so viele Gegner der Kurzschreibweise gibt und diese in einigen Fällen unbrauchbar ist zwinkern


Jo