• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

phpmyadmin - Grundeinstellungen ändern...

Metallica

Lounge-Member
Hi Leute!

Erstmal Prosit im 2002ten Jahr unserer Zeitrechnung.
Hicks....
so, und jetzt zu meinem Problem:
für meine Datenbankverwaltung verwende ich PhpmyAdmin.
Was muss ich tun, damit er mir meine DB immer nach dem Datum (das aktuelleste sollte immer am Anfang stehen)
sortiert wenn ich phpmyadmin über die index.php3 starte??

Weiters wäre es super praktisch wenn er mir immer die ersten 100 Datensätze beginnend bei 1 anzeigen könnte.

Das muss man sicher in irgend'ne php-datei von phpmyadmin ergänzen bzw. ändern. Aber wo??
Hab echt alles durchgeschaut und nix gefunden.
Wenn da mal ein Befehl "verdächtig" ausgesehen hat, dann ist der von vorn bis hinten mit [strings] überlagert.

Bitte um Rat
 
also Punkt 1 "Nach Datum sortieren":
ist schwierig zu lösen, da Deine Tabellen ja immer anders aussehen und die Feldnamen möglicherweise anders heißen.... wie mySQL intern die Datensätze speichert, und ob da ein internes Datum dabei ist weiß ich nicht, fest steht aber, das mySQL die Datensätze nach eigenen Richtlinien speichert, die beim bloßen Auslesen ein ziemlich es Durcheinander erzeugen können.... (irgendwann müssen gelöschte Datensätze eben mal wieder überschrieben werden!)

2. 100 Datensätze auf einmal anzeigen:
in der Datei config.inc.php stehen mehrere Werte, die phpmyadmin als Default nimmt:
PHP:
$cfgMaxRows = 30;
sorgt dabei für die Begrenzung der Seitengröße auf 30 Datensätze....

ob Du Dein Sortierproblem mit dem Parameter
PHP:
$cfgOrder = "ASC";
lösen kannst weiß ich nicht.... am besten mal ausprobieren.....


Grundsätzlich haben solche Softwarepakete meist eine Konfigurationsdatei mit dem Namen config.<irgendwas> (je nach Programmiersprache) . Dies ist die erste Datei, die man sich anguckt, wenn man an der Konfiguration was ändern möchte.... alles was da nicht drin steht, hat der Programmierer bewußt oder unbewußt mit festen Defaults vorgesehen.
 
werd das morgen früh gleich checken und bescheid geben.

wegen dem sortieren:
es befinden sich bereits über 100 einträge in der SQL_DB.
Ich hab da auch ein Feld DATEhr in das ich bei jedem neuen Datensatz über php das aktuelle Datum reinschreibe.

wenn ich die index.php3 von phpmyadmin aufrufe, holt er sich die DS aus der DB. und da dachte ich halt, dass er mir's gleich sortieren kann.
 
nunja in der Tabelle, die für Dich gerade interessant ist heißt das Feld DATEhr in der zweiten Tabelle datum und in der dritten DateStart und DateEnd nach welchem Feld soll er also sortieren, wenn es sich ständig ändert....
aber vielleicht kannst Du in Deinem speziellen Fall die cfgOrder auf DATEhr DESC setzen dann sollte das doch passen?!?
 
Hi Albu,

hab die $cfgMaxRows = 30; jetzt auf 100 erhöht.
hat einwandfrei gefuntzt.

zum Datum:
Ich speichere in der DB über php immer nur das aktuelle Datum im Feld DATEhr.
sonst nix. kein DateStart, DateEnd etc.
ich hab auch nur eine Tabelle.

ich will es lediglich so haben, dass das aktuelleste Datum immer am Anfang der Tabelle steht.

in der config.inc steht zu deinem Vorschlag folgendes:
$cfgOrder = 'ASC'; // default for 'ORDER BY' clause (valid
// values are 'ASC', 'DESC' or 'SMART' -ie
// descending order for fields of type
// TIME, DATE, DATETIME & TIMESTAMP,
// ascending order else-)



