Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Frage zu MySQL und PHP

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Tommy111
PostRank 8
PostRank 8
Beiträge: 704
Registriert: 11.02.2007, 16:02
Wohnort: Zuhause

Beitrag von Tommy111 » 11.06.2008, 15:03

Hallo,

ich sitze jetzt schon zwei Tage darüber und bin voll am verzweifeln:

$ergebnis = mysqli_query($conn, "SELECT id, vorname FROM kontakt WHERE id>5");

while ($zeile = mysqli_fetch_array($ergebnis)) {

print(htmlspecialchars($zeile["id"]));
print(htmlspecialchars($zeile["vorname"]));
print(htmlspecialchars($zeile["nachname"]));
print(htmlspecialchars($zeile["zusatz"]));
print(htmlspecialchars($zeile["bemerkung"]));

print('<img src="'.$zeile["bild"].'" class="ansicht" />');
}

Dieser Mist fragt alle Daten aus der Tabelle ab und gibt diese wieder. Ich weiß, wie ich die Tabelle aufrufe, bzw. bestimmte Spalten abrufen kann. Aber wie zum Kukuck kann ich denn nur einzelne Zeilen abrufen (bzw. darstellen), als Beispiel die Zeile mit der id 7? Das kann doch von da wo ich jetzt schon mal bin kein so großer Schritt mehr sein...

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


emel
PostRank 9
PostRank 9
Beiträge: 1045
Registriert: 19.12.2007, 10:29

Beitrag von emel » 11.06.2008, 15:05

eine zeile:

Code: Alles auswählen

SELECT id, vorname FROM kontakt WHERE id=5
oder wenn du nur die erste zeile möchtest:

Code: Alles auswählen

SELECT id, vorname FROM kontakt WHERE id>5 LIMIT 1
oder habe ich dein problem falsch verstanden?
Suche / Biete L*nks - PM an mich

Tommy111
PostRank 8
PostRank 8
Beiträge: 704
Registriert: 11.02.2007, 16:02
Wohnort: Zuhause

Beitrag von Tommy111 » 11.06.2008, 15:12

Wie ich die Daten aufrufen kann, habe ich schon einigermaßen verstanden. Mein Problem ist, wie ich diese dann darstelle. So, daß quasi alle Spalten (oder hier eben id und vorname) der siebten Zeile (also id=7) der Tabelle ausgegeben werden.

edit:
Durch die While-Schleife werden ja quasi alle Datensätze angezeigt. Ich möchte aber nur eine bestimmte Zeile.

(Ist aber auch schwer auszudrücken... :-? )

To-Bi-As
PostRank 6
PostRank 6
Beiträge: 443
Registriert: 08.10.2006, 02:20

Beitrag von To-Bi-As » 11.06.2008, 15:22

wie emel schon sagte, mit

Code: Alles auswählen

$ergebnis = mysqli_query&#40;$conn, "SELECT id, vorname FROM kontakt WHERE id=7"&#41;; 
bekommste Datensatz mit der ID 7. Bisher waren es ja alle die >5 waren.

Die Schleife zeigt Dir alles an, das ist richtig, aber auch nur das was zuvor abgefragt wurde. Fragst Du nur einen Datensatz an, dann wird auch nur einer angezeigt.

Gruß,
Ingo

emel
PostRank 9
PostRank 9
Beiträge: 1045
Registriert: 19.12.2007, 10:29

Beitrag von emel » 11.06.2008, 15:34

versteh es noch nicht ganz.

wenn du im while nur 1 zeile verarbeiten möchtest wäre es nicht klüger das sql zu ändern?

ansonsten:

Code: Alles auswählen

while&#123;

  if&#40;$id=7&#41;
  &#123;
    // do something
  &#125;

&#125; 
Suche / Biete L*nks - PM an mich

typer
PostRank 4
PostRank 4
Beiträge: 119
Registriert: 05.11.2007, 00:20

Beitrag von typer » 11.06.2008, 15:46

@emel: Du verstehst es schon!

Wozu brauchts denn hier ein while - hier liegt ein grundsätzliches Verständnisproblem vor, und das im falschen Forum. -> https://www.php.net/

maddoggy
PostRank 3
PostRank 3
Beiträge: 68
Registriert: 25.05.2007, 09:44

Beitrag von maddoggy » 11.06.2008, 15:46

Tommy111 hat geschrieben:Wie ich die Daten aufrufen kann, habe ich schon einigermaßen verstanden. Mein Problem ist, wie ich diese dann darstelle. So, daß quasi alle Spalten (oder hier eben id und vorname) der siebten Zeile (also id=7) der Tabelle ausgegeben werden.

