• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Datenbank-Abfrag

Status
Für weitere Antworten geschlossen.

Karl das kahle Moorhuhn

Neues Mitglied
Ich hab ne supersimple Frage, aber irgendwie ne Schranke vorm Hirn und die Hilfe, die ich schon gewälzt hab, verwirren mich nur.

Folgendes:
ich rufe Werte aus einer Datenbank auf.

So weit so gut, doch nun möchte ich z.B. den 7. und den 12. Feldinhalt aus der Spalte "Name" oder bzw. alle alle Feldinhalte aus der Spalte "Wohnort".

Wie mach ich das möglichst einfach ohne irgendwelche Schleifen. Dafür muss es doch irgeneinen Befehl geben, oder eine naheliegende Möglichkeit.
 
Werbung:
ich weiß nicht, wie deine DB aufgebaut ist, aber i.d.R. hat man eine Spalte, die id heist und automatisch bei jedem Eintrag 1 hochzählt. Über die id kann man dann auf bestimmte Datensätze zugreifen. Z.b. den 7. oder 12.

Greetz
 
Wie Crackpod schon sagte, wäre ein Feld 'id' dafür sehr nützlich.
Das automatische hochzählen was Crackpod erwähnte ist eine automatische Funktion der MySQL-Datenbank und nennt sich auto_increment.

Lege einfach bei deiner Tabelle noch eine Spalte 'id' an, zur Hilfe hier die einstellungen:

Feld: id
Typ: tinyint
Null: Nein
Extra: auto_increment
PRIMARY KEY

In der MySQL abfrage kannst du dann anhand von WHERE den Datensatz bestimmen:
PHP:
$sql = mysql_query("SELECT * FROM db WHERE id = \"5\"");
Das wäre z.B. der 5. Eintrag.

Ps: Verwende bitte niemals ein * in deiner MySQL Abfrage. Ich habe es nur benutzt, weil ich deine Tabelle nicht kenne

Wenn du das mit dem Feld 'id' noch nicht verstanden hast, führe einfach diesen mysql-syntax in deiner db aus:

Code:
ALTER TABLE `tabellen name` ADD `id` TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY ;
--> vergiss nicht vor dem ausführen `tabellen name` anzupassen
 
Zuletzt bearbeitet:
Werbung:
Ja, das mit der id ist mir bekannt, ist mir aber zu umständlich und zu unflexibel. Ich möchte direkt auf ein bestimmtes Feld zugreifen und direkt ausgeben lassen. Beim Zugreifen auf die DB wird ja ein assoziatives Array erstellt, auf dass ich ja irgendwie direkt zugreifen muss. Gedacht ist es folgendermaßen: Ich will den 5. Wert aus der Spalte "Namen" holen und direkt ausgeben ungefähr so:

echo $row[name][4];

das das so nicht geht weiß ich, weil ichs schon ausprobiert hab, man müsste ein betreffendes Array erstellen oder es gibt möglicherweise irgendeine simple Funktion dafür. Das ist was ich suche, wie das geht
 
Zuletzt bearbeitet:
PHP:
<?php
while($zeile = mysql_fetch_array($result))
    {
    echo $row[name];
    }
?>

wenn schon, dann so.

Nils aka XraYSoLo
 
Gibs da nix einfacheres, ohne Schleife und so? Blöde Sache. wie könnte man denn die Datenbank-Einträge in ein mehrdimensionales oder assoziatives Array umwandeln?
 
Werbung:
Aber kein mehrdimensionales ;)

Aber wenn du nur einen Werst auslesen willst kannst du es auch so
anstellen

PHP:
$sql = "SELECT `name` FROM db WHERE id = '5' "; 
$res = mysql_query($sql);
$name = mysql_fetch_row($res);

// Jetzt befindet sich in name[0] der Name
// Für die Schönheit 
$kunden_name = $name[0];

Du kannst die Abfrage natürlich auch direkt in ein mysql_query schreiben, dann
wird sie etwas schmaler
 
ja, hmm danke. Geht wohl nicht. Naja, dann experimentier ich ein bisschen, vielleicht find ich was. Nur wenn ich für jede Abfrage 4 Zeilen benötige, dann wird mein Code 30km lang
 
Werbung:
Ich gebe jetzt ein Beispiel habe aber keine Ahnung ob es klappt:
PHP:
$abfrage = "SELECT url FROM links";
$ergebnis['name'] = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis['name']))
    {
    echo $row->url;
    }

Jetzt müsstest du das nur noch anpassen.

MFG

Alti
 
Werbung:
Vielen Dank für eure Hilfe, hab eine Lösung gefunden, Thread kann geschlossen werden.

Ich muss für meine Zwecke überhaupt gar kein Mehrdimensionales Array erstellen, ich nehm einfach mehrere normale Arrays, mit Hilfe von mysql_data_seek()
 
Der Operator wird benutzt, weil man ein Object "fetcht".

Weiß nicht ob da noch ne andere Schreibweise möglich ist, aber ich benutze diese ;)

MFG
Alti
 
Werbung:
Der Operator "->" gehört in der Tat zur Standardsyntax, wenn man den Befehl mysql_fetch_object benutzt, den man auch in der "normalen" Programmierung nutzen kann. Allerdings wüsste ich kein Fall, wo man den Befehl in der "normalen" Programmierung unbedingt nutzen muss.
 
Ha, jetzt hab ich sogar eine Lösung gefunden, mit der ich mit den ursprünglich gewünschten mehrdimensionalen Arrays arbeiten kann. Zuerst lese ich die Werte aus der Datenbank spaltenweise in jeweils ein Array ein. Dann hänge ich alle Arrays mit array_merge() aneinander um sie anschließend mit array_chunk in ein mehrdimensionales Array aufzuteilen, wobei die 2. Dimension die gleiche Größe hat wie die Spaltenarrays.

Genauso hatte ich es mir vorgestellt gehabt. Man bin ich gut ;)
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben