| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

27-11-2008, 15:50
|
|
fritzje610
Registrierter Benutzer
|
|
Registriert seit: Mar 2004
Ort: Nahe der schönen Loreley
Beiträge: 311
|
|
Abfrageergebnis in bestimmte Form bringen
Hallo zusammen,
anbei folgendes Script:
PHP-Code:
<?php
require_once("../functions/db_connection.php");
if ($_GET['id'] == "abc") {
$query = "SELECT * FROM glaeserlisten WHERE hersteller = 'abc'";
$result = mysql_query($query);
if (!$result)
{
die ('Ungültige Abfrage: ' . mysql_error());
}
while($row = mysql_fetch_assoc($result))
{
print_r($row);
}
echo <<<HERE_DOC
[ {optionDisplay: 'Wert1'}, {optionDisplay: 'Wert2'}, {optionDisplay: 'Wert3'}]
HERE_DOC;
}
?>
Nach dem query habe ich ein Ergebnisarray, das beim print_r auch den erwarteten Inhalt hat. Was ich aber nicht weiß, wie ich die Werte nun nacheinander, soviele wie eben da sind, in automatisch die {optionDisplay: 'Wert'}, - Form bekomme. D.h. das was zwischen den [ ] steht muss entsprechend der Anzahl der zurückgegebenen Werte erweitert werden, so das alle in dieser Form da drin stehen.
Das Ganze wird hier in ein Dropdown übernommen
Code:
<script type="text/javascript" src="/js/jQuery.js"></script>
<script type="text/javascript" charset="utf-8">
$(function(typ){
$("select#glashersteller_re").change(function(){
$.getJSON("/js/test.php",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option>' + j[i].optionDisplay + '</option>';
}
$("select#glasart_re").html(options);
})
})
})
</script>
Im Moment weiss ich nicht wie ich das angehen soll. Erster Ansatz wäre erstmal anstatt dem print_r die Ergebnisse in ein array zu schreiben. Aber dann ???
Bitte um Hilfe !
Gruß
Michael
__________________
Gruß
Michael
Geändert von fritzje610 (27-11-2008 um 15:57 Uhr)
|

27-11-2008, 19:47
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
na statt print_r in der Schleife halt optionDisplay davor und dahinter noch [_und ] und ein , wenn es nicht die erste Ausgabe ist...
|

28-11-2008, 08:25
|
|
fritzje610
Registrierter Benutzer
|
|
Registriert seit: Mar 2004
Ort: Nahe der schönen Loreley
Beiträge: 311
|
|
Guten Morgen,
ich hab jetzt ein paar Sachen ausprobiert, aber irgendwie komme ich auf keinen grünen Zweig. Mit einer Variablen klappt das:
PHP-Code:
while($row = mysql_fetch_assoc($result))
{
$var = $row['beschreibung'];
}
echo <<<HERE_DOC
[{optionDisplay: '$var'}]
HERE_DOC;
Das funktioniert auch. Nur wie kriege ich das über ne Schleife alles hintereinander? Ich hatte es mal so probiert:
PHP-Code:
echo <<<HERE_DOC
while($row = mysql_fetch_assoc($result))
{
[{optionDisplay: '$row["glastyp"]'}]
}
HERE_DOC;
Aber dann kommt in der js-Funktion gar nichts mehr an.
Ich verstehe das so, dass das js zählt wieviele Werte als hinzuzufügende Optionen zu erwarten sind, aber dazu müssen die Werte ja so verfügbar sein:
PHP-Code:
echo <<<HERE_DOC
[{optionDisplay: 'Wert1'}, {optionDisplay: 'Wert2'}, und so weiter]
HERE_DOC;
Wenn ich das in der while-Schleife mache, muss doch irgendwas links vom = stehen? Irgendwie hab ich gerade die Hirnblockade schlechthin. Könnt ihr mir bitte auf die Sprünge helfen? Danke ! ! !
Gruß
Michael
__________________
Gruß
Michael
|

28-11-2008, 09:18
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Re: Abfrageergebnis in bestimmte Form bringen
PHP-Code:
$bla = true;
echo "[";
while($row = mysql_fetch_assoc($result))
{
if ($bla) $bla = false;
else echo ", ";
echo "{optionDisplay: '" . $row["glastyp"] . "'}";
}
echo "]";
|

