Datensätze auslesen, überprüfen und ändern

  • Hiho :)

    Hoffe einer von euch kann mir weiter helfen.

    Ein Photoalbum php script hat in meine datenbank die ganzen alben eingetragen.
    In der Tabelle gibt es eine Spalte die nennt sich album_id

    Ich möchte jede album ID auslesen, überprüfen ob sie 3 stellig ist und falls nicht soll er vorne eine 0 anhängen. dann nochmals überprüfen ob 3 stellig. falls nein wieder eine 0 ansonsten die nächste ID nehmen und das selbe tun.

    Ist das in einem php Script zu ermöglichen?


    Oder kann mir jemand sagen wie ich eine gute anordnung hinbekommen wenn die ID's nach der er ordnen soll mal 1stellig, mal 2stellig und mal 3stellig sind?
    im moment ordnet er alles von 1-10, dann 110, 111 und so weiter und macht dann erst mit den 20er weiter.
    Mache es zur zeit über den Befehl ORDER BY album_id aber das scheint mir nicht das wahre zu sein. Welche alternativen gibt es?

    MfG und schonmal vielen lieben dank :)
    der Monarch

  • hallo.
    ja das ist möglich. probiers mal mit diesem code:

    ist halt nur pseudocode - habs nicht getestet. sollte aber zu schaffen sein mit meinem ansatz.
    man könnte es natürlich mit functions() sauberer machen aber das reicht ja. wenn es nach dem ersten
    durchgang immer noch id's gibt die nicht 3stellig sind lässt du das script einfach nochmal laufen.

    achja - nächstes mal vorher überlegen wie du es mit den id's machen willst :)

    so long

  • vielen dank für die schnelle antwort :)

    Hab das Photalbum script nicht ausgewählt. die site ist von einem kumpel. Er benutz die Photogallery von php-fusion. diese ist offensichtlich nicht für mehr als 100 alben geeignet ;)

  • so sieht dat script zur zeit aus. zur datenbank connectet er.
    danach kommt jedoch ein:
    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in /www/htdocs/hhstamm/php-files/test.php on line 18

    betrifft also diese zeile:
    while ($row = mysql_fetch_row($getAlbumId)) {

    laut google ist das leider ein sehr allgemeiner fehler und kann soziemlich alles bedeuten...

    hab auch schon versucht den tabellen prefix wegzulassen weil ich dachte er findet die tabelle nicht, aber das ist leider auch nicht der fall :(

    wo liegt bei denkfehler?

  • bei solchen fehler stimmt meist was am sql nicht.

    Code
    $selAlbumId = "SELECT `album_id` FROM 'fusion_photo_albums'";

    ist falsch - fusion_photo_albums ist ja die tabelle und nicht ein wert - wird also nicht mit '' eingebaut sondern ohne hochkomma's oder mit ``

    also so:

    Code
    $selAlbumId = "SELECT `album_id` FROM `fusion_photo_albums`";

    viel spass

  • hehe manchmal sind es wirklich die kleinen dinge ^^
    da wär ich glaube, nie drauf gekommen :D

    aber nun weiss er nichts mit $row['album_id'] anzufangen
    Undefined index: album_id in /www/htdocs/hhstamm/php-files/test.php on line 20

    betrifft diese 3 zeilen:

    Zitat

    if (strlen($row['album_id']) != 3) {
    $newId = "0".$row['album_id'];
    $updAlbumId = "UPDATE 'fusion_photo_albums' SET `album_id` = '$newId' WHERE `album_id` = ".$row['album_id']."";

    habe in der db nachgeschaut. tabelle heisst fusion_photo_albums und die spalte heisst album_id. Das stimmt also.
    Verstehe daher nicht warum er album_id nicht kennt... einträge sind vorhanden

    Da vorher das problem einfach nur bei falschen anführungszeichen lag hab ich auch hier alles durchprobiert. von ' über ` und ´ bis zu ".
    bringt entweder ganz andere fehler oder eben wieder die selben.

    wenn ich allerdings das .$row[] entfernen arbeitet er das script durch ohne einen fehler auszugeben. allerdings ist in der db kein eintrag geändert worden. :(

    wie man vlt. merkt hab ich noch nicht so viel ahnung von php, beschäftige mich erst seit ein paar wochen damit ^^

    aber so wie ich das verstehe wird doch in zeile
    while ($row = mysql_fetch_row($getAlbumId)) {
    festgelegt das die variable $row das umgedrehte ergebnis von $getAlbumId ist.
    dachte mir deshalb das ein $row['album_id'] dann ja doppelt gemoppelt ist, da row ja schon mit der album_id definiert wurde. oder versteht ich da was falsche :)

    MfG und vielen dank für deine Geduld mit mir :)
    der Monarch

  • probiers mal so:

    Code
    while ($row = mysql_fetch_row($getAlbumId)) {
      if (str_len($row['album_id']) != 3) {
        echo $row['album_id'];
      } 
    }

    wenn er keine zahl ausgibt dann poste mal deinen aktuellen code.

    Zitat

    Da vorher das problem einfach nur bei falschen anführungszeichen lag hab ich auch hier alles durchprobiert. von ' über ` und ´ bis zu ".
    bringt entweder ganz andere fehler oder eben wieder die selben.

    nein - das gäbe keinen solchen fehler. tabellennamen und spalten werden ohne oder mit `` geschrieben, und werte mit ' ' - zahlen brauchen gar nichts.

    Zitat

    wenn ich allerdings das .$row[] entfernen arbeitet er das script durch ohne einen fehler auszugeben. allerdings ist in der db kein eintrag geändert worden.

    logisch - dann weiss er ja auch nicht was er updaten soll.

    Zitat

    aber so wie ich das verstehe wird doch in zeile
    while ($row = mysql_fetch_row($getAlbumId)) {
    festgelegt das die variable $row das umgedrehte ergebnis von $getAlbumId ist.
    dachte mir deshalb das ein $row['album_id'] dann ja doppelt gemoppelt ist, da row ja schon mit der album_id definiert wurde. oder versteht ich da was falsche

    nein nein - so liest man einfach eine mysql datenbank aus. die zeile bedeutet einfach dass im array $row alle werte der aktuellen reihe in der db kommen.


    so long

  • Notice: Undefined index: album_id in /www/htdocs/hhstamm/php-files/test.php on line 19

    Notice: Undefined index: album_id in /www/htdocs/hhstamm/php-files/test.php on line 20

    Notice: Undefined index: album_id in /www/htdocs/hhstamm/php-files/test.php on line 19

    Notice: Undefined index: album_id in /www/htdocs/hhstamm/php-files/test.php on line 20

    Notice: Undefined index: album_id in /www/htdocs/hhstamm/php-files/test.php on line 19

    Notice: Undefined index: album_id in /www/htdocs/hhstamm/php-files/test.php on line 20

    mir ist aufgefallen das die anzahl der einträge in der db gleich mit der anzahl der fehlermeldungen ist. also da ist 3 mal fehlermeldung für zeile 19 und 3 mal für zeile 20. und es sind 3 einträge in der db (die sind 1,11 und 111)

    hab mal n bildausschnitt der db mit angehangen. Natürlich brauch ich das script nicht nur für die 3 zahlen, ist nur zum probieren :)

    achja bevor du zählen musst: Zeile 19 und 20 sind

    Zitat

    if (strlen($row['album_id']) != 3) {
    echo $row['album_id'];

    das str_len musste ich durch strlen ersetzen, da sonst ein fehler wegen unbekanntem befehl kommt. Wenn doch mal alle probleme so einfach wären :)

  • so sollte es stimmen:

  • habs probiert, läuft ohne fehler durch, jedoch tut sich in der db nichts.
    habs dann nochmal probiert mit echo ausgabe aber er zeigt mir immer die 111 an, auch wenn ich sie aus der db lösche...

    hatte mir das ganze vom prinzip viel leichter vorgestellt ^^