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 28-11-2011, 14:46
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard Fehlermeldung wird pro Zeile ausgegeben

Hallo liebe Forumsmitglieder,

bin zum ersten Mal hier und absolute Anfängerin in PHP. Habe vor kurzem begonnen PHP zu lernen, dazu auch ein Buch gekauft "Einstieg in PHP 5.3 und MySQL 5.5". Bin dabei mir anhand von Beispielübungen das bisher gelernte und gelesene zu festigen.

Ich habe ein Skript geschrieben wo in einer Textdatei mittels Eingabe aus einem erstellten Formular ein Name (Nachname) gesucht und ausgegeben wird. Es klappt soweit auch alles bestens. Zusätzlich wollte ich nun das wenn im Feld Nachname ein Name eingegeben wird der nicht existiert, eine Fehlermeldung erscheint wie zum Beispiel "keine Adresse gefunden".

Habe dies dann mit der else - Anweisung definiert. Nun passiert aber folgendes; jede Zeile wird durchsucht und wenn der Namen in dieser Zeile nicht vorhanden ist dann erscheint die Fehlermeldung.

Beispiel: (Meine Textdatei hat insgesamt 3 Zeilen und ich habe als such-Name "Muster" eingegeben)
HTML-Code:
Keine Adresse gefunden. 
Hans Muster Seestrasse 54300 Mustern 011 213 20 20
Keine Adresse gefunden. 

Ich möchte aber das die Fehlermeldung erst erscheint wenn alle Zeilen durchsucht worden sind und der Name nicht vorhanden ist.
Ich denke der Fehler ist, dass ich "else" innerhalb der Anweisung setze wo definiert ist, dass es zeilenweise durchsucht werden soll und von daher ist es wohl logisch das er dann auch pro Zeile den Fehler ausgibt.

Sehe ich das richtig?
Muss ich nochmals eine separate if/else - Anweisung schreiben damit er dies nicht zeilenweise ausgibt?
Wo muss ich ansetzen? Könnt ihr mir da etwas weiterhelfen?

Hier den Code den ich dafür geschrieben habe:

PHP-Code:
[LEFT]<html>
<body>

<?php

if( !file_exists ("adressen.txt"))
{
echo 
"Datei konnte nicht gefunden werden";
exit;
}

$datei fopen("adressen.txt","r");
if(!
$datei)
{
echo 
"Datei konnte nicht geöffnet werden";
exit;
}




$datei file("adressen.txt");

echo 
"<table border='1'>";

echo 
"<tr><td><b>Vorname</td></b>" "<td><b>Nachname</td></b>" "<td><b>Strasse</td></b>" "<td><b>PLZ</td></b>" "<td><b>Ort</td></b>" ."<td><b>Tel.</b></td></tr>";

foreach(
$datei as $ausgabe)

$daten explode(";"$ausgabe);

echo 
"<tr><td>$daten[0]</td>" "<td>$daten[1]</td>" "<td>$daten[2]</td>" "<td>$daten[3]</td>" "<td>$daten[4]</td>" "<td>$daten[5]</td>";
}
echo 
"</table>";

&
#12288;
?>

 
<p>Bitte tragen Sie einen Nachnamen ein und<br /> 
senden Sie anschließend das Formular ab.</p>
<form action="" method="post">
<input type="text" name="nachname">
<input type="submit" name="cmd" value="Suchen">
</form>

 
<?php

&#12288;
/*
* Zeilenweise das Array durchsuchen und Ausgeben.
*/