edit:
Durch die While-Schleife werden ja quasi alle Datensätze angezeigt. Ich möchte aber nur eine bestimmte Zeile.

(Ist aber auch schwer auszudrücken... :-? )
Die fehlt eine Dimension im Array. Probier es mal so (nicht getestet aber im prinzip macht man das so)

Code: Alles auswählen

$ergebnis = mysqli_query&#40;$conn, "SELECT id, vorname FROM kontakt WHERE id>5"&#41;; 
$x=0;
$table="";
while &#40;$zeile = mysqli_fetch_array&#40;$ergebnis&#41;&#41; &#123; 

$table&#91;$x&#93;&#91;"id"&#93;=htmlspecialchars&#40;$zeile&#91;"id"&#93;&#41;; 
$table&#91;$x&#93;&#91;"vorname"&#93;=htmlspecialchars&#40;$zeile&#91;"vorname"&#93;&#41;; 
$table&#91;$x&#93;&#91;"nachname"&#93;=htmlspecialchars&#40;$zeile&#91;"nachname"&#93;&#41;; 
$table&#91;$x&#93;&#91;"zusatz"&#93;=htmlspecialchars&#40;$zeile&#91;"zusatz"&#93;&#41;; 
$table&#91;$x&#93;&#91;"bemerkung"&#93;=htmlspecialchars&#40;$zeile&#91;"bemerkung"&#93;&#41;; 

$x++;
 
&#125;
 print $table&#91;6&#93;&#91;"vorname"&#93;;

So speicherst du denn gesamten Inhalt in einer Variable und greifst nur auf das Element zu was du brauchst.
Du kannst dafür auch ein Objekt nehmen. Würde ich empfehlen weil es nicht so viel Speicher frisst.
Übrigens: php.net is your friend ;)

Tommy111
PostRank 8
PostRank 8
Beiträge: 704
Registriert: 11.02.2007, 16:02
Wohnort: Zuhause

Beitrag von Tommy111 » 11.06.2008, 16:07

Ja, stimmt schon - falsches Forum, ich werde mich dort mal umsehen.

Danke aber trotzdem. Wenn ich schreibe WHERE id=7, zeigt es die Zeile 7 an, richtig. Das dumme ist nur, daß ich diese ja von einer anderen Seite aus aufrufen will (ich glaube, das nennt man dynamische URL), so daß quasi hinter der URL ein ?id=7 kommt und diese Zeile 7 dann auch angezeigt wird. Ist aber auch echt nix so einfach...

naitsab
PostRank 1
PostRank 1
Beiträge: 27
Registriert: 05.03.2008, 23:51

Beitrag von naitsab » 11.06.2008, 20:37

Wenn du es dynamisch machen willst, dann mach es doch einfach so:

"SELECT id, vorname FROM kontakt WHERE id='".mysql_real_escape_string($_GET['id'])."' LIMIT 1"

jenachdem was man dann unter ?id=X eingibt, bekommt man dann den Eintrag.
Das LIMIT 1 musst du auch immer setzen, sonst bekommst du bei größeren Projekten Probleme mit der Perfomance.

Du wirst jetzt sagen: Da ist doch sowieso nur ein Eintrag mit der ID=7 in meiner Datenbank. Ja, aber das weiß der Server ja nicht. Also werden alle Einträge von vorne bis hinten durchgegangen und geschaut, ob die ID=7 ist.
Mit LIMIT 1 ist das Query zu Ende, wenn ein Eintrag gefunden wurde.

Tommy111
PostRank 8
PostRank 8
Beiträge: 704
Registriert: 11.02.2007, 16:02
Wohnort: Zuhause

Beitrag von Tommy111 » 11.06.2008, 21:44

Hallo,

erstmal vielen Dank - momentan gibt mir das noch eine Fehlermeldung, aber ich glaube, das bringt mich jetzt in die richtige Richtung. Ich hab das jetzt quasi so eingebracht:

