Eintrag prüfen und auf nächste Seite weiterleiten

Fehler:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php on line 20
Der Fehler sagt es schon: $statement->execute() gibt boolean zurück, und mysql_num_rows() erwartet einen Ressourcentyp (nicht bool).

Beim 2.:
Funktioniert doch? Was ist das Problem?

Gruss
cwriter
 
PHP:
$gutschein_code = htmlspecialchars($_POST['gutschein_code']);
  
$statement = $pdo->prepare("SELECT gutschein_code FROM bewerbungsgutscheincode WHERE gutschein_code = :gutschein_code;");
$executed = $statement->execute(array('gutschein_code' => $gutschein_code));
$result = $statement->fetchAll(PDO::FETCH_ASSOC);
/*
// Ausgabe: Ergebnisse der Abfrage
print_r($result);
foreach($result AS $k=>$v){
   echo $k.' - '.$v.'<br>';
}
*/
if($executed && (count($result)>0) ){ // Falls erfolgreich ausgeführt wurde, bedeutet jedoch nicht, dass ein Eintrag gefunden wurde - und Anzahl der Ergebnisse der Abfrage > 0
   echo "<span style='color:red;'>Der eingegebene Bewerbungsgutschein-Code <strong style='color:blue;'>" .$gutschein_code. "</strong> ist nicht vorhanden.</span><br /><hr /> <a href='paypal.php'><button type='button' class='btn btn-success btn-xs'>Zurück</button></a>";
}
else{
   header("Location: login.php");
}
 
Es scheint zu funktionieren..
Ich weiß nur nicht, wie ich den Pfad zur "login.php" in den head schreibe.
Code:
else{
   header("Location: login.php");
}
Denn laut Fehlermeldung bei existierendem Code lautet..
Warning: Cannot modify header information - headers already sent by (output started at /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php:11) in /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php on line 38
 
Denn laut Fehlermeldung bei existierendem Code lautet..
Warning: Cannot modify header information - headers already sent by (output started at /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php:11) in /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php on line 38
Der HTTP-Header wird vor der Payload geschrieben. Wie schon gesagt darf keine einzige Ausgabe vor header() stehen, also auch nicht dein HTML-Code.

Du könntest den PHP-Code vor den HTML-Code stellen und die Ausgabe in Variablen speichern:
PHP:
<?php
//...
if(...)
{
$text = "Error: Gutscheincode nicht vorhanden";
}
else
{
header("...");
}
?>

<html>

</html>

<?php
echo $text;
?>

Gruss
cwriter
 
So sieht jetzt die komplette Seite aus..
PHP:
include("../system/inc/config.inc.php"); 

error_reporting(E_ALL);
ini_set('display_errors', 1);

$gutschein_code = htmlspecialchars($_POST['gutschein_code']);
   
$statement = $pdo->prepare("SELECT gutschein_code FROM bewerbungsgutscheincode WHERE gutschein_code = :gutschein_code");
$result = $statement->execute(array('gutschein_code' => $gutschein_code));
$next_row = $statement->fetch();
if($next_row === false) {
{
echo "<span style='color:red;'>Der eingegebene Bewerbungsgutschein-Code <strong style='color:blue;'>" .$gutschein_code. "</strong> ist nicht vorhanden.</span><br /><hr /> <a href='paypal.php'><button type='button' class='btn btn-success btn-xs'>Zurück</button></a>";
}
}
else
{
header("Location:login.php");
}

Kein HTML usw. vor dem PHP
und dennoch kommt diese Fehlermeldung..
Warning: Cannot modify header information - headers already sent by (output started at /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php:2) in /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php on line 20
 
Kein HTML usw. vor dem PHP
und dennoch kommt diese Fehlermeldung..
Warning: Cannot modify header information - headers already sent by (output started at /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php:2) in /mnt/web122/e3/07/58167107/htdocs/Bewerbungsemail.com/start/users/test2.php on line 20
Der Code ist aber nicht 1 zu 1 so in deiner Datei, oder?
Du hast keine Zeile 20 in diesem Code.


Gruss
cwriter
 
Jetzt habe ich es endlich hin bekommen... Da war noch eine Leerzeile vor dem ganzen

PHP:
<?php
include("../system/inc/config.inc.php");
error_reporting(E_ALL);
ini_set('display_errors', 1);
$gutschein_code = htmlspecialchars($_POST['gutschein_code']);
$statement = $pdo->prepare("SELECT gutschein_code FROM bewerbungsgutscheincode WHERE gutschein_code = :gutschein_code");
$result = $statement->execute(array('gutschein_code' => $gutschein_code));
$next_row = $statement->fetch();
if($next_row === false) {
echo "<span style='color:red;'>Der eingegebene Bewerbungsgutschein-Code <strong style='color:blue;'>" .$gutschein_code. "</strong> ist nicht vorhanden.</span><br /><hr /> <a href='paypal.php'><button type='button' class='btn btn-success btn-xs'>Zurück</button></a>";
}
else
{
header("Location: login.php");
}
?>

ohne Seezeilen usw... Boah.. War das eine schwere Geburt... Jetzt darf ich mich mit 12-Lingen rumschlagen.. lol
Vielen Dank nochmals..
 
Zuletzt bearbeitet von einem Moderator:
Zurück