php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


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! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 03-02-2008, 17:45
kasIQ
 Registrierter Benutzer
Links : Onlinestatus : kasIQ ist offline
Registriert seit: Mar 2005
Beiträge: 148
kasIQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard Array und Schleife

hallo

hab ein problem mit einer schleife
PHP-Code:
function CE_readoutFields($db,$gettblname){                                                
$sqlfield mysql_query("SHOW FIELDS FROM $db.".$gettblname." ");
    
    while(
$rowfield[] = mysql_fetch_array($sqlfield)){        
        
        
$t_rowfield $rowfield;
    }
    
    return 
$t_rowfield;
        
}

$showField CE_readoutFields("dbname""tbl_test");

foreach(
$showField as $key =>$showFieldName){
    echo 
$key.$showFieldName['Field'];                        

rufe ich nun diese funktion auf und lasse es mir mit einer forech schleife
anzeigen bekomme ich immer einen durchlauf mehr heraus als was für ein ergebnis in der funktion raus kam.

Ist es weil der Zeiger wieder zurückspringt?Wie kann ich das unterbinden? kann mir da jemand von euch helfen?

Geändert von kasIQ (03-02-2008 um 19:10 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 03-02-2008, 18:01
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

1. was soll das leerzeichen am ende?
PHP-Code:
$sqlfield mysql_query("SHOW FIELDS FROM $db.".$gettblname." "); 
2. wieso arbeitest du hier mit einem array?
PHP-Code:
while($rowfield[] = mysql_fetch_array($sqlfield)) 
3. und da nicht?
PHP-Code:
$t_rowfield $rowfield
4. in diesem fall brauchst du keine while-schleife, ein einfaches
PHP-Code:
$rowfield mysql_fetch_array($sqlfield
reicht völlig aus. und das kannst du zurückgeben

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 03-02-2008, 18:32
kasIQ
 Registrierter Benutzer
Links : Onlinestatus : kasIQ ist offline
Registriert seit: Mar 2005
Beiträge: 148
kasIQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hallo kropff

danke für die schnelle antwort .

zu 1. gehört da nicht hin ...hatte vorher noch ne where klausel drin

zu2. und 3.
weil es funktioniert ! ;.)
hier liegt irgendwo der fehler dass bei zb bei 5 einträgen die foreach schleife 6 mal durchlaufen wird

zu 4.brauch doch ne while schleife, da ja mehrere Spalten in meiner tabelle drin sind, deren namen ich angezeigt bekommen möchte,
mache ich keine schleife bekomme ich doch nur den ersten eintrag angezeigt. ...aber das weisst du ja
Mit Zitat antworten
  #4 (permalink)  
Alt 03-02-2008, 18:46
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
while($rowfield mysql_fetch_array($sqlfield))
{        
    
$t_rowfield[] = $rowfield;
}

return 
$t_rowfield
so ist zumindest sinnvoll.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #5 (permalink)  
Alt 03-02-2008, 18:59
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
da ja mehrere Spalten in meiner tabelle drin sind
deswegen brauchst du aber keine schleife, da es nur ein(!) datensatz ist, bestehend aus einem(!) array.
PHP-Code:
$sqlfield mysql_query('SHOW FIELDS FROM '.$db.'.'.$gettblname);
$rowfield mysql_fetch_array($sqlfield);
print_r($rowfield); 
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #6 (permalink)  
Alt 03-02-2008, 18:59
kasIQ
 Registrierter Benutzer
Links : Onlinestatus : kasIQ ist offline
Registriert seit: Mar 2005
Beiträge: 148
kasIQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo TobiaZ

das hätte ich auch gedacht.


funzt aber net..

print_r($t_rowfield); ist leer!
Mit Zitat antworten
  #7 (permalink)  
Alt 03-02-2008, 19:08
kasIQ
 Registrierter Benutzer
Links : Onlinestatus : kasIQ ist offline
Registriert seit: Mar 2005
Beiträge: 148
kasIQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@kropff

nein es sind mehrer DS

zb ID[Field],int(5) unsigned [Type] ,auto_increment [Extra]..
TableName [Field],varchar(50) [Type] ,.....
FG_USer[Field], tinyint(1) [Type] ....

die lese ich alle in de schleife aus und packe das ergebnis in ein array

welches ich mit der foreach schleife wieder auseinanderpflücke...was auch alles prima funktioniert. bis auf den einen durchlauf zuviel.
Mit Zitat antworten
  #8 (permalink)  
Alt 03-02-2008, 19:14
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
funzt aber net..

print_r($t_rowfield); ist leer!
code zeigen!
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #9 (permalink)  
Alt 03-02-2008, 19:18
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
nein es sind mehrer DS
stimmt, hast recht. habe noch nie mit so einer abfrage gearbeitet.
Zitat:
print_r($t_rowfield); ist leer!
und was ergibt ein
PHP-Code:
$sqlfield mysql_query('SHOW FIELDS FROM '.$db.'.'.$gettblname) or die (mysql_error()); 
gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #10 (permalink)  
Alt 03-02-2008, 19:46
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
function CE_readoutFields($db,$tbl)
{
                                                
  
$res mysql_query("SHOW FIELDS FROM " $db "." $tbl);
  while(
$row mysql_fetch_array($res))
  { 
    
$fields[] = $row;
  }

  return 
$fields;

}



$fields CE_readoutFields("dbname""tbl_test");

foreach(
$fields as $fiels)
  echo 
$field['Field'];

EDIT:
Ungetestet, den erste Tippfehler hab ich schon beseitigt.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!

Geändert von TobiaZ (03-02-2008 um 19:56 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 03-02-2008, 19:50
kasIQ
 Registrierter Benutzer
Links : Onlinestatus : kasIQ ist offline
Registriert seit: Mar 2005
Beiträge: 148
kasIQ ist zur Zeit noch ein unbeschriebenes Blatt
Cool

PHP-Code:

//Tabellenattribute wie Field, Type usw einer 
//beliebigen Tabelle werden in einem array geparkt
function CE_readoutFields($db,$gettblname){  
                                              
$sqlfield mysql_query("SHOW FIELDS FROM $db.".$gettblname." ");
    
    while(
$rowfield[] = mysql_fetch_array($sqlfield)){        
        
       
// $t_rowfield = $rowfield; unnötig
    
}
    
    return 
$t_rowfield;
        
}


//array wird auseinandergepflückt und ich lasse mir 
//die Tabellenspalten und deren Typ anzeigen
$showField CE_readoutFields("dbname""tbl_test");

foreach(
$showField as $key =>$showFieldName){
    echo 
$key.$showFieldName['Field'].$showFieldName['Type'];                        

wie gesagt alles wunderbar fehler werden nicht angezeigt ..
das einzige problm ist der eine durchlauf der foreach schleife zuviel

dieser stört bei der weiteren abarbeitung in meinem weteren code.

ich hatte das auch alles schon zum funktionieren gebracht , jedoch ist meine platte mit dem code vorgestern gecrasht und ich habe keien Ahnung mehr was das Ausschlaggebende zum funktionieren dieses Codes war. Kommt Zeit kommt Rat..

Geändert von kasIQ (03-02-2008 um 20:12 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 03-02-2008, 19:54
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
    while($rowfield[] = mysql_fetch_array($sqlfield)){        
        
        
$t_rowfield $rowfield;
    }
    
    return 
$t_rowfield
Das ist total überflüssig. Unsinnigerweise überschreibst du $_rowfeld immer wieder. Dann lass es lieber ganz raus und verwende nur $rowfeld. (siehe mein snippet)

Danach mal ne testausgabe vom Array machen, erhält es die gewünschte Struktur und Inhalt?

Zitat:
wie gesagt alles wunderbar fehler werden nicht angezeigt ..
das einzige problm ist der eine durchlauf der foreach schleife zuviel

dieser stört bei der weiteren abarbeitung in meinem weteren code.
Wie gesagt, testausgabe des Arrays (gerne auch mal hier posten)
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #13 (permalink)  
Alt 03-02-2008, 19:56
kasIQ
 Registrierter Benutzer
Links : Onlinestatus : kasIQ ist offline
Registriert seit: Mar 2005
Beiträge: 148
kasIQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Tobiaz

ja das mit deinem Code ist besser, doch lasse dir mal den

$key anzeigen bei der schleife und du wirst feststellen , dass da ein durchlauf zuviel ist.
PHP-Code:
foreach($fields as $key => $fiels){

echo 
$key.$field['Field'];


kannst das ja mal mit ner beliebigen Tabelle versuchen

und wehe das klappt bei dir ;-)
Mit Zitat antworten
  #14 (permalink)  
Alt 03-02-2008, 19:58
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Hab meinen Code noch mal angepasst, jetzt sollte es besser sein. Und wenn du noch ein mal postest, dass es nicht geht, ohne endlich das Array auszugeben, ...

Da wird nämlich wahrscheinlich ein "false" drin stehen, was jedoch kein array ist.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #15 (permalink)  
Alt 03-02-2008, 20:05
kasIQ
 Registrierter Benutzer
Links : Onlinestatus : kasIQ ist offline
Registriert seit: Mar 2005
Beiträge: 148
kasIQ ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:

ergebnis des arrays
();

Array ( 
[
0] => Array ( [0] => ID [Field] => ID [1] => int(5unsigned [Type
=> 
int(5unsigned [2] => NO [Null] => NO [3] => PRI [Key] => PRI
 
[4] => [Default] => [5] => auto_increment [Extra] => 
auto_increment 

[
1] => Array ( [0] => TableName [Field] => TableName [1] => 
varchar(50) [Type] => varchar(50) [2] => NO [Null] => 
NO [3] => UNI [Key] => UNI [4] => [Default] => [5] => 
[
Extra] => ) 

[
2] => Array ( [0] => FG_SU [Field] => FG_SU [1] => 
tinyint(1) [Type] => tinyint(1) [2] => NO [Null] => NO [3] =>
 [
Key] => [4] => [Default] => [5] => [Extra] => )

[
3] => Array ( [0] => FG_ADMIN [Field] => FG_ADMIN [1] => 
tinyint(1) [Type] => tinyint(1) [2] => NO [Null] => NO [3] =>
 [
Key] => [4] => [Default] => [5] => [Extra] => ) 

[
4] => Array ( [0] => FG_USER [Field] => FG_USER [1] => 
tinyint(1) [Type] => tinyint(1) [2] => NO [Null] => NO [3] => 
[
Key] => [4] => [Default] => [5] => [Extra] => ) 


[
5] => ) //??? 

ergbnis von $key.fiels['Field'];

0ID
1TableName
2FG_SU
3FG_ADMIN
4FG_USER
5
//Tabelle hat nur aber nur 5 DS 

Geändert von kasIQ (03-02-2008 um 20:09 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:37 Uhr.