Anmerkung:
ich lasse das datum allerdings nicht von mysql erzeugen, sondern schreibs über php in die DB (Feld DATEhr - Typ: varchar(10))
Und zwar so:
$date = date("d.m.Y");
$sqlbefehl = mysql_query("INSERT INTO headrotation SET DATEhr = '$date'");
$blub = mysql_query($sqlbefehl);


Im Kommentar meinen die doch, dass das mit ASC, DESC oder SMART nur geht wenn das Datum direkt von mysql erzeugt wurde.
 
muß mir wohl mal ne neuere Version ziehen... bei mir standen keine Kommentare...

naja..... und fürs Sortieren kannst Du natürlich eine spezielle Version von phpMyAdmin "hacken", aber keine Ahnung wo und wie, Aufwand und Nutzen einer solchen Aktion mußt Du selbst abschätzen..
 
hab's grad so probiert.
funtzt aber nicht.

$cfgOrder = 'DATEhr DESC';

ich verwende version 2.2.1
da gibt's ca. 15 verschiedene ziemlich lange php-files.
die arbeiten (logischerweise) fast nur mit strings.
ich hab echt keine Ahnung nach was ich da suchen soll bzw. wo ich so 'ne funktion reinschreiben soll.
 
also mein Tipp wäre die Datei "tbl_select.php"... dort wird der Filter Dialog angezeigt und der SQL String zusammengebaut, bevor der Browser auf sql.php umgeleitet wird....

speziell im unteren Bereich würde ich mal ein bißchen debuggen und rumspielen... irgendwie müßte es möglich sein Deinen Sortierstring hinten anzuhängen....
 
Ansonsten pribiere doch einfach, den SQL String ($sql_query) innerhalb des Files sql.php grundsätzlich entsprechend zu erweitern:

Dort steht z.B. ab Zeile 148:
PHP:
/**
 * Executes the query and displays results
 */
