Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.
Hey also Ajax kannst du natürlich für die Bearbeitung von bestimmten Datensätzen benutzen. Sprich löschen, bearbeiten, erstellen eines Eintrages der Datenbank.
Aber für mich hört sich das so an, als ob du immer die kompletten > 700 Einträge ausliest? Wenn ja würde sich vllt eine Aufteilung auf Seiten anbieten. z.B. pro Seite werden nur 50 Datensätze ausgelesen. Würde die Sache schonmal aufjedenfall beschleunigen.
|
|
HTML Code |
1 2 3 |
<div id="DATEN_1"><span>Datensatz</span><a onClick="ajax('loeschen','1')">LÖSCHEN</a></div> <div id="DATEN_2"><span>Datensatz</span><a onClick="ajax('loeschen','2')">LÖSCHEN</a></div> <div id="DATEN_3"><span>Datensatz</span><a onClick="ajax('loeschen','3')">LÖSCHEN</a></div> |
|
|
JavaScript Code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
function ajax(was,id){ ajaxid = id; action = was; //erstellen des requests var req = null; try{ req = new XMLHttpRequest(); } catch (ms){ try{ req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (nonms){ try{ req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (failed){ req = null; } } } if (req == null) alert("Error creating request object!"); //anfrage erstellen (GET, url mit den GET Variablen, //request ist asynchron req.open("GET", 'AJAX.php?action='+action+'&id='+ajaxid, true); //Beim abschliessen des request wird diese Funktion ausgeführt req.onreadystatechange = function(){ switch(req.readyState) { case 4: if(req.status!=200) { alert("Fehler:"+req.status); }else{ //schreibe die antwort in den div container mit der richtigen id document.getElementById('DATEN_'+ajaxid).innerHTML = req.responseText; // HIER WIRD DIE DIV NEU BEFÜLLT: bei Delete mit nichts, bei edit mit aktuellen Daten } break; default: return false; break; } }; req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); req.send(null); } |
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php //AJAX.php ... $id = $_GET['id']; switch ($_GET['action']){ case 'loeschen': dbquery("DELETE...."); // Keine Ausgabe => Div wird leer break; case 'editieren': dbquery("UPDATE...."); //Wichtig, das wird der akutualisierte Inhalt!! echo '<span>Datensatz</span><a onClick="ajax(\"loeschen\",\"'.$id.'\")">LÖSCHEN</a>'; break; } ?> |
This post has been edited 2 times, last edit by "student2312" (Nov 25th 2008, 8:30pm)
Warum liest du denn eigentlich alle Einträge auf einmal aus, also wie SnowFlake schon meinte. Mehrere Seiten und pro Seite 20 Einträge o.ä.
) Ajax-Kenntnisse zu erweitern und Viel zu lernen.|
|
HTML Code |
1 |
<div id="DATEN_1"><span>Datensatz</span><a onClick="ajax('loeschen','1')">LÖSCHEN</a></div> |
|
|
JavaScript Code |
1 |
req.open("GET", 'AJAX.php?action='+action+'&id='+ajaxid, true); |
|
|
JavaScript Code |
1 2 3 4 5 |
switch(req.readyState) { case 4: if(req.status!=200) { alert("Fehler:"+req.status); }else{ //Daten kommen verarbeitet zurück |
|
|
JavaScript Code |
1 |
document.getElementById('DATEN_'+ajaxid).innerHTML = req.responseText; |
|
|
PHP Quellcode |
1 2 |
$conn = mysql_connect('localhost','root') or exit(mysql_error()); mysql_select_db('MeineDatenbank', $conn) or exit(mysql_error()); |
|
|
PHP Quellcode |
1 2 3 |
if(isset($_GET['action'])){ //Hier die Aktionen (z.B. mit switch) } |
Mir fällt grad auf, dass du zum editieren von Datensätzen evtl. Probleme mit der GET übergabe bekommst . Brauchst du das Script nur zum löschen oder auch zum editieren?
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 |
<? $dbuser="root"; $dbpass=""; $dbhost="localhost"; $dbname="database"; $Verbindung=mysql_connect($dbhost,$dbuser,$dbpass) or die ("DB Verbindung gescheitert"); $db=mysql_select_db($dbname,$Verbindung) or die ("DB wurde nicht gefunden"); ?> |
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
<html> <body> <? include ("verbindung.php"); //**************Funktion zum Auslesen der Datensätze************************************************************************** function datenarray ($Abfrage) { $res = mysql_query ($Abfrage); while($daten=mysql_fetch_array($res)) { $speicher[]=$daten; } return $speicher; } //*************Löschen******************************************************************************************************** if($_POST["cmd_loeschen"] && $_POST["opt_haken"]) { $loeschsatz=$_POST["opt_haken"]; foreach($loeschsatz as $delete_id) { $Abfrage="delete from pc where id = $delete_id"; echo "$Abfrage<br>"; $res=mysql_query($Abfrage); } } //*************Einfügen******************************************************************************************************* if($_POST["cmd_einfuegen"]) { mysql_query("insert into pc (`id`,`hersteller`) values('".$_POST["txt_id"]."','".$_POST["txt_hersteller"]."')"); $res=mysql_query($sql); } //*************Ändern und Speichern******************************************************************************************* if($_POST["cmd_aendern"]) { $auswahl=$_POST['opt_haken']; echo "<form action='' method='post'>"; foreach($_POST['opt_haken'] as $id) { $abfrage= mysql_query("select * from pc where id=$id"); $data= mysql_fetch_array($abfrage); echo"<br><br>Hersteller: <input type='Text' name='txt_hersteller[$id]' value='".$data['hersteller']."' size='20' maxlength='30'><br>"; echo"<br>ID: <input type='Text' name='txt_id[$id]' value='".$data['id']."'size='8' maxlength='6'><br>"; } echo"<br><input type='Submit' name='cmd_speichern' value='Speichern'>"; echo"</form>"; } elseif($_POST["cmd_speichern"]) { foreach($_POST["txt_hersteller"] as $changeid => $neu) { $Abfrage="update pc set hersteller='$neu' where id=$changeid"; mysql_query($Abfrage); } foreach($_POST["txt_id"] as $changeid => $neu) { $Abfrage="update pc set id='$neu' where id=$changeid"; mysql_query($Abfrage); } } //**************************************************************************************************************************** $Abfrage = "select * from pc order by id"; $daten = datenarray($Abfrage); $anz = count($daten); ?> <h2>Tabelle: PC</h2> <form action="" method="post"> <? echo"<table border=1>"; echo"<tr> <th></th> <th>ID</th> <th>Hersteller</th> </tr>"; for ($i=0;$i<$anz;$i++) { echo "<tr> <td><input type='checkbox' name='opt_haken[]' value='".$daten[$i]["id"]."'></td> <td>".$daten[$i]["id"]."</td> <td>".$daten[$i]["hersteller"]."</td> </tr>"; } echo "</table>"; echo "<br><input type='Submit' name='cmd_loeschen' value='Löschen'></input>"; echo "<br><br><input type='Submit' name='cmd_aendern' value='Ändern'>"; echo "<br><br><h4>Neuen Datensatz einfügen</h4>"; echo "Hersteller: <input type='text' name='txt_hersteller' value='$abschluesse'size='20' maxlength='50'></input>"; echo "<br>ID:<input type='text' name='txt_id' size='20' maxlength='5'>"; echo "<br><br><input type='Submit' name='cmd_einfuegen' value='Einfügen'>"; ?> </body> </html> |
This post has been edited 1 times, last edit by "Billie" (Nov 26th 2008, 4:21pm)
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 |
echo '<div style="position:fixed;bottom:50px;">'; echo "<br><input type='Submit' name='cmd_loeschen' value='Löschen'></input>"; echo "<br><br><input type='Submit' name='cmd_aendern' value='Ändern'>"; echo "<br><br><h4>Neuen Datensatz einfügen</h4>"; echo "Hersteller: <input type='text' name='txt_hersteller' value='$abschluesse'size='20' maxlength='50'></input>"; echo "<br>ID:<input type='text' name='txt_id' size='20' maxlength='5'>"; echo "<br><br><input type='Submit' name='cmd_einfuegen' value='Einfügen'>"; echo '</div>'; |
|
|
PHP Quellcode |
1 2 3 |
if(!isset($_POST["cmd_aendern"])){ #Datensätze laden# } |
This post has been edited 2 times, last edit by "student2312" (Nov 26th 2008, 8:38pm)
Hm ich bin wirklich nicht sicher, ob das mit AJAX am besten gelöst ist... Löschen und Hinzufügen wäre kein Problem, aber wenn du Editieren willst, wird es dann schon deutlich aufwendiger weil du zu jedem Datensatz ein Textfeld brauchst, dass dann erscheint.
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 |
echo"<table border=1 id='tabelle'>"; for ($i=0;$i<$anz;$i++) { echo "<tr id='spalte".$daten[$i]["id"]."'> <td><input type='checkbox' name='opt_haken[]' value='".$daten[$i]["id"]."'></td> <td>".$daten[$i]["id"]."</td> <td>".$daten[$i]["hersteller"]."</td> </tr>"; } echo "</table>"; |
|
|
JavaScript Code |
1 |
function ajaxPost(url, postData, callback, action) { |
|
|
PHP Quellcode |
1 2 3 4 5 |
echo "<br><input type='button' name='cmd_loeschen' value='Löschen' onClick='ajaxPost(\'ajax.php\', \'ajax&\'+getFormData(\'opt_haken\'),\'tabelle\',\'loeschen\');'>"; echo "<br><br><input type='Submit' name='cmd_aendern' value='Ändern'>"; echo "Hersteller: <input type='text' name='txt_hersteller' value='$abschluesse'size='20' maxlength='50' id='insert_text'>"; echo "<br>ID:<input type='text' name='txt_id' size='20' maxlength='5' id='insert_text'>"; echo "<br><br><input type='button' name='cmd_einfuegen' value='Einfügen' onClick='ajaxPost(\'ajax.php\', \'ajax&\'+getFormData(\'opt_haken\')+\'&neuer_text=\'+insert_text.value,\'tabelle\',\'einfuegen\');'>"; |
|
|
JavaScript Code |
1 |
req.open('POST', url+'?myaction='+action, true); |
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$action = $_GET['myaction']; switch($action){ case 'loeschen': if($_POST['opt_haken']){ $loeschsatz=$_POST["opt_haken"]; foreach($loeschsatz as $delete_id) { $Abfrage="delete from pc where id = $delete_id"; echo "$Abfrage<br>"; $res=mysql_query($Abfrage); } } break; case 'einfuegen': break; } |
|
|
JavaScript Code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
req.onreadystatechange = function() { if (req.readyState == 4 && req.status == 200) { if(action == 'loeschen'){ /*Elemente verstecken - wieder mit einem Teil der getFormData Funktion (umständlich)*/ for(var i=0; i<document.getElementById('tabelle').elements.length; i++) { var el = form.elements[i]; var type = (el.type || ''); if(type.match(/^(text|hidden|textarea)$/i) || (type.match(/^(radio|checkbox)$/i) && el.checked)) { add(el.name, el.value); } else if(el.nodeName.match(/^select$/i)) { for(var j=0; j<el.options.length; j++) { if(el.options[j].selected) { /*Sollte die gewünschten Spalten verstecken*/ document.getElementById('spalte'+el.options[j].value).style.display = 'none'; } } } } } } }; |
.|
|
JavaScript Code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
function ajaxPost(url, postData, callback, action) { var req; try { req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { req = null; if (req == null) alert("Error creating request object!"); } req.onreadystatechange = function() { if (req.readyState == 4 && req.status == 200) { if(action == 'loeschen'){ for(var i=0; i<document.getElementById('tabelle').elements.length; i++) { var el = form.elements[i]; var type = (el.type || ''); if(type.match(/^(text|hidden|textarea)$/i) || (type.match(/^(radio|checkbox)$/i) && el.checked)) { add(el.name, el.value); } else if(el.nodeName.match(/^select$/i)) { for(var j=0; j<el.options.length; j++) { if(el.options[j].selected) { document.getElementById('spalte'+el.options[j].value).style.display = 'none'; } } if(typeof callback == 'string') callback = document.getElementById(callback); if(callback) callback.innerHTML = req.responseText; } } } } }; req.open('POST', url+'?myaction='+action, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(postData); return false; } |
|
|
PHP Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
<html> <body> <? include ("verbindung.php"); //**************Funktion zum Auslesen der Datensätze************************************************************************** function datenarray ($Abfrage) { $res = mysql_query ($Abfrage); while($daten=mysql_fetch_array($res)) { $speicher[]=$daten; } return $speicher; } //*************Operationen**************************************************************************************************** $action = $_GET['myaction']; switch($action){ case 'loeschen': if($_POST['opt_haken']){ $loeschsatz=$_POST["opt_haken"]; foreach($loeschsatz as $delete_id) { $Abfrage="delete from tabelle where id = $delete_id"; echo "$Abfrage<br>"; $res=mysql_query($Abfrage); } } //break; //case 'einfuegen': //break; } //*************Einfügen******************************************************************************************************* if($_POST["cmd_einfuegen"]) { mysql_query("insert into pc (`id`,`hersteller`) values('".$_POST["txt_id"]."','".$_POST["txt_hersteller"]."')"); $res=mysql_query($sql); } //**************************************************************************************************************************** $Abfrage = "select * from tabelle order by id"; $daten = datenarray($Abfrage); $anz = count($daten); ?> <h2>Tabelle: Hersteller</h2> <form action="" method="post"> <? echo"<table border=1 id='tabelle'>"; for ($i=0;$i<$anz;$i++) { echo "<tr id='spalte".$daten[$i]["id"]."'> <td><input type='checkbox' name='opt_haken[]' value='".$daten[$i]["id"]."'></td> <td>".$daten[$i]["id"]."</td> <td>".$daten[$i]["title"]."</td> </tr>"; } echo "</table>"; echo "<br><input type='button' name='cmd_loeschen' value='Löschen' onClick='ajaxPost(\'ajax.php\', \'ajax&\'+getFormData(\'opt_haken\'),\'tabelle\',\'loeschen\');'>"; echo "<br><br><input type='Submit' name='cmd_aendern' value='Ändern'>"; echo "Hersteller: <input type='text' name='txt_hersteller' value='$abschluesse'size='20' maxlength='50' id='insert_text'>"; echo "<br>ID:<input type='text' name='txt_id' size='20' maxlength='5' id='insert_text'>"; echo "<br><br><input type='button' name='cmd_einfuegen' value='Einfügen' onClick='ajaxPost(\'ajax.php\', \'ajax&\'+getFormData(\'opt_haken\')+\'&neuer_text=\'+insert_text.value,\'tabelle\',\'einfuegen\');'>"; ?> </body> </html> |
Ja, da gehört es auch hin.
Funktioniert es mit /" statt /'?
lOA7BsQY...j2Q%3D%3D (Linie 2)
|
|
JavaScript Code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
function ajaxPost(url, postData, callback, action) { var req; try { req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { req = null; if (req == null) alert("Error creating request object!"); } req.onreadystatechange = function() { if (req.readyState == 4 && req.status == 200) { if(action == 'loeschen'){ ajaxPost(\'ajax.php\', \'ajax&\'+getFormData(\'opt_haken\'),\'tabelle\',\'loeschen\'); <== den hier meine ich for(var i=0; i<document.getElementById('tabelle').elements.length; i++) { var el = form.elements[i]; var type = (el.type || ''); if(type.match(/^(text|hidden|textarea)$/i) || (type.match(/^(radio|checkbox)$/i) && el.checked)) { add(el.name, el.value); } else if(el.nodeName.match(/^select$/i)) { for(var j=0; j<el.options.length; j++) { if(el.options[j].selected) { document.getElementById('spalte'+el.options[j].value).style.display = 'none'; } } if(typeof callback == 'string') callback = document.getElementById(callback); if(callback) callback.innerHTML = req.responseText; } } } } }; req.open('POST', url+'?myaction='+action, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(postData); return false; } |
|
|
JavaScript Code |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
function ajaxPost(url, postData, callback, action) { var req; try { req = window.XMLHttpRequest ? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { req = null; if (req == null) alert("Error creating request object!"); } req.onreadystatechange = function() { if (req.readyState == 4 && req.status == 200) { if(action == 'loeschen'){ for(var i=0; i<document.getElementById('tabelle').elements.length; i++) { var el = tabelle.elements[i]; var type = (el.type || ''); if(type.match(/^(checkbox)$/i) && el.checked)) { //Nicht ganz sicher hier document.getElementById('spalte'+el.value).style.display = 'none'; } } } } } req.open('POST', url+'?myaction='+action, true); req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); req.send(postData); return false; } |