if (isset($_POST['nachname'])) {
if (
$_POST['nachname'] !='') { 
$nachname $_POST['nachname'];
}

foreach(
$datei as $ausgabe)
{
$daten explode(";"$ausgabe);

if (
strtolower($_POST['nachname']) == strtolower($daten[1])){ 

echo 
"<table border='1'>";
echo 
"<tr><td>$daten[0]</td>" "<td>$daten[1]</td>" "<td>$daten[2]</td>" "<td>$daten[3]</td>" "<td>$daten[4]</td>" "<td>$daten[5]</td>";
echo 
"</table>";


}else
echo 
"Keine Adresse gefunden.";
{


}
}


?>

 
</body>

</html>[/LEFT]


Ich hoffe ich habe mich verständlich genug ausgedrückt. Bitte habt ein bisschen Verständnis bin absoluter Newbie.

Danke
Angi
Mit Zitat antworten
  #2 (permalink)  
Alt 28-11-2011, 15:19
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

definier vor der foreach-Schleife eine Variable, z. b. $found = false;

Den nicht funktionierenden else-Teil nimmst du erstmal weg, denn wie du bereits erkannt hast, macht der dort keinen Sinn. Im if-Teil setzt du die Variable $found auf true und nach der Schleife kannst du dann überprüfen, welchen Wert $found hat und weißt damit, ob innerhalb der Schleife irgendwann einmal was gefunden wurde oder nicht.

Gruß,

Amica

PS: Du hast dich verständlich ausgedrückt und die korrekten Code-Tags benutzt, das ist für's erste Posting schon anerkennenswert. Wir haben hier ganz andere Spezis, die das nach mehreren hundert Beiträgen noch nicht kapiert haben Wenn du die Zeilenlänge von 100 Zeichen für Code-Blöcke noch berücksichtigst, ist es perfekt.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (28-11-2011 um 15:24 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 28-11-2011, 18:11
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard

Hallo Amica,

Danke für Deinen Tipp, werde dies so in Angriff nehmen und melde mich dann wieder mit dem Ergebnis.

Gruss
Angi
Mit Zitat antworten
  #4 (permalink)  
Alt 29-11-2011, 15:53
Angi
 Registrierter Benutzer
Links : Onlinestatus : Angi ist offline
Registriert seit: Nov 2011
Beiträge: 12
Angi befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

Ich habe nun mein Script mit den noch notwendigen Einträgen erweitert.


PHP-Code:
<?php
/*
* Zeilenweise das Array durchsuchen und Ausgeben.
*/
 
$found false
 if (isset(
$_POST['nachname'])) {
   if (
$_POST['nachname'] !='') { 
    
$nachname $_POST['nachname'];
   }
 
  foreach(
$datei as $ausgabe)
    {
     
$daten explode(";"$ausgabe);
 
 if (
strtolower($_POST['nachname']) == strtolower($daten[1])){ 
  
$found true
 
   echo 
"<table border='1'>";
    echo 
"<tr><td>$daten[0]</td>" "<td>$daten[1]</td>" .
     
"<td>$daten[2]</td>" "<td>$daten[3]</td>" .
     
"<td>$daten[4]</td>" "<td>$daten[5]</td>";
        echo 
"</table>";
  }
}
}
[
LEFT]//Meldung wenn Name falsch oder nicht vorhanden
if (isset($_POST["gesendet"])){
if (!empty(
$found)){
}else {
echo 
'Keine Adresse gefunden, oder Sie haben keinen Nachnahmen eingegeben.'
}[/
LEFT]
}
?>
Hier noch ein Nachtrag:

Das Script funktioniert richtig, habe es (Dank Hilfestellung von Amica) korrekt ergänzt. Die Fehlanzeige wurde durch meinen Browser den ich nicht aktualisiert hatte hervorgerufen.

Gruss
Angi

Geändert von Angi (07-12-2011 um 16:44 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
suchformular, fehlermeldung wird nicht ausgegeben. lan PHP Developer Forum 5 15-01-2006 21:40
Variable wird nicht ausgegeben... MasterOfPuppets PHP Developer Forum 9 07-09-2005 22:07
ID wird zu hoch ausgegeben Kawakima PHP Developer Forum 9 30-06-2005 18:50
Variable wird nicht ausgegeben hasch PHP Developer Forum 23 11-09-2004 18:34
Es wird keine Leerzeile ausgegeben Schneggo PHP Developer Forum 6 07-08-2002 16:19

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 15:24 Uhr.