php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Grösste Zahl um eins erhöhen


 
BenBay
29-05-2003, 12:25 
 
Hallo,
also ich habe in meiner DB verschiedene Zahlen. Pro Artikel eine Nummer. Wenn ich jetzt einen neuen Artikel schreibe, soll die grösste Zahl die bereits vorhanden ist um eins erhöht werden und dann in die DB geschrieben werden.
Z.B. Ich habe diese Artikel:
Haus [1]
Auto [2]
und wenn ich jetzt einen neuen Artikel schreibe z.B. Boot soll er automatisch die Zahl drei reinschreiben. Weiß jemand wie das geht? Also er soll sich die grösste Zahl die in der Datenbank vorhanden ist suchen und bei einem neuen Artikel um ein erhöhen.

 
mrhappiness
29-05-2003, 12:30 
 
SELECT MAX(zahl)+1 FROM tabelleINSERT INTO tabelle (zahl,bezeichnung) VALUES(die zahl aus dem select oben,'Hemd')aber warum machst du die zahl nicht als primärschlüssel und gibst dem ding noch ein auto_increment, dann musst du dich da gar nich drum kümmern

 
a4u
29-05-2003, 12:33 
 
Zu diesem Zweck besitzt MySQL die Zusatzoption "auto_increment". Bei jedem Eintrag wird die intern verwaltete Zahl um eins erhöht. Beim INSERT Befehl einfach den entsprechenden value leer lassen.

Weitere Informationen zu auto_increment findest du hier:

http://www.mysql.com/doc/en/example-AUTO_INCREMENT.html

Es wäre schön gewesen, hättest du zuerst die Suche in Mitleidenschaft gezogen ;) - denn dann hättest du sicherlich ähnliche Themen gefunden - mit den gleichen Antworten.

Öhm ... Egal - doppelt hält besser

 
BenBay
29-05-2003, 12:33 
 
SELECT MAX(zahl)+1 FROM tabelle

Das könnte passen nur die grösste Zahl soll sich DB selber raussuchen da ich Sie nicht weiß. Oder stehe ich auch dem Schlauch. Das mit dem "auto_increment" usw. das ist mit schon kal das das viel einfacher geht, ich muss aber in diesem Fall darauf verzichten.

 
mrhappiness
29-05-2003, 12:36 
 
mit dem select sucht die db sich ja die größte zahl raus und zählt gleich 1 dazu

aber warum musst du denn auf auto_increment verzichten?

 
BenBay
29-05-2003, 13:07 
 
Oh, Sorry. Bin auf dem Schlauch gestanden. Ich mache es jetzt mit auto_increment. Hatte einen kurzen Blackout.

 
BenBay
29-05-2003, 13:09 
 
Ja, moment mal. Ich benutzte ja die Zahlen für die Anordnung meiner Artikel. Also z.B. Artikel rauf oder runterschiebn. Wenn ich jetzt auto_increment benutze und lösche später einen Artikel dann funktioniert ja die ganze Anordnung nicht mehr, da jetzt ein loch entstanden ist.

 
Wurzel
29-05-2003, 13:15 
 
das loch hast du auch, wenn du manuell einen wert vergibst und dann
artikel löschst.

 
BenBay
29-05-2003, 13:16 
 
Ja, ich weiß. Muss mir das noch mal besser durchspielen und testen, denn so wird das nichts.

 
Wurzel
29-05-2003, 13:28 
 
vielleicht hilft dashier weiter:
http://www.php-resource.de/forum/showthread.php?s=&threadid=20581

 
BenBay
30-05-2003, 15:02 
 
<?
include("../db_connect.php");
$auslesen="select * from unterkategorien where ok_id=5 order by anordnung asc";
$ausgabe=mysql_query($auslesen);
while($artikel=mysql_fetch_array($ausgabe)){
$test[] = $artikel['anordnung'];
}
function ausgeben($x)
{
echo"$x,";
}
$hans = max(array_walk($test, "ausgeben"));
echo $hans
?>

Wieso klappt das max() nicht? er gibt mir das Array aus aber bei max() bringt er mir einen Fehler! Weiß jemand rat?

 
a4u
30-05-2003, 15:05 
 
Bei "max ()" handelt es sich um keine PHP-Funktion, sondern um einen MySQL-Ausdruck - entsprechend muss max, mit einem Komma getrennt, hinter das * der Abfrage.

 
BenBay
30-05-2003, 15:11 
 
So?

<?
include("../db_connect.php");
$auslesen="select * from unterkategorien where ok_id=5 order by anordnung asc";
$ausgabe=mysql_query($auslesen);
while($artikel=mysql_fetch_array($ausgabe)){
$test[] = $artikel['anordnung'];
}
function ausgeben($x)
{
echo"$x,";
}


$auslese="select anordnung ,max(array_walk($test, "ausgeben")) from unterkategorien where ok_id=5";
$ausgab=mysql_query($auslese);
$artike=mysql_fetch_array($ausgab);
echo $artike['anordnung']
?>

Da bekomme ich auch einen Fehler.

 
wahsaga
30-05-2003, 15:21 
 
Original geschrieben von BenBay
So?
nein.


so:
$auslese="SELECT MAX(spaltenname) from unterkategorien where ok_id=5";

 
BenBay
30-05-2003, 15:23 
 
<?
$auslese="SELECT MAX(anordnung) from unterkategorien where ok_id=5";
$ausgab=mysql_query($auslese);
$artike=mysql_fetch_array($ausgab);
echo $artike['anordnung']
?>

Habe es jetzt so, aber jetzt bringt er mir nur eine leere Seite.

 
mrhappiness
30-05-2003, 15:55 
 
du willst den array-index mit namen "anordnung" ausgeben, aber gibt's den?
Nein$auslese="SELECT MAX(anordnung) maximum from unterkategorien where ok_id=5";
$ausgab=mysql_query($auslese);
$artike=mysql_fetch_array($ausgab);
echo $artike['maximum'];sollte gehen

 
BenBay
30-05-2003, 15:57 
 
Danke, jetzt gehts. Problem gelöst.


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:46 Uhr.