2016-09-29 7 views
-2

Ich habe bereits nach einer Antwort gesucht, aber ich verstehe, wie man eine Warnung von php erreicht Ich weiß nur nicht, was ich an diesem bestimmten Stück Code falsch mache.
Ich hatte dies funktioniert, bis ich die if-Anweisung hinzugefügt habe.cant echo javascript alarm von php

if ($errors) { 
     echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 
    } else { 
     echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 
    } 

Es funktionierte gut, als es gerade war.

 echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 

Wenn Kommentar alles und nur das tun,

 echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 

das wird nicht funktionieren. Ich bin so verwirrt. Es macht keinen Sinn, warum die zweite Warnung nicht funktioniert.

Ich habe vergessen zu erwähnen, In der if-Anweisung von oben funktioniert die erste Warnung, es ist diese zweite Warnung, die ich nicht auslösen kann.

Sorry wegen der Verwirrung, der $ Fehler ist ein bool. Wenn es wahr ist, wurde ein Filw hochgeladen, wenn falsch, war es nicht.

+1

Überprüfen Sie Ihre Javascript-Konsole auf Fehler. – Barmar

+0

Ich habe versucht, Ihren Code, es hat gut funktioniert. Das Problem ist woanders, oder Sie haben es nicht korrekt kopiert. – Barmar

+0

Ich stimme @Barmar zu, dass Ihr Code für mich in Ordnung ist. Anders als die mehrdeutige Natur Ihrer '$ errors' -Variable (wenn sie wahr ist - zeigt an, dass/are/errors - es wird Sie auf die Seite bringen, die besagt, dass Dinge in Ordnung sind), alles funktioniert gut. Vielleicht können Sie zeigen, wie die '$ errors' Variable gesetzt ist? –

Antwort

0

Ich denke, Sie tun das Gegenteil von dem, was Sie wollen: Ihr wenn Fall nicht die Aktion im Inneren entspricht. Vielleicht sollten Sie tun:

if (!$errors) { 
     echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 
    } else { 
     echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 
    } 

und Sie können auch bis auf echo Worte sparen - und machen es besser lesbar - etw wie tun:

echo <<<HTML 
<script type='text/javascript'> 
    alert('Records Were Uploaded'); 
    window.location.href = 'EmployeePicker.php'; 
</script> 
HTML; 

nur, wenn Sie wollen :)


[EDIT] Beachten Sie, dass nach $errors halten (entweder Integer oder Array), können Sie überprüfen, dass es keinen Fehler durch !$errors wenn Int Eger oder !count($errors) wenn Array.


[EDIT] Der Versuch, Ihr zweites Stück Code als eigenständige

Wenn Sie verfolgen müssen, was falsch ist, dass Sie nach und nach isolieren müssen! ersten Versuch code 1 als eine neue PHP-Datei, wenn es nicht auf Ihrem System alarmiert und umleiten dann ist etwas in Ihren Konfigs falsch. Wenn es funktioniert, stimmt etwas in Ihrer Code Logik nicht. konnte ich auch, indem zuerst die $errors var auf 1 oder 0.

Code 1

<?php 
$errors = 1; 

    echo "<script type='text/javascript'>"; 
    echo "alert('There was a problem with your file');"; 
    echo "window.location.href = 'csvUpload.php';"; 
    echo "</script>"; 

?> 

Code 2

<?php 
$errors = 1; 
if ($errors) { 
     echo "<script type='text/javascript'>"; 
     echo "alert('Records Were Uploaded');"; 
     // echo "window.location.href = 'EmployeePicker.php';"; 
     echo "</script>"; 
    } else { 
     echo "<script type='text/javascript'>"; 
     echo "alert('There was a problem with your file');"; 
     // echo "window.location.href = 'csvUpload.php';"; 
     echo "</script>"; 
    } 
?> 

Und über Ihre $errorscode 2 ohne pb laufen var, wenn "true" keinen Fehler bedeutet, sollten Sie es definitiv in "sth" umbenennen, wie zB $uploadSuccessful. ;)

+0

Ja, er hat das 'if' rückwärts. Aber die Frage sagt, dass der zweite Block von Echos fehlschlägt, wenn er das "if" ganz herausnimmt. Es gibt also ein anderes Problem. – Barmar

+0

@Barmar, die Frage wurde bearbeitet, seit wir geantwortet haben. Die Antwort ist möglicherweise nicht korrekt. Ich werde später überprüfen :) – antoni

+0

Die Bearbeitung ist nur die Zeile, die mit "Sorry" beginnt. Nicht der Code. – Barmar

0

Es sollte gut aussprechen. Versuchen Sie, Ihre PHP-Fehlerprotokolldatei zu überprüfen, um festzustellen, ob es Hinweise auf das Problem gibt.

Nur eine kleine höchstwahrscheinlich persönliche Vorliebe von mir, die Ihnen helfen kann, ist es, die Logik ein wenig zu trennen. Siehe unten.

<?php 

// STATUS 
$errors = true; 

// OUTPUTS 
$upload_success = "<script type='text/javascript'>"; 
    $upload_success .= "alert('Records Were Uploaded');"; 
    $upload_success .= "window.location.href = 'EmployeePicker.php';"; 
$upload_success .= "</script>"; 

$upload_fail = "<script type='text/javascript'>"; 
    $upload_fail .= "alert('There was a problem with your file');"; 
    $upload_fail .= "window.location.href = 'csvUpload.php';"; 
$upload_fail .= "</script>"; 

//LOGIC 
if ($errors) { 
    echo $upload_success; 
} else { 
    echo $upload_fail; 
} 

?>