[MySQL] Allgemeine Fragen

UnBreakable

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
477
Also ich habe jetzt schon ein bisschen was mit MySQL gemacht (z.B. gästebuch programmiert)
aber ich hab mir immer alles zusammengeschustert und die codes usw. nie richtig verstanden!

Darum hätte ich jetzt mal ein par allgemeine fragen.

Ich hab im internet schon ein par tutorials durchgelesen usw. aber war irgendwie alles nicht so der bringer, wenn jemand einen tipp hat, wäre ich dankbar.

Meine Fragen:

Wenn ich in PHP normal eine variable nen Wert zuweise, geschieht doch sonst nichts oder?

wen ich aber:

$connect = mysql_connect("localhost","benutzername","passwort");

mache führt er den befehl trotzdem aus... ist das einfach so? bei allen SQL gefehlen?

wenn ich folgenden code schreibe:

$anfrage_link = mysql_query("select * from neu");

$laenge = mysql_num_rows($anfrage_link);

$i = "1";

while($i <= $laenge)
{
$datensatz = mysql_fetch_array($anfrage_link);
echo $datensatz["id"];
echo $datensatz["name"];
echo "<br>";
$i++;
}

frägt der da dann einfach eine zeile nach der anderen ab? er muss ja da dann praktisch einen internen zähler haben, das er mit dem befehl
$datensatz = mysql_fetch_array($anfrage_link);
je nachdem wie oft die schleife durchlaufen wird eine zeile nach der anderen ausgibt.
 
Puh - ich glaub das ist etwas größere Arbeit dir alles zu erklären - aber ich versuch mal die Fragen zu beantworten:

$connect = mysql_connect("localhost","benutzername","passwort");

Ja er führt den "Befehl" aus. Der Befehl ist genaugesagt eine Funktion. Diese Funktion wird aufgerufen und hat wie jede Funktion einen Rückgabe wert. Der Rückgabewert von mysql_connect ist eine Ressource. Diese Ressource speicherst du in der Variablen $connect.

Wenn du schreiben würdest:
mysql_connect("localhost","benutzername","passwort");

Dann würde PHP den Rückgabewert der Funktion verwerfen und in keiner Variable speichern.
Beispiel:
PHP:
function addiere($zahl_eins, $zahl_zwei) {
    return $zahl_eins + $zahl_zwei;
}

echo addiere(2,3);
echo "<br />";
$ergebnis = addiere(2,3);
echo $ergebnis;
echo "<br />";
addiere(2,3);

Zur 2. Frage ... dein interner Zähler ist, die Variable $i. Dort wird zuerst die 1 gespeichert und mit jedem durchlauf der While-Schleife wirder Zähler um eins erhöht (durch die Anweisung: $i++).

Ich glaube dein Problem sind nicht die schlechten Tutorials, sondern dein bisheriger Wissensstand. Nimms bitte nicht persönlich, aber du hast von tuten und blasen keine Ahnung. Vielleicht haben die Tutorials einfach vorausgesetzt, dass man weis was eine Funktion ist.
Vielleicht suchst du nochmal nach Tutorials die Wirklich die Grundlagen des Programmierens abdecken - also was ist eine Variable. Welche Datentypen gibt es - wie unterscheiden sich diese und so weiter.
 
Ausserdem finde ich persönlich deine Query Abfrage umständlich (ausser jemand kann mir den Vorteil erläutern).

Ich hätte schlicht:

PHP:
 $select = "SELECT * FROM db";
$query = mysql_query( $select ) OR die( mysql_error() );

while( $item = mysql_fetch_array($query) )   {
   echo $item['x'];
   echo $item['y'];
}
 
Zuletzt bearbeitet:
also erstmal folgendes:
Ich habe von Programmieren ahnung, allerdings nicht von MySQL!

Die Antwort auf meine 1. frage hab ich verstanden.
Das muss man einfach wissen, das die funktion (eigentlich ja egal wie man es bezeichnet) ausgeführt wird und nicht nur in dieser variable gespeichert wird. (ich hoffe man versteht was ich meine, wenn nicht auch egal weil sich die frage geklärt hat.)

Zu schleifen variablen und sonstiges!
Mir ist klar dass $i ein zähler ist usw. weil die ja ich selber geschrieben hab diese schleifen, weil wenn ich:

$datensatz = mysql_fetch_array($anfrage_link);
echo $datensatz["id"];

schreib gibt er mir 1 aus (weil von der ersten zeile ID den Wert 1 hat)

wenn ich jetzt

$datensatz = mysql_fetch_array($anfrage_link);
echo $datensatz["id"];

$datensatz = mysql_fetch_array($anfrage_link);
echo $datensatz["id"];

schreib gibt er mir den wert 1 und 4 aus (weil die zweite zeile bei id den wert 4 hat)

also muss da irgendwo ein zähler laufen, weil sonst würde er ja 2 mal den gleichen wert ausgeben, wenn ich 2 mal den gleichen befehl ausführe.
 
ok, alles klar!
aber diese zeile versteh ich nicht ganz, wieso sie funktioniert:

while( $item = mysql_fetch_array($query) )

kannst du mir diese erklären?
 
Zuletzt bearbeitet: (Buchstabenverdreher)
Ich habe von Programmieren ahnung, allerdings nicht von MySQL!
Hust hust.