else {
    if (!isset($sql_query)) {
        $sql_query = '';
    } else if (get_magic_quotes_gpc()) {
        $sql_query = stripslashes($sql_query);
    }
....

Dort kann man vielleicht folgendermassen ansetzen:

$sql_query mit dem gegebenen Limit splitten, sodas aus $sql_query ein Array mit zwei Werten wird. Dieses musst du dann mit deinem Order... ergänzen und das Limit hinten wieder anfügen. Klingt eigentlich ganz einfah, wie sich das allerdings auswirkt kann ich Dir auch nicht sagen :rolleyes:
 
Albu schrieb:
also mein Tipp wäre die Datei "tbl_select.php"... dort wird der Filter Dialog angezeigt und der SQL String zusammengebaut, bevor der Browser auf sql.php umgeleitet wird....

speziell im unteren Bereich würde ich mal ein bißchen debuggen und rumspielen... irgendwie müßte es möglich sein Deinen Sortierstring hinten anzuhängen....

ok. der teil den du meinst (tb_select.php) müßte der sein:
/**
* Selection criteria have been submitted -> do the work
*/
else {
// Builds the query
$sql_query = 'SELECT ' . backquote(urldecode($param[0]));
$i = 0;
$c = count($param);
while ($i < $c) {
if ($i > 0) {
$sql_query .= ',' . backquote(urldecode($param[$i]));
}
$i++;
}
$sql_query .= ' FROM ' . backquote($table);
// The where clause
if ($where != '') {
$sql_query .= ' WHERE ' . ((get_magic_quotes_gpc()) ? stripslashes($where) : $where);
}
else {
$sql_query .= ' WHERE 1';
for ($i = 0; $i < count($fields); $i++) {
if (!empty($fields) && $fields[$i] != '') {
if (strtoupper($fields[$i]) == 'NULL' || strtoupper($fields[$i]) == 'NOT NULL') {
$quot = '';
$cmp = 'IS';
}
else if ($types[$i] == 'string' || $types[$i] == 'blob') {
$quot = '\'';
$cmp = 'LIKE';
if (get_magic_quotes_gpc()) {
$fields[$i] = stripslashes($fields[$i]);
}
$fields[$i] = sql_addslashes($fields[$i], TRUE);
}
else if ($types[$i] == 'date' || $types[$i] == 'time') {
$quot = '\'';
$cmp = '=';
}
else if (strstr($fields[$i], '%')) {
$quot = '\'';
$cmp = 'LIKE';
}
else if (substr($fields[$i], 0, 1) == '<' || substr($fields[$i], 0, 1) == '>') {
$quot = '';
$cmp = '';
}
else {
$quot = '';
$cmp = '=';
} // end if
$sql_query .= ' AND ' . backquote(urldecode($names[$i])) . " $cmp $quot$fields[$i]$quot";
} // end if
} // end for
} // end if
if ($orderField != '--nil--') {
$sql_query .= ' ORDER BY ' . backquote(urldecode($orderField)) . ' ' . $order;
} // end if

$url_query = 'lang=' . $lang
. '&server=' . $server
. '&db=' . urlencode($db)
. '&table=' . urlencode($table)
. '&sql_query=' . urlencode($sql_query)
. '&pos=0'
. '&sessionMaxRows=' . $sessionMaxRows
. '&goto='. $goto;
header('Location: ' . $cfgPmaAbsoluteUri . 'sql.php3?' . $url_query);
}


Wie sieht jetzt eigentlich der Sortierstring aus, den ich irgendwo dranhängen soll??
 
PHP:
if ($orderField != '--nil--') 
{
  $sql_query .= ' ORDER BY ' . backquote(urldecode($orderField)) . ' ' . $order;
} // end if

solltest Du entsprechend anpassen.....

Dein Sortiertext sollte z.B. so aussehen
ORDER BY DATEhr DESC
Allerdings würde ich das nicht direkt Hardcoden, sondern abfragen, ob z.B. $orderField gesetzt ist.... weil sonst könntest Du nie wieder anders sortieren... (falls erforderlich....)
 
hab's jetzt so geändert und am server gespielt.

if ($orderField != '--nil--') {
$sql_query .= ' ORDER BY DATEhr DESC ' . backquote(urldecode($orderField)) . ' ' . $order;
} // end if

es hat sich aber nichts verändert.
das feld DATEhr ist nach wie vor unsortiert.

vielleicht ein anderer lösungsweg:
es gibt doch dieses Feld SQL-Befehl(e) ausführen in Datenbank wo defaultmäßig SELECT * FROM xyz WHERE 1 drinnensteht.
Vielleicht kann man da (im php-code) den ORDER BY Befehl für das Feld DATEhr reinschreiben und ausführen lassen.
So mach ich's bis jetzt nämlich bei jedem start immer händisch. is aber ziemlich lähmend!
 
dont know.... probiers mal aus.... vielleicht klappts ja... :)

und warum das da nicht funktioniert.... hmm keine Ahnung... das war nur mein erster Rateversuch :)
Da müßte man schon mal rumprobieren und austesten und vor allem rumdebuggen... dann kann man genaueres sagen....
 
ahhhhh, das ist so verdammt viel Code. da blickste nicht durch zumal die jungs nur strings verwenden.
da ist fast nichts hardcoded.
katastrophe, da durchzublicken.

ich seh schon, es wird mir wohl nix anderes übrigbleiben, als den befehl jedesmal manuell durchzuführen obwohl ich mit dieser lösung überhaupt nicht zufrieden bin.
 
hmmm,

hab da noch ein paar schleifen zum auslesen der field's und rows der tabelle gefunden.
kann man's nicht da wo einbauen:

