PHP/mySQL - Reihenfolge für Navigation in Datenbank ändern

1000 Danke...

Das hat mir zwar schon echt gut echt gut weitergeholfen, aber ich komme einfach nicht drauf wie deine Datenbank aufgebaut ist. z.b. kann ich mit alllocate nichts anfangen... :(
 
da gibt er folgede meldung aus.

Code:
Fatal error: Unsupported operand types in C:\xampp\htdocs\admin\Kopie von seite_anzeigen.php on line 115

das ist folgende zeile

Code:
$posAlt = mysql_fetch_assoc(mysql_query('SELECT `SortID` FROM `seiten` WHERE `id` = '.$id));
$posNeu = $posAlt-1;

if ($posNeu < $posAlt) {
 
Zuletzt bearbeitet:
Die Datenbank kannst du wiefolgt aufbauen

id | pos | irgendwas | noch irgendwas | nochmal was

pos muss INT sein wie id auch.

das mit der spallte allocate hat folgenden grund
Code:
id | pos | allocate     | text 
1    1      index.php     hallo
2    2      index.php     hallo 2
3    3      index.php     hallo 3
4    1      weiter.php    irgendwas
5    2      weiter.php    nochmal was
6    1      neu.php       neuer text
7    2      neu.php       hallo
Wenn du das ganze ein wenig angepasst hast, kannst du das allocate einfach weglassen.
Wie ich schon erwähnt habe, ist das auf meiner Logik aufgebaut und die ist ziemlich komisch manchmal.
 
da gibt er folgede meldung aus.

Code:
Fatal error: Unsupported operand types in C:\xampp\htdocs\admin\Kopie von seite_anzeigen.php on line 115

das ist folgende zeile

Code:
$posAlt = mysql_fetch_assoc(mysql_query('SELECT `SortID` FROM `seiten` WHERE `id` = '.$id));
$posNeu = $posAlt-1;

if ($posNeu < $posAlt) {
PHP:
WHERE `id` = '.$id));
In dieser zeile schliest du nicht richtig.
 
Hi,

da gibt er folgede meldung aus.

Code:
Fatal error: Unsupported operand types in C:\xampp\htdocs\admin\Kopie von seite_anzeigen.php on line 115

das ist folgende zeile

Code:
$posAlt = mysql_fetch_assoc(mysql_query('SELECT `SortID` FROM `seiten` WHERE `id` = '.$id));
$posNeu = $posAlt-1;

if ($posNeu < $posAlt) {

Du musst Dir die Funktionen, die Du verwendest, im Manual auch mal anschauen. mysql_fetch_assoc gibt ein assoziatives Array mit den Spaltennamen als Keys zurück. Die Position steht also in $posAlt['SortID'].

LG
 
Ist alllocate soetwas wie ein Titel der Seite?
Ich verstehe dein Problem nicht mehr ganz, du hast 2 varianten auf dem Teller Serviert bekommen, und beide passen nicht?
Kann ich nicht ganz nachvollziehen.

allocate dient dazu um mir den gewünscheten $inhalt auszugeben:
bsp.
PHP:
$sql = "SELECT * FROM `inhalt` 
        WHERE `allocate` = '".mysql_real_escape_string($_GET['allocate']."'
        ORDER BY `pos` ASC
       ";
Also grob gesagt hat allocate garnichts mit dem verändern der position zu tun, relevant ist nur die Spalte pos.
 
Hallo...

auch wenn das Thema schon lange her ist: Ich bräuchte da nochma Eure Hilfe:

Meine Datenbank:
Code:
| id | pos | .....
| 1 |  2   |
| 2 |  1   |
usw...

nun habe ich den Code ein wenig verändert:

PHP:
if(isset($_GET['pos'])){
  $sqlmax = "SELECT * FROM cms_Navigation
             WHERE id = '".$_GET['id']."'
             ORDER BY pos DESC
             LIMIT 1
            ";
  $result = mysql_query($sqlmax);
  $max = mysql_fetch_array($result);
  $max = $max['pos'];
  
  if($_GET['action'] == 'up'){
    if($_GET['pos'] > 1){
      $new = $_GET['pos']-1;
echo $new;
    }
  }
  
  if($_GET['action'] == 'down'){
    if($_GET['pos'] < $max){
      $new = $_GET['pos']+1;
echo $new;
    }
  }
  
  if($new){
    $sql001 = "UPDATE cms_Navigation
               SET pos = '".mysql_real_escape_string('0')."'
               WHERE pos = '".mysql_real_escape_string($new)."'
               AND id = '".$_GET['id']."'
               LIMIT 1
              ";
    $result001 = mysql_query($sql001) or die (mysql_error());
    $sql002 = "UPDATE cms_Navigation
               SET pos = '".mysql_real_escape_string($new)."'
               WHERE pos = '".mysql_real_escape_string($_GET['pos'])."'
               AND id = '".$_GET['id']."'
               LIMIT 1
              ";
    $result002 = mysql_query($sql002) or die (mysql_error());
    $sql003 = "UPDATE cms_Navigation
               SET pos = '".mysql_real_escape_string($_GET['pos'])."'
               WHERE pos = '".mysql_real_escape_string('0')."'
               AND id = '".$_GET['id']."'
               LIMIT 1
              ";
    $result003 = mysql_query($sql003) or die (mysql_error());
  }
}

und mein Formular:

PHP:
							echo '<td><a href="'.$_SERVER['PHP_SELF'].'?action=up&pos='.$navi->pos.'&id='.$navi->id.'"><img src="images/up.png"></a>
                                                            <a href="'.$_SERVER['PHP_SELF'].'?action=down&pos='.$navi->pos.'&id='.$navi->id.'"><img src="images/down.png">
                                                        </a></td>';


Also... Wenn ich nun auf "Down" klicke, dann verändert sich nichts, genauso wie bei "Up"! Ich frage mich nun, was mache ich falsch****
 

Neue Beiträge

Zurück