+ Antworten
Ergebnis 1 bis 7 von 7

Thema: Suchen und Ersetzen...

  1. #1
    TP-Junior wetteronkel macht alles soweit korrekt
    Registriert seit
    Oct 2007
    Ort
    Kiel
    Beiträge
    7

    Suchen und Ersetzen...

    Moin Moin...

    ein weiteres Mal stehe ich vor einem Problem und weiß nicht weiter.
    ich habe ein Array.

    $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

    nun möchte ich jedem Buchstaben ein $ voranstellen.

    Wie mache ich das ?

    Danke für jeden Tip...

    Gruss aus Kiel
    Peter H.

  2. #2
    TP-Specialist rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE rewboss ist ein richtiges Arbeitstier - DANKE Avatar von rewboss
    Registriert seit
    Mar 2005
    Ort
    Unterfranken
    Beiträge
    2.639
    Ich verstehe deine Frage nicht.

    Du hast also dieses Array:

    $array1["a"] enthält den Wert 1;
    $array1["b"] enthält den Wert 2;
    und so weiter.

    Jetzt aber willst du, dass es nicht mehr $array1["a"] heißt, sondern $array1['$a']?

    In dem Fall, müsste es mit einfachen Anführungszeichen gehen:

    Code:
    $array1 = array('$a'=>1, '$b'=>2, '$c'=>3, '$d'=>4, '$e'=>5);
    Mit doppelten Anführungszeichen wird der String nämlich geparst, und alles, wo ein $ vorangestellt wird, wird als Variable ausgewertet. Mit einfachen Anführungszeichen passiert das nämlich nicht.

  3. #3
    DSB
    DSB ist offline
    TP-Veteran DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Oder meinst Du sowas?
    PHP-Code:
    $array1 = array('a'=>1'b'=>2'c'=>3'd'=>4'e'=>5);
    foreach (
    $array1 as $key=>$val)
    {
        $
    $key=$val;
    }
    echo 
    'Zuweisung beendet.<br>Z.B. hat $c jetzt den Wert '.$c
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  4. #4
    TP-Junior wetteronkel macht alles soweit korrekt
    Registriert seit
    Oct 2007
    Ort
    Kiel
    Beiträge
    7
    Moin Moin...,

    im Prinzip ja, das Problem war etwas diffizieler, wie das meist so ist und ich jetzt nicht ellenlangen Programmcode zitieren wollte.

    Letzlich war es aber im Prinzip so wie du und dein Vorgänger schrieb.

    Das Kernproblöem ist eigentlich etwas anderes, was ich in Verbindung mit Arrays habe.
    Ic h muss dazu sagen, ich komme noch aus einer Zeit wo man mit Basic arbeitete... und mit PHP fing ich erst vor 1,5 Jahren an.
    Bisher bracuhte ich keine Arrays, konnte mich anders behelfen, aber jetzt sitz ich vor dem Problem :-)

    Hintergrund, ich habe eine HTML Seite in der zum Beispiel folgender Code ist.
    HTML-Code:
                <select id="Auswahlfeld2" name="anrede">
                 <option value="Herr">Herr</option>
                 <option value="Frau" SELECTED>Frau</option>
                 <option value="Firma">Firma</option>
                 <option value="Organisation">Organisation</option>
                </select>
    Ich möchte nun diesen Code nach PHP transferierten und zwar so, das in Abhängigkeit von Variablen das "Selected" an der richtigen Stelle steht.

    Diese Variablen stehen in einem Array namens $info.
    Das Array selbst ist inhaltlich so aufgebaut.
    PHP-Code:
    $info = array('anrede'=>Herr'vorname'=>Peter'schuhgroesse'=>42); 
    Der Witz ist doch der, das ich das HTML Programm mit
    PHP-Code:
    $index2 count($file_array) ; selbst in ein Array packe
    Was haben wir jetzt, ein eindimensionales Array mit meinem HTML Code und ein zweidimensionales Array mit Variablennamen und Variableninhalt.

    Wie gehe ich weiter vor ?
    Als erstes nehme ich mir Zeile für Zeile des HTML Programms vor, prüfe ob Schlüsselwörter darin enthalten sind.

    select id und name , Wenn ja, dann prüfe ich, ob das was in "" steht in meinem zweiten Array zu finden ist.
    Wenn ja, merke ich mir den Inhalt der entsprechenden variable.
    Wenn ich mir nun die nächste Zeile vornehme prüfe ich wieder auf Schlüsselwörter.
    option value

    Okay, ist dort nun dieser gemerkte Wert vorhanden, baue ich den String zu Fuß neu zusammen. Wenn nicht, lösche ich aus dem String das SELECTED heraus.

    So zu8mindest die Theorie:
    und das mache ich tatsächlich:
    PHP-Code:
    $index1 ;
    $index2 count($file_array) ;
    while (
    $index1 $index2) {
        
    $line $file_array[$index1];
        if (
    eregi('input'$line)) {
           
    $q ;
           while (
    $q $n) {
              
    $q ++ ;
              
    // in $schluessel[$q]. stehen die Variablennamen die Übergeben worden sind, also z.B. "anrede" .
              // in $tausch[$q] stehen die Inhalte zu den Variablen , also z.B. "Herr"
              
    $suchmuster '/value=""/';
              
    $wennabfrage 'name="'.$schluessel[$q].'"';  
              
    $suchmuster '/value=""/';
              
    $ersetzung 'value="$'.$schluessel[$q].'"';
              if (
    eregi($wennabfrage$line)) {
                
    $line preg_replace($suchmuster$ersetzung$line);
              }
           }
        }
    $line htmlentities($line) ;
    if (
    eregi("SELECTED"$line)) {
      
    $line ereg_replace("SELECTED"""$line);
      
    $line ereg_replace(" """$line);
    }
    $q ;
    while (
    $q $z) {
      if (
    eregi("option value="$line)) {
          if (
    eregi($tausch[$q], $line)) {
             
    $line "<option value=\"".$tausch[$q]."\" SELECTED>".$tausch[$q]."</option>" ;
          }
      }
    $q++ ;

    Ergebnis:
    Ich bekomme die ehemals HTML Seite nun als PHP Produkt mit den zuvor eingegeben Werten nochmals auf dem Bildschirm präsentiert, und kann nun entsprechend der gemachten Eingaben reagieren.
    Oder anders gesagt: Ich will, das die Eingaben NOCHMAL auf dem Bildschirm angezeigt werden mit der Möglichkeit diese zu korrigieren zu können.
    Erst mit dem Setzen eines, Ja ich habe es geprüft Häckchens, wird das Formular auch endgültig weiterverarbeitet.

    Hört sich simple an, aber der Aufwand ist doch etwas größer, weil die Routine universell fuhnktionieren soll. Hab ich mich verständlich ausgedrückt.

    Vorschläge, Ideen, Routinen, Denkanstöße sind jederzeit willkommen, zumal ich dabei nur lernen kann.

    Gruss aus Kiel
    Peter

  5. #5
    DSB
    DSB ist offline
    TP-Veteran DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    PHP ist eine Skriptsprache, die HTML generiert.
    Deine Vorgehensweise PHP mit HTML zu füttern, dieses von PHP parsen zu lassen, um letztlich daraus wieder eine HTML-Seite zu generieren ist aus meiner Sicht absolut .

    Lass PHP alle HTML-Teile der Seite generieren und bediene Dich beim Zusammenbau der Seite an den übertragenen POST-Variablen. Damit kannst Du sehr leicht eine Selectliste aufbauen und das gewählte Feld vorselektieren.
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

  6. #6
    TP-Junior wetteronkel macht alles soweit korrekt
    Registriert seit
    Oct 2007
    Ort
    Kiel
    Beiträge
    7
    Hallo DSB,
    Vielen Dank für das wobei ich das so sehe
    Nein Spass beiseite, Ernst komm her, denn ernst kann schon laufen.

    Nun zu deinem Vorschlag, denn den hab ich nicht begriffen.

    Ich habe eine HTML Seite mit ein paar Inputs darauf.
    HTML-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Home</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    </head>
    <body bgcolor="#FFFFCC" TEXT="#000000">
     <table>
      <tr valign="top" align="left">
       <td width="548">
        <form name="FORMULAR" action="programm.php" method="POST">
         <table border="0" cellspacing="0" cellpadding="0">
          <tr valign="top" align="left">
           <td></td>
           <td width="498">
            <table id="Tabelle1" border="0" cellspacing="2" cellpadding="2" width="100%">
             <tr>
              <td width="100">
               <p>Anrede</p>
              </td>
              <td width="350">
               <p>
                <select id="Auswahlfeld1" name="anrede">
                 <option value="Herr" SELECTED>Herr</option>
                 <option value="Frau">Frau</option>
                 <option value="Firma">Firma</option>
                </select>
               </p>
              </td>
             </tr>
             <tr>
              <td>
               <p>Vorname</p>
              </td>
              <td>
               <p><input id="Eingabefeld1" type="text" name="vorname" value="" size="40" maxlength="40">&nbsp;</p>
              </td>
             </tr>
             <tr>
              <td>
               <p>Name</p>
              </td>
              <td>
               <p><input id="Eingabefeld2" type="text" name="name" value="" size="40" maxlength="40">&nbsp;</p>
              </td>
             </tr>
             <tr>
              <td colspan="2">
               <table>
                <tr>
                 <td><input type="submit" name="senden" value="Absenden" id="Schaltflaeche1"></td>
                </tr>
               </table>
              </td>
             </tr>
            </table>
           </td>
          </tr>
         </table>
        </form>
       </td>
      </tr>
     </table>
    </body>
    </html>
    natürlich habe ich nach dem Absenden die Informationen der POST-variablen zur Verfügung, aber ich verstehe, Entschuldige, nicht ganz, wie ich das nach deiner Ansicht umsetzen soll.
    War mein Gedanke so verkehrt ?
    Hab ich da irgendwo irgendwas nicht ganz mitbekommen?

    Um die Seite erneut anzuzeigen muss ich sie doch nach PHP transferieren, denn ich will ja nicht einfach nur die Werte ausgeben sondern auch optisch im gleichen Rahmen bleiben und die Original HTML Seite nicht überschreiben.
    Die Handling mit HTML und Variablen leuchtet mir eh nicht ganz ein von daher hab ich mich auf PHP etwas fixiert.

    Nach dem Senden stehen mir Schlüssel und Wert zur Verfügung.
    Diese Informationen wollte ich nun benutzen um die Seite neu aufzubauen.
    Wenn du jedoch eine einfachere Lösung haben solltest, dann möchte ich dich bitten mir diesen Weg aufzuzeigen. Ich hab ja manchmal ein Brett vor dem ....
    Aber im Moment kann ich deinen Gedankengang nicht folgen.

    Gruss, Peter

  7. #7
    DSB
    DSB ist offline
    TP-Veteran DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE DSB ist ein richtiges Arbeitstier - DANKE Avatar von DSB
    Registriert seit
    Mar 2005
    Ort
    Weyhe
    Beiträge
    1.137
    Mach ein sogenanntes Affen-Formular.
    Die Seite, die das Formular ausgibt, ist auch die, die es auswertet und validiert.
    So kannst Du entsprechend auf die getätigten Eingaben reagieren.
    Hier mal ein Beispiel mit einer dynamisch generierten Select-Liste, die den jeweils gewählten Wert selektiert. Die Vorgehensweise ist bei Formularen immer die gleiche:
    - Eingabevariablen definieren oder aus der POST-Umgebung abholen
    - Eingaben validieren und eventuell (Fehler)Meldungen ausgeben
    - Formular mit den bis jetzt ermittelten Werten ausgeben

    Diese Vorgehensweise hat den Vorteil, dass bereits eingetragene Eingaben nicht verloren gehen und der User das Formular so zur Korrektur vorgelegt bekommt.

    Hier ein funktionsfähiges Beispiel mit allen Aspekten (wäre eventuell sogar was für die Code-Snippets?):
    PHP-Code:
    <?php
    // Funktion zum generieren einer Select-Liste
    function make_select($value,$name,$active)
    {
        
    $a="";
        
    reset($value);
         
    $a.="\n<select name=\"$name\"\">\n";
        foreach(
    $value as $key=>$val)
        {
            
    $a.="<option value=\"".$key."\"";
            if (
    $key==$active$a.=" selected";
            
    $a.=">".$val."</option>\n";
        };

        
    $a.="</select>\n";
        return 
    $a;
    }

    // die moeglichen Selektionen definieren
    $automarken=array('bitte waehlen','Fiat','Opel','Audi','Porsche');
    $budget=array('bitte waehlen',5000,15000,25000,50000);
    $auswertung='';

    // Variablen mit Werten vorbelegen, damit sie auch beim Erstaufruf definiert sind
    $selektierte_automarke=isset($_POST['selektierte_automarke']) ? intval($_POST['selektierte_automarke']):0;
    $selektiertes_budget=isset($_POST['selektiertes_budget']) ? intval($_POST['selektiertes_budget']):0;
    // 0 wird genommen, wenn nichts ausgewählt ist

    if (isset($_POST['abgeschickt'])) // nur wenn das Formular abgeschickt wurde, existiert diese Variable
    {
        
    // da hat jemand auf den "Senden"-Button gedrückt -> mal sehen, was der so eingegeben hat
        // Pruefen, ob die gewaehlte Automarke ueberhaupt in unserem Array ist
        
    if (!isset($automarken[$selektierte_automarke])) die('Du Schuft! Lass das Manipulieren der Variablen sein!');
        if (!isset(
    $budget[$selektiertes_budget])) die('Du Schuft! Lass das Manipulieren der Variablen sein!');
        if (
    $selektiertes_budget<$selektierte_automarke)
        {
            
    $auswertung='Und wovon tr&auml;umst Du nachts?<br>Ist schon klar, einen '.$automarken[$selektierte_automarke];
            
    $auswertung.=' f&uuml;r '.$budget[$selektiertes_budget].' - schick mir die Adresse vom H&auml;ndler wenn Du was findest.';
        }
        if (
    $selektiertes_budget==$selektierte_automarke)
        {
            
    $auswertung='Ja, das passt.';
        }

        if (
    $selektiertes_budget>$selektierte_automarke)
        {
            
    $auswertung='Jo, da kannste gleich ein paar mehr kaufen, wo die da so billig sind. ;)';
        }

    }
    ?>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>Home</title>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    </head>
    <body bgcolor="#FFFFCC" TEXT="#000000">

    <?php
    if ($auswertung>'') echo $auswertung;
    ?>

    <form action="test.php" method="POST">
    Automarke:
    <?php
    echo make_select($automarken,'selektierte_automarke',$selektierte_automarke);
    ?>
    <br><br>
    Budget:
    <?php
    echo make_select($budget,'selektiertes_budget',$selektiertes_budget);
    ?>
    <br><br>
    <input type="submit" name="abgeschickt" value="Abschicken">
    </form>
    </body>
    </html>
    Gruß, DSB
    Einfaches Backup/ Restore Deiner MySQl-Datenbank
    Zend Certified Engineer PHP5

+ Antworten

Aktive Benutzer

Aktive Benutzer

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

     

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