|
|
|
Community
9dots.de Webdesign Board
|
|
|
|
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 19.12.2004, 20:58 Titel:
Codingfragen (Bin Anfänger) |
|
|
|
|
So nachdem ich mich mit anfänglichen Startschwierigkeiten und Präsentationen von einfachen Scripts hier im Forum weiterhin intensiv mit PHP/MySQL auseinandergesetzt hab, hab ich es geschafft ein einfaches Mitglieder-Script mit Login und zum Test nur 3 Feldern (Name + eMail + Join Datum) zu coden.
Das Daten hinzufügen bereitet keine weiteren Probleme. Aber jetzt wird es für einen Einsteiger wie mich etwas problematisch. Deswegen wende ich mich an die erfahrenen Coder aus dem 9dots-Forum
1. Problem
ich möchte, dass die Members (2 zum Test eingetragen) in einer 3-Spalten-Tabelle absteigend aufgelistet werden. Allerdings ergibt sich bei diesem Code
Zitat: |
// Datenausgabe
$qry = "SELECT id, member, email, einstieg FROM mitglieder";
$show = mysql_query($qry);
while($row = mysql_fetch_object($show))
{
include "header.php";
echo "
<tr>
<td width=\"33%\"><font face=\"Verdana\" size=\"1\">$row->member<br></font></td>
<td width=\"33%\"><font face=\"Verdana\" size=\"1\">$row->email<br></font></td>
<td width=\"34%\"><font face=\"Verdana\" size=\"1\">$row->einstieg<br></font></td>
</tr>
</table>
";
}
?>
|
folgendes Problem:
Zitat: |
So soll es aussehen:
_______Name_________|________eMail________|________Einstieg________
1. Member | 1. Membermail | Einstieg 1. Member
2. Member | 2. Membermail | Einstieg 2. Member
usw.
So sieht es leider aus:
_______Name_________|________eMail________|________Einstieg________
1. Member | 1. Membermail | Einstieg 1. Member
_______Name_________|________eMail________|________Einstieg________
2. Member | 2. Membermail | Einstieg 2. Member
|
Wo liegt der Fehler?
-----------
2. Problem:
Ich möchte bei einem Member über die MySQL-Update Funktion beispielsweise einen Member editieren. Dazu möchte ich erst alle Member in einem DropDown-Formularfeld auflisten. und wenn man einen Member ausgewählt hat soll man auf OK klicken und gelangt zu einer neuen Seite wo in 2 Formularfelder schon die bestehenden Daten die ich editieren möchte aufgelistet sind.
Frage: Wie stelle ich es an, dass ich alle Member in einem DropDown Feld rowe, einen Member somit auswählen kann, auf OK klicke und dementsprechend auf die besagte neue Seite gelange wo die Daten des Members (eMail + Einstieg) in einem normalen Formularfeld zum editieren gerowt sind. Wenn ich diese geändert hab, soll alles über MySQL UPDATE aktualisiert werden. |
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 19.12.2004, 21:39 Titel:
|
|
|
|
|
Zu 1: Du hast in der Schleife nen Tag drin! Dann macht er immer ne neue Tabelle, das bringt nicht das gewünschte Ergebnis! Also machst du folgendes:
Zitat: | (table border="0" width="" height="") ( also halt die Tabelle definieren)
(tr)
(td)Name(/td)(td)Email(/td)(td)Eintrag(/td)
(/tr)
PHP Teil
Hier deine Schleife
Ende PHP Teil
(/table) |
Du musst natürlich die runden klammern durch spitze ersetzen. Hab das nur gemacht, weil es sonst Probleme mit dem Posting gab
Leider hab ich jetzt gerade keine Zeit dir dein Problem Nr.2 zu lösen, da das schon etwas ausführlicher ist, aber ich denke das beantwortet dir jemand anderes
|
Nach oben |
|
|
unex`9dots Administrator
Angemeldet: 02.08.2003 Beiträge: 1106 Wohnort: Karlsruhe Interessen: Coding, Segeln, Schwimmen, PC
|
Verfasst am: 20.12.2004, 02:41 Titel:
|
|
|
|
|
zum 2.Problem:
also zu erst machst du eben ein Formular mit einer selectbox und einem submit button
<form action="zieldatei.php" method="POST">
<select name="memberid">
-->ALLE MEMBER AUS DABA AUSLESEN
-->IN EINER WHILE SCHLEIFE FUER JEDEN MEMBER EIN OPTION ERSTELLEN
{
<option value="$memberid">$membername</option>
}
</select>
<input type="submit" name="submit1" value="Member bearbeiten">
</form>
dann hast du ja schonmal deine auswahl mit allen membern. wenn du jetzt auf ok klickst kommst du auf die seite zieldatei.php. In der Variablen $_POST['memberid'] befindet sich dann die id des members, anhand der du wieder eine select abfrage an die daba schicken kannst und eben NUR die daten dieses members auslesen kannst damit du diese dann zum edit bereitstellen kannst.
Hoffe es hat geholfen. Die Abfragen und das endgültige Formular kriegst du ja wohl hin. |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 20.12.2004, 14:43 Titel:
|
|
|
|
|
Rechtherzlichen Dank euch beiden erstmal Werds nachher mal ausprobieren! Eventuelle Fragen stell ich dann ggf. hier nocheinmal |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 20.12.2004, 18:10 Titel:
|
|
|
|
|
@elite, wenn ich es so wie du sagtest folgendermaßen schreibe:
Zitat: |
// Datenausgabe
$qry = "SELECT id, member, email, einstieg FROM mitglieder";
$show = mysql_query($qry);
while($row = mysql_fetch_object($show))
{
echo "
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\">
<tr>
<td width=\"33%\"><font face=\"Verdana\" size=\"1\">» Member</font></td>
<td width=\"33%\"><font face=\"Verdana\" size=\"1\">» eMail-Adresse</font></td>
<td width=\"34%\"><font face=\"Verdana\" size=\"1\">» Dabei seit</font></td>
</tr>
$row->member $row->email $row->einstieg
</table>
";
}
?>
|
kommt das dabei raus:
|
|
Nach oben |
|
|
unex`9dots Administrator
Angemeldet: 02.08.2003 Beiträge: 1106 Wohnort: Karlsruhe Interessen: Coding, Segeln, Schwimmen, PC
|
Verfasst am: 20.12.2004, 18:21 Titel:
|
|
|
|
|
dann schau ich mir eben das 1.Problem auch mal an
Zitat: |
<table>
<tr>
<td width="33%"><font face="Verdana"
size="1">Member:</font></td>
<td width="33%"><font face="Verdana"
size="1">Email:</font></td>
<td width="34%"><font face="Verdana"
size="1">Einstieg:<br></font></td>
</tr>
<?PHP
$abfrage="SELECT * FROM mitglieder"; $ergs=mysql_db_query(DB_name,$abfrage,$verbindung);
while(list($id,$member,$email,$einstieg)=mysql_fetch_row($ergshow13)){
echo"<tr>
<td width=\"33%\"><font face=\"Verdana\"
size=\"1\">$row->$member<br></font></td>
<td width=\"33%\"><font face=\"Verdana\"
size=\"1\">$row->$email<br></font></td>
<td width=\"34%\"><font face=\"Verdana\"
size=\"1\">$row->$einstieg<br></font></td>
</tr>";
}
?>
</table>
|
|
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 20.12.2004, 19:00 Titel:
|
|
|
|
|
nanos hat folgendes geschrieben: | @elite, wenn ich es so wie du sagtest folgendermaßen schreibe:
|
Hmm ich glaube da hast du meinen ersten Post missverstanden! Ich hatte doch folgendes geschrieben:
Code: | <table border="0" width="" height=""> ( also halt die Tabelle definieren)
<tr>
<td>Name</td><td>Email</td><td>Eintrag</td>
</tr>
PHP Teil
Hier deine Schleife
Ende PHP Teil
</table> |
Ich hatte gedacht, dass dir dadurch klar war, dass die Table-Definition und die Überschriften nicht mit in die Schleife sollten ! Weil wenn du das ganze in die Schleife mit reinschreibst:
Code: |
// Datenausgabe
$qry = "SELECT id, member, email, einstieg FROM mitglieder";
$show = mysql_query($qry);
while($row = mysql_fetch_object($show))
{
echo "
<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\">[/b]
<tr>
[b]<td width=\"33%\"><font face=\"Verdana\" size=\"1\">» Member</font></td>
<td width=\"33%\"><font face=\"Verdana\" size=\"1\">» eMail-Adresse</font></td>
<td width=\"34%\"><font face=\"Verdana\" size=\"1\">» Dabei seit</font></td>
</tr>
$row->member $row->email $row->einstieg
</table>
";
}
?>
|
dann kann es auch nicht so gehen wie du es gern hättest, da jedesmal eine neue Tabelle angelegt wird für jeden Eintrag ( Das kommt daher, da du das ganze IN der Schleife hattest. Und da die Schleife den Befehl so lange wiederholt bis alle mySQL Datensätze ausgelesen sind, wurde auch für jeden Datensatz eine neue Tabelle angelegt! )!
Lage Rede kurzer Sinn: In die Schleife gehören nur die tr bzw. td Tags die die jeweiligen Memberdaten auflisten, nicht die table definierungen und die Überschriften!
Mfg
elite |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 20.12.2004, 19:05 Titel:
|
|
|
|
|
achso, danke euch beiden nochmal für die mühe
sorry wenn ich mich mit für mich nicht so plausiblen erklärungen noch etwas schwer tue muss das erstmal langsam nachvollziehen können aber hab das prinzip jetzt verstanden. ist für mich nunmal auch unangetastetes terrain |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 03.01.2005, 04:21 Titel:
|
|
|
|
|
hab versucht, problem 2 so umzusetzen wie ich es verstanden habe:
Code: |
<body>
<?php
//Datenbankverbindung
$connect = mysql_connect ("localhost","root","")
or die ("Keine Verbindung möglich. Bitte überprüfen Sie die Datenbankverbindung!");
mysql_select_db("homepage")
or die ("Die Datenbank existiert nicht!");
$qry = "SELECT id, member FROM mitglieder";
$show = mysql_query($qry);
// Datenausgabe
echo("<form method=\"POST\" action=\"sql_change.php\">");
echo("Name: <select size=\"1\" name=\"id\">");
while($row = mysql_fetch_object($show))
{
echo("<option value=\"id\">$row->member</option>");
}
?>
</select>
<input type="submit" value="Member bearbeiten" name="submit1">
</form>
</body> |
soweit bin ich schonmal, hab jetzt nur nicht verstanden, wie es weitergeht..
denn wenn meine sql_change.php so aussieht (zwischen den body-tags):
Code: |
<?php
$POST_['id'] = $id;
echo($id);
?>
|
also wenn ich nur die weitergabe vom formular überprüfen will, steht als ausgabe auf der sql_change.php nur
|
|
Nach oben |
|
|
unex`9dots Administrator
Angemeldet: 02.08.2003 Beiträge: 1106 Wohnort: Karlsruhe Interessen: Coding, Segeln, Schwimmen, PC
|
Verfasst am: 03.01.2005, 10:08 Titel:
|
|
|
|
|
2 sachen:
in deinen <option....> Objekten des Forulars musst du value=id ändern!
value ist das was dir später in sql_chamge.php gepostet wird. Wenn du das also statisch auf id setzt wundert es mich wenig wenn da auch immer nur id ankommt. Ersetz es durch die jeweilige id die du gerade aus der Datenank ausliest.
zweitens verstehe ich deine sql_change.php nicht.
$POST_['id'] = $id; ist falsch.
$_POST['id'] sollte den Value der ausgewählten option der Selectbox enthalten. Jede weitere Zuweisung ist unnötig. Also einfach in der sql_change.php
echo $_POST['id']; das sollte reichen |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 03.01.2005, 14:25 Titel:
|
|
|
|
|
ok also
Code: | echo("<option value=$row->id>$row->member</option>"); | ?
Dann kommt bei der jeweiligen Memberauswahl jeweils 1, 2, usw. in der sql_change.php an.
und zu der variablenzuweisung: wollte es einfach in eine kürzere variable packen
so und jetzt muss ich einen select-query ausführen, mit der jeweiligen id die übergeben wurde und dann werden die daten des zu editierenden mitglieds ausgegeben (in einem formularfeld - wo ich wieder mit der while-schleife arbeiten muss)?
kann das beim folgenden query so aussehen:
Code: | $qry = "SELECT member, email, einstieg FROM mitglieder WHERE id LIKE $id"; |
?
oder darf keine variable in der sql-anfrage stehen? |
|
Nach oben |
|
|
rey Mitglied
Angemeldet: 24.07.2004 Beiträge: 810 Wohnort: Bad Homburg Interessen: synth ;)
|
Verfasst am: 03.01.2005, 14:34 Titel:
|
|
|
|
|
Habe jetzt leider keine Zeit, antworte nur mal schnell auf deine letzte Frage: wenn die Variable deklariert ist, darf sie in der MySQL-Abfrage stehen. PHP wird bei der Anfrage diese Variable ganz einfach durch ihren Wert ersetzen. |
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 03.01.2005, 14:45 Titel:
|
|
|
|
|
Ein Wert wird ja durch das Formular in jedem Fall angegeben, da 'id' ja definiert ist.
Soweit beantwortet das meine Frage, danke!
Außerdem würde mich noch interessieren ob ich meine nächsten Ziele richtig interpretiert habe:
Zitat: | und jetzt muss ich einen select-query ausführen, mit der jeweiligen id die übergeben wurde und dann werden die daten des zu editierenden mitglieds ausgegeben (in einem formularfeld - wo ich wieder mit der while-schleife arbeiten muss)? |
|
|
Nach oben |
|
|
nanos Mitglied
Angemeldet: 04.06.2004 Beiträge: 1752
|
Verfasst am: 03.01.2005, 18:14 Titel:
|
|
|
|
|
soweit so gut funktioniert alles. hätte nicht gedacht, dass es so einfach sein kann.
danke nochmal allen, die mir geholfen haben.
meine abschließende frage: wie ordne ich die member im dropdown-feld nach der id undzwar aufsteigend und nicht absteigend (sowie es jetzt der fall ist).
bislang siehts bei mir so aus:
http://excited.xulu.net/n-cms.jpg
bin eigentlich voll und ganz zufrieden |
|
Nach oben |
|
|
elite Mitglied
Angemeldet: 20.07.2004 Beiträge: 1005
Interessen: Coding, DLRG, Radsport
|
Verfasst am: 03.01.2005, 18:48 Titel:
|
|
|
|
|
Code: | $qry = "SELECT * FROM $tabelle ORDER BY id DESC"; |
Nur ein kleines Beispiel! Jetzt würde er mit der höchsten id anfangen und mit der kleinsten aufhören! DESC ist also das Zauberwort |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|
|
|