/**
* Not selection yet required -> displays the selection form
*/
if (!isset($param) || $param[0] == '') {
include('./header.inc.php3');
$result = @mysql_list_fields($db, $table);
if (!$result) {
mysql_die('', 'mysql_list_fields(' . $db . ', ' . $table . ')', '', $err_url);
}
else {
// Gets the list and number of fields
$fields_count = mysql_num_fields($result);
for ($i = 0; $i < $fields_count; $i++) {
$fields_list[] = mysql_field_name($result, $i);
$fields_type[] = mysql_field_type($result, $i);
$fields_len[] = mysql_field_len($result, $i);
}
?>
<form method="post" action="tbl_select.php3">
<input type="hidden" name="server" value="<?php echo $server; ?>" />
<input type="hidden" name="lang" value="<?php echo $lang; ?>" />
<input type="hidden" name="db" value="<?php echo $db; ?>" />
<input type="hidden" name="table" value="<?php echo $table; ?>" />
<input type="hidden" name="goto" value="<?php echo $goto; ?>" />
     
<?php echo $strSelectFields; ?> :<br />
     
<select name="param[]" size="10" multiple="multiple">
<?php
echo "\n";
// Displays the list of the fields
for ($i = 0 ; $i < $fields_count; $i++) {
echo ' <option value="' . urlencode($fields_list[$i]) . '" selected="selected">' . htmlspecialchars($fields_list[$i]) . '</option>' . "\n";
}
?>
</select><br />
<ul>
<li>
<div style="margin-bottom: 10px">
<?php echo $strDisplay; ?> 
<input type="text" size="4" name="sessionMaxRows" value="<?php echo $cfgMaxRows; ?>" />
<?php echo $strLimitNumRows . "\n"; ?>
</div>
</li>
<li>
<?php echo $strAddSearchConditions; ?><br />
<input type="text" name="where" /> 
<?php print show_docu("manual_Reference.html#Functions") . "\n"; ?>
<br /><br />
<?php echo '<i>' . $strOr . '</i> ' . $strDoAQuery; ?><br />
<table border="<?php echo $cfgBorder; ?>">
<tr>
<th><?php echo $strField; ?></th>
<th><?php echo $strType; ?></th>
<th><?php echo $strValue; ?></th>
</tr>
<?php
for ($i = 0; $i < $fields_count; $i++) {
echo "\n";
$bgcolor = ($i % 2) ? $cfgBgcolorOne : $cfgBgcolorTwo;
$fieldsize = (($fields_len[$i] > 40) ? 40 : $fields_len[$i]);
$maxlength = (($fields_len[$i] < 8) ? 8 : $fields_len[$i]);
?>
<tr bgcolor="<?php echo $bgcolor; ?>">
<td><?php echo htmlspecialchars($fields_list[$i]); ?></td>
<td><?php echo $fields_type[$i]; ?></td>
<td>
<input type="text" name="fields[]" size="<?php echo $fieldsize; ?>" maxlength="<?php echo $maxlength; ?>" />
<input type="hidden" name="names[]" value="<?php echo urlencode($fields_list[$i]); ?>" />
<input type="hidden" name="types[]" value="<?php echo $fields_type[$i]; ?>" />
</td>
</tr>
<?php
} // end for
echo "\n";
?>
</table><br />
</li>
<li>
<?php echo $strDisplayOrder; ?><br />
<select name="orderField" style="vertical-align: middle">
<option value="--nil--"></option>
<?php
echo "\n";
for ($i = 0; $i < $fields_count; $i++) {
echo ' ';
echo '<option value="' . urlencode($fields_list[$i]) . '">' . htmlspecialchars($fields_list[$i]) . '</option>' . "\n";
} // end for
?>
</select>
<input type="radio" name="order" value="ASC" checked="checked" />
<?php echo $strAscending; ?> 
<input type="radio" name="order" value="DESC" />
<?php echo $strDescending; ?><br /><br />
</li>
</ul>

    
<input type="submit" name="submit" value="<?php echo $strGo; ?>" />
</form>
<?php
} // end if
echo "\n";
include('./footer.inc.php3');
}
 
Zurück
Oben