28-11-2008, 11:10
|
|
fritzje610
Registrierter Benutzer
|
|
Registriert seit: Mar 2004
Ort: Nahe der schönen Loreley
Beiträge: 311
|
|
Hi,
bevor ich deine Antwort lesen konnte, ich war mit dem Auto zwischen zwei Werksstandorten unterwegs, ist es mir dann auch gedämmert. Man ist ab und an sowas von blind. Unglaublich. Trotzdem vielen Dank für deine Hilfe !
Gruß
Michael
__________________
Gruß
Michael
|

12-06-2009, 09:17
|
|
Paul78
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 6
|
|
Guten Morgen,
genau das selbe Problem habe ich auch bekomme es aber nicht gelöst ..
PHP-Code:
$mysql = new mysql(); $mysql->connect(); //$sql = "SELECT * FROM region WHERE status='1' AND la_id='".$_GET['id']."'"; $sql = "SELECT * FROM region WHERE status='1' AND la_id='1'"; //echo "SQL: ".$sql; $result = $mysql->query($sql);
echo "[ ";
while ($r = $mysql->fetch_object()) { $string .= "{optionValue:".$r->rg_id.", optionDisplay: '".$r->region."'}, "; } $neu = substr($string, 0, -2); echo "$neu ]";
$mysql->end();
was mach ich da falsch? rufe ich die Seite direckt auf bekomme ich folgende ausgabe:
HTML-Code:
[ {optionValue:98, optionDisplay: 'Baden-Württemberg'}, {optionValue:99, optionDisplay: 'Bayern'}, {optionValue:100, optionDisplay: 'Berlin'}, {optionValue:101, optionDisplay: 'Brandenburg'}, {optionValue:102, optionDisplay: 'Bremen'}, {optionValue:103, optionDisplay: 'Hamburg'}, {optionValue:104, optionDisplay: 'Hessen'}, {optionValue:105, optionDisplay: 'Mecklenburg-Vorpommern'}, {optionValue:106, optionDisplay: 'Niedersachsen'}, {optionValue:107, optionDisplay: 'Nordrhein-Westfalen'}, {optionValue:108, optionDisplay: 'Rheinland-Pfalz'}, {optionValue:109, optionDisplay: 'Saarland'}, {optionValue:110, optionDisplay: 'Sachsen'}, {optionValue:111, optionDisplay: 'Sachsen-Anhalt'}, {optionValue:112, optionDisplay: 'Schleswig-Holstein'}, {optionValue:113, optionDisplay: 'Thüringen'} ]
Trage ich diese manuell in das ursprungs script ein (welches keien ausgabe aus der DB hat) geht es!!!
WO ist der gedanken Fehler?
|

12-06-2009, 09:20
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Wieso die Werte nicht einfach in einem Array speichern und mit json_encode() an JavaScript übergeben? Das würde auch gleich alle Probleme mit eventuellen Sonderzeichen lösen.
PHP-Code:
$sql = " SELECT rg_id AS optionValue, region AS optionDisplay FROM region WHERE status = 1 AND la_id = 1 "; $result = $mysql->query($sql);
$regions = array(); while ($row = $result->fetch_assoc()) { $regions[] = $row; }
echo json_encode($regions);
Man muss sich ja nicht absichtlich das Leben schwer machen.
Geändert von h3ll (12-06-2009 um 09:27 Uhr)
|

12-06-2009, 09:22
|
|
Paul78
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 6
|
|
sorry kannst du mir da etwas auf die sprünge helfen wie würde man das machen ...? leider habe ich da keine erfahrung ...
und ich halte mich an dem problem schon seit tagen auf... Danke
|

