PHP - mit Javascript Style ändern


Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

akl

Grünschnabel
#1
Ist es möglich in einer PHP Datei zwischendurch Javascript einzusetzen um einen Style zu ändern?

PHP:
...
if (isset ($_POST['Suche'])) {

    $vorgabeName = htmlspecialchars($_POST['Suche']);
    $sucheGestartet = True;  
    ?>
      <script>
      document.getElementById("suchePseudo").style.display = "visible";
      </script>
    <?php
}
...
 

akl

Grünschnabel
#3
Danke.
Was für Stolpersteine können mir über den Weg laufen? So wie ich den Code oben gepostet habe, funktioniert die Änderung des Styles leider nicht.
 

basti1012

Erfahrenes Mitglied
#4
vieleicht solltest du mal erklären was du genau vor hast dann könnte man bestimmt eine Lösung finden.Nur bei den kleinen Code kann ich mir nicht mal was zusammen dichten was das werden soll.
 

akl

Grünschnabel
#5
Ich habe vor, nach einer Texteingabe eine Tabelle anzeigen zu lassen. Der Beispielcode zeigt die Abfrage der Variable die eingegeben wird. Sobald dies geschehen ist, soll das Javascript das display auf visible stellen.
 

EuroCent

KlappStuhl 2.0
#6
Gibt es denn die ID "suchePseudo" überhaupt?

Lass dir per alert() eine Meldung ausgeben oder per console.log() :)
Damit du sehen kannst, ob JS überhaupt was macht bzw. ob er da überhaupt in eine IF-Bedingung rein springt :)

Um deine Frage zu beantworten ob dir da was in die Steine gelegt werden kann: Ja kann es, in dem zum Beispiel dein Code nicht funktioniert. :)

Hier kannst du es auch Testen: WriteCodeOnline - PHP | write and run php code online (sehr zu Empfehlen)

Mein Beispiel gibt da $_POST['suche'] einen Wert hat, Test als Popup aus :)
PHP:
<?php
$_POST['suche'] = "Test";

if(isset($_POST['suche'])) {
?>
<script>alert("Test");</script>
<?php
}
?>
 

Sempervivum

Erfahrenes Mitglied
#7
document.getElementById("suchePseudo").style.display = "visible";
Du hast da display und visibiltiy durcheinander gebracht:
visible ist ein Wert von visibility
Für display musst Du block oder inline oder flex oder ... verwenden.
 

akl

Grünschnabel
#9
@EuroCent Also das console.log() hat mir vorerst weitergeholfen! Hier habe ich dann gesehen "Cannot read property 'style' of null". Ich habe dann gesehen, dass mein Code an sich passt wenn ich den Aufruf später im Code starte... Klingt auch logisch^^

@Sempervivum Ja stimmt. Ich habe mich dann doch für visibility entschieden.

Diese Erkenntnisse helfen mir aber nicht mit meinem Problem. Die $_POST['suche'] erhält eine Variable die der Benutzer eingibt, mit der ich eine Datenbankabfrage mache. Diese Abfrage wird dann in einem Table ausgegeben, welche ich aber erst darstellen will sobald der Benutzer was eintippt.
Das ganze sieht so aus:
PHP:
if (isset ($_POST['Suche'])) {
    $vorgabeName = htmlspecialchars($_POST['Suche']);
    $sucheGestartet = True;  
    ?>
      <script>
      document.getElementById("suchePseudoTabelle").style.visibility = "visible";
      console.log();
      </script>
    <?php
}
else {
    $vorgabeName = 'Bestellung/ArtNr/EAN/HAN';
    $sucheGestartet = False;    
}

if(sucheGestartet)   {
$serverName4 = "server";
$connectionOptions4 = array("Database"=>"database",
"Uid"=>"login", "PWD"=>"pass");
//Establishes the connection
$conn4 = sqlsrv_connect($serverName4, $connectionOptions4);

//Start Pseudos
$suchePseudos = "abfrage";

//Executes the query
$getSuchePseudos = sqlsrv_query($conn4, $suchePseudos);
//Error handling
if ($getSuchePseudos == FALSE)
die(FormatErrors(sqlsrv_errors()));
    }
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<fieldset>
<label>Suche: <input type="text" size="50" name="Suche" value="<?php echo $vorgabeName; ?>"></label>
</fieldset>  
</form>
</br>
   
<?php
if(sucheGestartet){
while($rowSuche = sqlsrv_fetch_array($getSuchePseudos, SQLSRV_FETCH_ASSOC))
{
$datenSuche[] = $rowSuche;
}        
    ?>    
<table id="suchePseudoTabelle" method="POST" class="tabelle" border="1" data-role="table" data-mode="columntoggle" data-column-btn-text="Spalten" >
      <thead>
        <tr>
          <th data-priority="1">Bestellung</th>  
          <th data-priority="2">ExterneNr</th>
        </tr>
      </thead>
      <tbody>
    <?php
    foreach ($datenSuche as $inhaltSuche) {
    ?>
        <tr>
            <td>
                <?php echo $inhaltSuche['Bestellung']; ?>
            </td>  
            <td>
                <?php echo $inhaltSuche['ExterneNr']; ?>
            </td>    
      </tr>
    <?php
    }    
}
    ?>
      </tbody>
    </table>  
    <?php
   
sqlsrv_free_stmt($getSuchePseudos);
Kann ich das Script in der If-Abfrage erst auslösen lassen, sobald das document vollständig geladen ist?
 

Sempervivum

Erfahrenes Mitglied
#10
Du läufst Da in einen beliebten Fehler: Die Tabelle versuchst Du sichtbar zu machen bei Zeile 6. Die selbe Tabelle wird jedoch erst bei Zeile 48 generiert, d. h. wenn das Skript abläuft, existiert sie noch gar nicht. Du musst das Skript nach dem Anlegen der Tabelle generieren oder auf DOM-ready abfragen.

Wenn ich das richtig überblicke, brauchst Du jedoch gar kein Javascript: Du kannst ja in PHP die POST-Variable suche abfragen und davon abhängig die Tabelle generieren oder nicht:
Code:
if (!empty($_POST['Suche'])) {
// Hier die Tabelle generieren
 

akl

Grünschnabel
#11
Ich will die Tabelle aber schon früher haben, damit sich später die View nicht zu sehr verschiebt, sobald Inhalt in der Tabelle ist. Deine vorgeschlagene Version hatte ich schon verworfen^^

Mit window.onload funktioniert es wie ich es haben möchte. Ich danke Dir!
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…