CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
14.11.2004, 14:14:09
|
Anfänger
|
|
Registriert seit: Nov 2004
Beiträge: 8
|
|
explode werte per mysql_query laden
Hallo!
Habe ein Problem was mir ziemliches Kopfzerbrechen seit tagen beschert, hoffe ihr könnt mir helfen, schonmal Danke im vorraus.
Es geht im prinzip darum das in einen Mysql_query aus einer tabelle alle werte ausgelesen werden bei denen (where) die id = array ist.
das array kam zustande weil der wert aus der Tabelle für das array ($kid) in dem Format ist : "1|5|4 ", nun hab ich mit explode die "|" entfernen lassen, raus kommt logischerweise ($kid_array= "154" ).
Bei der nächsten myql_query anfrage soll er nun die tabellen zeilen laden bei denen (where) die id aus der zeile = $kidarray ist, also soll er so gesehen die zeilen laden die die id = 1 , id = 5 und die id = 4 haben, aber das macht der irgendwie nicht , bin am verzweifeln, hoffe ich hab es gut erklärt, ist ziemlich kompliziert.
Hier ist der code:
<?
$result1 = mysql_query("select * from s_kategorien where id = {$HTTP_GET_VARS['kategorie']}");
while ($row = mysql_fetch_object($result1))
{
$kid = $row->kid;
$kid_array = explode("|",$kid);
for ($i=0; $i<count($kid_array); $i++)
$result = mysql_query("select * from s_unterkategorien where id = '$kid_array[$i]' order by name LIMIT {$HTTP_GET_VARS['start']}, $ds_anzahl");
while ($row = mysql_fetch_object($result))
{
$id = $row->id;
$kategorie1 = $row->kategorie;
$artikelnummer = $row->artikelnummer;
$name = $row->name;
$beschreibung = $row->beschreibung;
$bild = $row->bild;
$preis = $row->preis;
$preis_vorzeichen = $row->preis_vorzeichen;
$status = $row->status;
$variante1 = $row->variante1;
$variante2 = $row->variante2;
$variante3 = $row->variante3;
$variante4 = $row->variante4;
$variante5 = $row->variante5;
$variante6 = $row->variante6;
$variante7 = $row->variante7;
$variante8 = $row->variante8;
$variante_a = $row->variante_a;
$variante_b = $row->variante_b;
$preis = number_format($preis,2,",",".");
?>
|
14.11.2004, 14:31:49
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
willkommen im forum!
auch wenn du neu bist, darfst du die [php]-tags für mehrere zeilen code benutzen.
hast du mal
echo "select * from s_unterkategorien where id = '$kid_array[$i]' order by name LIMIT {$HTTP_GET_VARS['start']}, $ds_anzahl"
echo gemacht?
zweitens: wieso {$HTTP_GET_VARS['start']}, aber '$kid_array[$i]' ? da fehlen m.e. nach {}.
drittens: du schreibst schlüsselworte in deinen sql-abfragen mal groß, mal klein...das ist nicht grade übersichtlich...
viertens: warum so umständlich:
for ($i=0; $i<count($kid_array); $i++)
?
foreach( $kid_array as $value )
tuts auch.
fünftens: mal auf einen sql-error geprüft?
|
14.11.2004, 15:13:35
|
Anfänger
|
|
Registriert seit: Nov 2004
Beiträge: 8
|
|
Also hab deine Vorschläge mal zu herzem genommen, danke schonmal
Jetzt ist es so:
Er lädt jetzt immer nur die zeile die mit der letzten zahl aus dem array übereinstimmt, also bei zb. |1|2|3 lädt er die zeile mit der id=3 aus der tabelle und bei zb. |1|2|4 lädt er eben der nur die zeile aus der tabelle bei der die id = 4 ist.
Aber es sollte ja so sein das er alle zeilen mit der id läd und nicht nur immer die ,die mit der letzten übereinstimmt. hoffe ihr könnt mir helfen!
so sieht der veränderte php code nun aus:
PHP-Code:
<?
$result1 = mysql_query("select * from s_kategorien where id = {$HTTP_GET_VARS['kategorie']}");
while ($row = mysql_fetch_object($result1))
{
$kid = $row->kid;
$kid_array = explode("|",$kid);
foreach( $kid_array as $value );
$result = mysql_query("select * from s_unterkategorien where id = '{$value}' order by name LIMIT {$HTTP_GET_VARS['start']}, $ds_anzahl");
while ($row = mysql_fetch_object($result))
{
$id = $row->id;
$kategorie1 = $row->kategorie;
$artikelnummer = $row->artikelnummer;
$name = $row->name;
$beschreibung = $row->beschreibung;
$bild = $row->bild;
$preis = $row->preis;
$preis_vorzeichen = $row->preis_vorzeichen;
$status = $row->status;
$variante1 = $row->variante1;
$variante2 = $row->variante2;
$variante3 = $row->variante3;
$variante4 = $row->variante4;
$variante5 = $row->variante5;
$variante6 = $row->variante6;
$variante7 = $row->variante7;
$variante8 = $row->variante8;
$variante_a = $row->variante_a;
$variante_b = $row->variante_b;
$preis = number_format($preis,2,",",".");
?>
|
14.11.2004, 15:30:16
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
In der zweiten While-Schleife speicherst du die Ergebnisse der MySQL-Abfrage in dem Objekt $row. Das ist nicht sonderlich sinnvoll, da somit das Objekt der ersten While-Schleife überschrieben wird.
Hier mal der modifizierte Code.
Dann noch ein paar Sachen:
- Warum soll ich nicht SELECT * schreiben?
- Was soll die ganzen überflüssigen Leerzeilen?
- Wo sind die fehlenden schließenden geschweiften Klammern?
- Einrücken steigert die Lesbarkeit des Quelltextes ungemein.
- Auch MySQL-Queries kann man einrücken.
|
14.11.2004, 15:45:50
|
Anfänger
|
|
Registriert seit: Nov 2004
Beiträge: 8
|
|
VIELEN DANK !!!!!
es funzt nun wunderbar :) ihr steht nun alle in meinen buch der coolen leute heheh ;)
Ich wäre nicht draufgekommen das der die werte der §row überschreibt, ist zwar logisch aber hätt ich nicht dran gedacht :) DANKE!
Deine Vorschläge werd ich mir auch merken, die geschweiften Klammern aber hatte ich schon nur ich hab euch nur einen auszug aus meinen gesamt code gezeigt, deswegen hast du die geschweiften klammern net gesehen weil die ja am ende waren.
ok nochmal vielen dank ^^
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 16:16:32 Uhr.
|