12-06-2009, 09:54
|
|
Paul78
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 6
|
|
habe es soweit angepasst ...
PHP-Code:
$mysql = new mysql(); $mysql->connect();
$sql = "SELECT rg_id AS optionValue, region AS optionDisplay FROM region WHERE status = '1' AND la_id ='1'";
$result = $mysql->query($sql);
$regions = array(); while ($row = $mysql->fetch_assoc()) {
$regions[] = $row; }
echo json_encode($regions); $mysql->end();
leider wechselt sich das "bäumchen" zweite select box nicht ... was muss ich an diesem JS noch anpassn?
Code:
$(function(){
$("select#land").change(function(){
$.getJSON("select.php",{id: $(this).val(), ajax: 'true'}, function(j){
var options = '';
for (var i = 0; i < j.length; i++) {
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
$("select#region").html(options);
})
})
})
|

12-06-2009, 10:04
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
while ($row = $mysql->fetch_assoc()) {
Bist du sicher, dass fetch_assoc() bzw. fetch_object() eine Methode von $mysql ist?
Liefert der PHP-Code überhaupt das gewünschte Ergebnis, hast du das überprüft? Sonst macht es keinen Sinn im Javascript-Code rumzusuchen.
P.S.: Warum hast du die Hochkomma, die ich extra bei den Zahlen rausgenommen habe, wieder dazu geschrieben? Hochkommas kennzeichnen einen String, und keine Zahl.
Geändert von h3ll (12-06-2009 um 10:07 Uhr)
|

12-06-2009, 10:10
|
|
Paul78
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 6
|
|
es sind functionen die ich nutze ...
PHP-Code:
function fetch_assoc($qid = '') { if($qid == NULL) { $r = mysql_fetch_assoc($this->results); } else { $r = mysql_fetch_assoc($qid); } if(is_null($r)) { echo get_class($this) . '::fetch_assoc() could not run: ' . mysql_error(); } else { return $r; } }
function fetch_object($qid = '') { if($qid == NULL) { $r = mysql_fetch_object($this->results); } else { $r = mysql_fetch_object($qid); } if(is_null($r)) { echo get_class($this) . '::fetch_object() could not run: ' . mysql_error(); } else { return $r; } }
die ausgabe siehst du hier http://ferien-haus-suche.de/select.php es ist der direckte aufruf der datei ...
|

12-06-2009, 10:19
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Wieso verwendest du nicht gleich das objektorientierte mysqli statt einer langsamen Klasse, die auf dem veralteten mysql aufbaut? Mal davon abgesehen, dass es so wie es programmiert ist, nicht wirklich objektorientiert ist, sondern einfach nur prozeduraler Code hübsch verpackt in einer Klasse.
Lass dir im Javascript-Code paar Werte mit alert() ausgeben, und überprüfe ob das drin steht, was du erwartest.
|

12-06-2009, 10:55
|
|
Paul78
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 6
|
|
per alert()?
ich habe JS leider so gut wie nie benutzt ... aber wenn ich das ganze nicht dynamisch mache d.h.mit dem orginal script mache
PHP-Code:
<?php if ($_GET['id'] == 1) { echo <<<HERE_DOC [ {optionValue: 0, optionDisplay: 'Mark'}, {optionValue:1, optionDisplay: 'Andy'}, {optionValue:2, optionDisplay: 'Richard'}] HERE_DOC; } else if ($_GET['id'] == 2) { echo <<<HERE_DOC [{optionValue:10, optionDisplay: 'Remy'}, {optionValue:11, optionDisplay: 'Arif'}, {optionValue:12, optionDisplay: 'JC'}] HERE_DOC; } else if ($_GET['id'] == 3) { echo <<<HERE_DOC [{optionValue:20, optionDisplay: 'Aidan'}, {optionValue:21, optionDisplay:'Russell'}] HERE_DOC; }?>
#
klappt es .. ich kann sogar die inhalte austauschen dann geht es ... nur nicht wenn ich es mit der DB anfrage mache
|

12-06-2009, 10:58
|
|
Paul78
Registrierter Benutzer
|
|
Registriert seit: Jun 2009
Beiträge: 6
|
|
problem gefunde ...
der include für die DB connection war fehlerhaft ... DANKE DANKE
aber die änderrungs empfehlung hat auch dazu bei getragen ...
du sagst das meine DB verbindung sinnlos bzw. langsam ist kannst du mir da etwas besseres emfehlen?
|

12-06-2009, 11:08
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|