Also mysql_fetch_array() liefert beim Aufruf false wenn die letzte Zeile aus dem Result abgeholt wurde. Dadurch terminiert die Schleife.

Beispiel:
PHP:
function test() {
    static $i=0;

   if($i++ == 5) return false;
   return true;
}

while(test()) {
  echo "x";
}
 
Enigma schrieb:

Wieso Hust hust?

Also mysql_fetch_array() liefert beim Aufruf false wenn die letzte Zeile aus dem Result abgeholt wurde. Dadurch terminiert die Schleife.

Beispiel:
PHP:
function test() {
    static $i=0;

   if($i++ == 5) return false;
   return true;
}

while(test()) {
  echo "x";
}

in diesem fall wird praktisch die schleife solange wiederholt wie die funktion test den wert true hat, richtig?
 
Richtig
Kuck dir mal folgenden Code an:
PHP:
<?php
while(true) {
    echo "Endlosschleife<br>\n";flush();
}
while(false) {
    echo "Wird nie kommen";
}

function gimme($return) { return $return);

while($x = gimme(false)) { #wird nie durchlaufen
}
while($x = gimme(true)) { #endlosschleife
}
 
UnBreakable schrieb:
aber diese zeile versteh ich nicht ganz, wieso sie funktioniert:

while( $item = mysql_fetch_array($query) )

kannst du mir diese erklären?

Das ganze ist ganz einfach.. Wie enigma schon sagte holt mysql_fetch_array() Datensätze aus der query und packt diese in diesem Fall in den array $item. Dann setzt er den internen Zähler einen hoch. Jetzt kannst du innerhalb der while schleife noch die einzelnen Daten ausgeben lassen, z.B. Benutzer, Datum etc.
Ein Beispiel aus meiner eigenen Newsseite:
(musst net alles verstehen :)
PHP:
$queryStr_News = "SELECT ID,title,DATE_FORMAT(date, '%d.%m.%Y
%T') AS datef,text,style FROM ".MYSQL_TABLE." ORDER BY date ".NEWSORDER.";";

$query = mysql_query($queryStr_News) or DIE(mysql_error());

while ($item=mysql_fetch_array($query))
{
    if($item['style'] == 0)
    {
        $style = "<p>";
        $styleend = "</p>";
    }else {
        $style = "<pre>";
        $styleend = "</pre>";
    }

    echo "<tr>";
    echo "<td class=\"news_info\"><h1>".stripslashes($item['title'])."</h1><p class=\"datef\">".$item['datef']."</p></td>";
    echo "<td class=\"news_content\">".stripslashes($style.$item['text'].$styleend)."</td>";
    echo "</tr>";
    echo "<tr>";
    echo "<td class=\"spacer\" colspan=\"2\"></td>";
    echo "</tr>";
}
 
ok, hab ich verstanden!
aber wenn man meinen ersten beitrag anschaut, sieht man das ich da ja schon vermutet hab das es so funktioniert ;)
 
Sorry Unbreakable,

aber ich glaube ernsthaft, dass Dein Problem nicht nur bei MySQL liegt. Deine Fragen haben nur im entferntesten Sinne etwas mit MySQL zu tun, nämlich dass hier zufällig Funktionen verwendet werden, die eine MySQL-DB ansteuern. Höre auf den Rat von Enigma und besorg Dir ein gutes Tutorial oder besser noch ein Buch, welches die Grundlagen der Programmierung erklärt. In allen Deinen Posts kann man erkennen, dass Du absolute Verständnisprobleme im Bereich Variablen, Funktionen und Kontrollstrukturen hast.

Ich kann Dir die Reihe "Jetzt lerne ich..." von Markt + Technik empfehlen. Der Schreibstil der Bücher ist locker, sie gehen nicht zu sehr in die Tiefen, also der Anspruch ist wirklich auf Anfänger ausgelegt und preislich gehen die auch in Ordnung. Schau am besten bei Terrashop oder Amazon, ob Du nicht ein vergünstigtes Exemplar ergattern kannst. Damit schaffst Du dir eine solide Grundlage, auf der Du dann aufbauen kanst. Nimm am besten gleich ein Buch über Java oder .NET. Die grundlegenden Elemente sind in etwa gleich zu denen von PHP, du kannst die Erkenntnisse also übertragen, deren Konzept ist aber wesentlich moderner als das von PHP.


Ciao
 
naja ich muss dir vielleicht teilweise recht geben, das ich von Funktionen nicht viel weiß und auch wahrscheinlich von anderen dingen die evt. wichtig wären, aber mit Variablen Konstanten Klassen oder ähnliches weiß ich schon was anzufangen!

ich habe auch schon Java Programme geschrieben, die aus mehreren Klassen bestanden....

Ich werde mir vielleicht ein Buch kaufen, aber dann wahrscheinlich kein direktes Anfänger Buch!

Mein Problem liegt auch evt. darin das ich mich immer nicht richtig ausdrücken kann, weil ich die richtigen begriffe meistens nicht kenn...

aber ich bin natürlich kein Programmier-Profi, will aber meine Kenntnisse stark aufbessern! das vielleicht auch wie du schon empfohlen hast mit einem buch.

Mein Problem ist da allerdings das ich meistens nebenbei bisschen in der arbeit programmiere, wenn ich zeit habe! aber da kann ich kein buch neben mir liegen lassen...
und in meiner freizeit hab ich nicht gerade viel zeit.
 
Zurück
Oben