|
|
|
Autor |
Nachricht |
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
Mi 09.12.09 23:06 Lösungsansatz gesucht PHP, MySQL, Javascript
|
|
Servus Jungens,
ich hoffe mal das hier genügend Leute sind die mir helfen können. ^^
Also, folgendes Problem:
Ich habe eine Datenbank, in der Adressdaten stehen.
Also 'Name', 'Ort', bla bla.
Alles was halt so dazu gehört.
Aus dieser Datenbank wird per PHP und HTML eine Tabelle erstellt, in der diese Daten ersichtlich sind.
In der letzten Spalte dieser Tabelle befindet sich ein Button.
Bei klick auf diesen Button sollen Formularfelder automatisch ausgefüllt werden.
Die Adressdaten also sichtbar für den Benutzer in den Feldern stehen.
Nunja, das funktioniert alles soweit ganz gut.
Aber erst mal zum Code:
Code: |
<table cellpadding="2" cellspacing="2" border="0" STYLE="width:99%; font-size: 13px; font-family:'Times New Roman',Times,serif;">
<tr STYLE="color: orange;">
<td><b>ID</b></td>
<td><b>Name</b></td>
<td><b>Zusatz</b></td>
<td><b>Strasse</b></td>
<td><b>Ort</b></td>
<td STYLE='width: 56px;'><b></b></td>
</tr>
<tr>
<?
mysql_connect("localhost","********","*******");
mysql_select_db("********") or die(mysql_error());
$query="SELECT * FROM ********";
$result=mysql_query($query);
$num=mysql_numrows($result);
$i=0;
while ($i < $num) {
$id =mysql_result($result,$i,"id");
$name =mysql_result($result,$i,"name");
$zusatz =mysql_result($result,$i,"zusatz");
$strasse =mysql_result($result,$i,"strasse");
$ort =mysql_result($result,$i,"ort");
echo "
<td><b>$id</b></td>
<td>$name</td>
<td>$zusatz</td>
<td>$strasse</td>
<td>$ort</td>
<td class='insert'>
<img src='images/bg_insert.png' value='$id' onclick='changeValue()'>
<script type=\"text/javascript\">
function changeValue(){
var EMPFname = \"$name\";
var EMPFzusatz = \"$zusatz\";
var EMPFstrasse = \"$strasse\";
var EMPFort = \"$ort\";
var nameChanger = document.getElementById('name');
nameChanger.value = EMPFname;
var zusatzChanger = document.getElementById('zusatz');
zusatzChanger.value = EMPFzusatz;
var strasseChanger = document.getElementById('strasse');
strasseChanger.value = EMPFstrasse;
var ortChanger = document.getElementById('ort');
ortChanger.value = EMPFort;
}
</script>
</td>
</tr>
";
$i++;
}
?>
</table>
|
So... jetzt hab ich aber folgendes Problem, das Javascript daoben fügt jeweils bloß die zuletzt im Array stehenden Daten ein...
Jetzt nun die Frage, hab ich da einen komplett falschen Ansatz?
Falls ja, wenn jemand in der Lage dazu ist die Sache verständlich zu erklären, wäre ich sehr dankbar. ^^
Ich hoffe mal es sind Leute hier die dem gewachsen sind.
Zuletzt bearbeitet von RM.Baldi am Fr 15.10.10 23:40, insgesamt 1-mal bearbeitet
|
|
|
|
|
Beiträge: 3864
Wohnort: Frankfurt
Geburtstag: 04.08.1983
|
|
Mi 09.12.09 23:32
|
|
Der falsche Ansatz ist der, dass du in der resultierenden Tabelle dann 20 mal die gleiche Funktion namens "changeValue()" drinnenstehen hast und der Aufruf nicht weiß welche er aufrufen soll.
Die einfachste Lösung wär wohl, die javascript funktion nur einmal außerhalb der Schleife rauszuschreiben und so zu ändern, dass du die Werte im Aufruf übergibst.
Im head:
Code: |
<script type=\"text/javascript\">
function changeValue(EMPFname, EMPFzusatz, EMPFstrasse, EMPFort){
var nameChanger = document.getElementById('name');
nameChanger.value = EMPFname;
var zusatzChanger = document.getElementById('zusatz');
zusatzChanger.value = EMPFzusatz;
var strasseChanger = document.getElementById('strasse');
strasseChanger.value = EMPFstrasse;
var ortChanger = document.getElementById('ort');
ortChanger.value = EMPFort;
}
</script>
|
Und inner Schleife
Code: |
<img src='images/bg_insert.png' value='$id' onclick='changeValue(\"$name\", \"$zusatz\", \"$strasse\", \"$ort\")'>
|
p.s. deine ' und " sind komisch normalerweise schreibt man im html " und im javascript '. Also ... onClick="foo('bar');"... . Und son riesiges echo is auch grausig ;P
p.p.s. und for schleifen sind auch toll ;P for($i = 0; $i < $num; $i++), dann steht alles was dazugehört an einer stelle und nicht, wie bei dir das $i++ gaaanz unten
|
|
|
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
Mi 09.12.09 23:36
|
|
AH GEIL!
Funktioniert genauso wie ich mir das erhoffte.
Naja, bin ja noch am lernen - hab dank Kai.
Ehrlich gesagt hab ich das vorher schon probiert gehabt, es scheiterte aber dann an den Variablen.
Vielmals Dank. =D
Kamel hat Folgendes geschrieben |
p.s. deine ' und " sind komisch normalerweise schreibt man im html " und im javascript '. Also ... onClick="foo('bar');"... . Und son riesiges echo is auch grausig ;P
|
Naja, im Javascript wars ja nur weil sich das ganze im PHP-Block befand, und der mag keine " darum ' ansonsten hätte ich an jeder Stelle \" schreiben müssen und da verliert man schnell den Überblick.
Und wegen dem echo - hmmm... muss ich mir bei gelegenheit nochmal angucken.
Kamel hat Folgendes geschrieben |
p.p.s. und for schleifen sind auch toll ;P for($i = 0; $i < $num; $i++), dann steht alles was dazugehört an einer stelle und nicht, wie bei dir das $i++ gaaanz unten
|
Sicherlich nicht perfekt, aber funktional. ^^
Und da es ja momentan eh bloß für den Hausgebrauch ist, denk ich isses erst mal ausreichend.
|
|
|
|
|
Beiträge: 3864
Wohnort: Frankfurt
Geburtstag: 04.08.1983
|
|
Do 10.12.09 0:32
|
|
Baldi_SOS hat Folgendes geschrieben |
AH GEIL!
...
Kamel hat Folgendes geschrieben |
p.s. deine ' und " sind komisch normalerweise schreibt man im html " und im javascript '. Also ... onClick="foo('bar');"... . Und son riesiges echo is auch grausig ;P
|
Naja, im Javascript wars ja nur weil sich das ganze im PHP-Block befand, und der mag keine " darum ' ansonsten hätte ich an jeder Stelle \" schreiben müssen und da verliert man schnell den Überblick.
Und wegen dem echo - hmmm... muss ich mir bei gelegenheit nochmal angucken.
...
|
Man kann in php ja auch Strings mit ' abgrenzen, dann passt das auch mit den html ". echo '<a href="foo">...';
Und wenn man da so riesen Blöcke drinnenhat, die garkeine Variablen benutzen kann man auch einfach das php zwischendurch schließen
<?php tolle schleife { php code ?> html <?php und mehr php } ?>
wobei das auch nich sooo toll is
|
|
|
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
Do 15.07.10 21:27
|
|
Ok, mal wieder ne Frage bei der ich einen Lösungsansatz brauche.
Ich brauch für ne Website so ne art "Notification Popup", das hab ich jetzt mehr oder weniger schon angefangen und hab dafür ein <div> das per Javascript entweder dargestellt, oder nicht dargestellt wird.
Nunja, das Problem ist folgendes wie krieg ich das ganze so verpackt dass das "Popup" nach beispielsweise 5sek wieder automatisch verschwindet?
Das Javascript sieht momentan so aus:
Code: |
function fade(obj) {
var el = document.getElementById(obj);
if ( el.style.display != "none" ) {
el.style.display = 'none';
}
else {
el.style.display = '';
}
}
|
Das ganze wird dann halt bloß per
aufgerufen. Dann wirds aber bloß dargestellt.
Jemand ne Lösung parat? Kai? ^^
Edit:
Ok, hat sich erledigt... hab mittlererweile rausgefunden das man das ganze noch anders gesalten kann.
|
|
|
|
|
Beiträge: 5432
Wohnort: Duisburg
Geburtstag: 04.12.1970
|
|
Do 15.07.10 22:04
|
|
window.setTimeout("win.close()",10000);
?
|
|
|
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
Do 15.07.10 22:24
|
|
Ich hab das jetzt per onLoad im Body gelöst.
Per php wird überprüft ob die Sache notwendig ist, und wenn ja wird folgendes ausgeführt:
Code: |
setTimeout('document.getElementById(\'notif\').style.visibility=\'hidd en\'',4000);"
|
|
|
|
|
|
Beiträge: 1546
Wohnort: BO
Geburtstag: 23.05.1949
|
|
Fr 16.07.10 13:20
|
|
Guck' Dir bei Gelegenheit jQuery an. Das erspart Dir viel Javascript-Zu-Fuß.
|
|
|
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
Fr 15.10.10 23:26
|
|
So, ich mal wieder.
Problem ist folgendes, ich bräuchte mal nen Codeschnipsel in JavaScript welches folgendes für mich erledigt:
Wenn ein <input>-Feld nicht mehr leer ist, soll dahinter ein Bild dargestellt werden. Bild wäre in dem Falle ein Haken um zu kennzeichnen, dass das Feld ausgefüllt worden ist.
Falls mal jemand Zeit hat, wäre ich sehr dankbar - irgendwie steh ich mit dem JavaScript auf Kriegsfuß...^^
|
|
|
|
|
Beiträge: 3864
Wohnort: Frankfurt
Geburtstag: 04.08.1983
|
|
Sa 16.10.10 10:47
|
|
Theoretisch so:
onKeyDown="if(this.value != ''){this.style.backgroundImage='url("http://mypsn.eu.playstation.com/p sn/profile/baldisos.png");';}"
Nur irgendwie funktioniert das bild setzen nich und ich kapiert grad nicht, wieso ^^
|
|
|
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
Sa 16.10.10 13:31
|
|
Theoretisch müsste das doch auch über den CSS-Umweg gehen, oder? Also wenn dann this.value != '' ist, dann ist das div in dem das Bild ist style="display: block;" ansonsten ists "display: none;".
Kannst du mir das mal nach Javascript übersetzen? ^^
|
|
|
|
|
Beiträge: 3864
Wohnort: Frankfurt
Geburtstag: 04.08.1983
|
|
Sa 16.10.10 13:49
|
|
Achso "dahinter Bild" != "Hintergrundbild"...
Dann müsste das sowas sein, wie
onKeyDown="if (this.value != '')document.getElementById('IDVOMDIV').style.display='block';else document.getElementById('IDVOMDIV').style.display='none';"
|
|
|
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
Sa 16.10.10 14:05
|
|
Sieht schon mal gut aus, kann ich aber im Moment nicht testen - ich geb bescheid wenn ichs ausprobiert hab. Aber schon mal danke.
|
|
|
|
|
Beiträge: 5548
Geburtstag: 26.02.1990
|
|
So 17.10.10 15:43
|
|
Ok, hab grade mal getestet - funktioniert irgendwie garnicht. ^^
Aber mal noch nen anderen Ansatz, wenn man das ganze in ne Funktion packt, die eben überprüft ob das Input-Feld leer ist und wenn ja ein Bild darstellt und wenn nein ein anderes Bild. Also das quasi bloß die source im Image-Tag ausgetausch wird.
Dass das Ganze mit .images[bildname].src = '../images/bla.png'; geht hab ich schon mal rausgekriegt, aber wie krieg ich das in ne Funktion?
|
|
|
|
|
|
|