$ergebnis = mysqli_query($conn, "SELECT * FROM kontakt WHERE id='".mysql_real_escape_string($_GET['id'])."' LIMIT 1");
while ($zeile = mysqli_fetch_array($ergebnis)) {


print(htmlspecialchars($zeile["id"]));
print(htmlspecialchars($zeile["vorname"]));
print(htmlspecialchars($zeile["nachname"]));
print(htmlspecialchars($zeile["zusatz"]));
print(htmlspecialchars($zeile["bemerkung"]));

print('<img src="'.$zeile["bild"].'" class="ansicht" />');



mysqli_close($conn);

Aber die Richtung stimmt, glaube ich...

Tommy111
PostRank 8
PostRank 8
Beiträge: 704
Registriert: 11.02.2007, 16:02
Wohnort: Zuhause

Beitrag von Tommy111 » 11.06.2008, 21:54

Also das sind die Fehlermeldungen, welche mir dabei angezeigt werden:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /mnt/web2/13/78/51691378/htdocs/mysql_personendaten.php on line 21

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /mnt/web2/13/78/51691378/htdocs/mysql_personendaten.php on line 21

So richtig schlau werde ich daraus nicht...

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 11.06.2008, 22:55

Tommy111 hat geschrieben:So richtig schlau werde ich daraus nicht...
da hat doch schon Jemand die MägaURL gepostet ....
... dort kannst ganzganz leicht Befehle nachschlagen


https://php.net/mysql_real_escape_string

dort steht ... Verbindung die via "mysql_open ... ähm _connect

die machst den fetch mit "mysqli"

https://php.net/mysqli_real_escape_string
gibts auch mit i


//EDIT ... Frage an die Anderen
warum muß das extra an die mySQL ... oder gehts nur um einen Befehl in der API, kein request zum SQL-Server?

ich mach es immer mit
addslashes( $var );

Tommy111
PostRank 8
PostRank 8
Beiträge: 704
Registriert: 11.02.2007, 16:02
Wohnort: Zuhause

Beitrag von Tommy111 » 12.06.2008, 14:17

Hallo,

vielen Dank für die ausführliche Antwort. Ich sitze jetzt schon wieder drei Stunden hier dran - aber irgendwie komm ich als noch nicht weiter...

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /mnt/web2/13/78/51691378/htdocs/mysql_personendaten.php on line 21

Was meint er denn jetzt damit?

(wenn man das erstmal gepeilt hat, greift man sich wahrscheinlich an den Kopf... :o )

800XE
PostRank 10
PostRank 10
Beiträge: 5223
Registriert: 02.12.2004, 03:03

Beitrag von 800XE » 12.06.2008, 14:52

Tommy111 hat geschrieben:Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in

Was meint er denn jetzt damit?
wie gut ist dein English?
meines ist nicht so dolle .... dummer Hauptschüler, hatte 4er in English

aber, soviel kann ich dort rauslesen
Tommy111 hat geschrieben:exactly 2 parameters, 1 given in
genau 2 ..... die wiel er wohl .... 2 STück
1 given in .... bekommt aber nur 1 Stück


ohne i
string mysql_real_escape_string ( string $unescaped_string [, resource $link_identifier ] )
2 Paras .... der 2te ist optional (der für den DBconnect, nicht angegeben = aktuelle Verbindung=zu letzt geöfnete)

mit i
string mysqli_real_escape_string ( mysqli $link , string $escapestr )
2 Paras ... 0 optional

Para 1 = DBconnect
Para 2 = der $text

Tommy111
PostRank 8
PostRank 8
Beiträge: 704
Registriert: 11.02.2007, 16:02
Wohnort: Zuhause

Beitrag von Tommy111 » 12.06.2008, 15:04

Ich glaube, du stellst dein Scheffel etwas unters Licht...

Offen gesagt - ich geb mir zwar Mühe, verstehe aber gerade mal garnix mehr. Jetzt verlier ich völlig den Faden.

Wenn dies nun der Quelltext ist:

Code: Alles auswählen

$ergebnis = mysqli_query&#40;$conn, "SELECT * FROM kontakt WHERE id='".mysqli_real_escape_string&#40;$_GET&#91;'id'&#93;&#41;."' LIMIT 1"&#41;;
  
  
  while &#40;$zeile = mysqli_fetch_array&#40;$ergebnis&#41;&#41; &#123;
  

	
	print&#40;htmlspecialchars&#40;$zeile&#91;"id"&#93;&#41;&#41;;
	print&#40;htmlspecialchars&#40;$zeile&#91;"vorname"&#93;&#41;&#41;;
    print&#40;htmlspecialchars&#40;$zeile&#91;"nachname"&#93;&#41;&#41;;
	print&#40;htmlspecialchars&#40;$zeile&#91;"zusatz"&#93;&#41;&#41;;
	print&#40;htmlspecialchars&#40;$zeile&#91;"bemerkung"&#93;&#41;&#41;;
	
	print&#40;'<img src="'.$zeile&#91;"bild"&#93;.'" class="ansicht"  />'&#41;;


 &#125;
Was will der von mir? :(

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag