• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[PHP] – Unerklärlicher Fehler in einer if-Abfrage

HTML 4 YOU

New member
Hey !

Ich habe eine ganz einfache if-Abfrage in PHP, an der es aber iwie hapert.. Ich habe ein Array mit Werten, welches durch eine MySQL Abfrage gefüllt wurde, die so aussieht:

PHP:
            // Alle bisherigen Projekte in ein Array schreiben
            $tmp = mysql_query('SELECT name FROM Projekte');
            $projekt_namen = array();
            for($i = 0; mysql_fetch_object($tmp); $i++) {
                $projekt_namen[$i] = $row->name;
            }
            unset($tmp);

Dann habe ich eine einfache Schleife, die überprüft, ob ein eingegebener Name schon vorhanden ist:

PHP:
for($i = 0; i < count($projekt_namen); $i++) {
                if($name == $projekt_namen[$i]) {
                    echo '<p>Dieser Projektname ist leider schon vergeben, bitte wählen Sie einen anderen.</p>';
                    $tmp;
                    break;
                }
            }

Und hier haperts.. Er sagt mir, dass die vorgegebenen 12 sek. überschritten wurden, und zwar in Zeile 54 (if($name == ......)

Weiß jemand, woran es liegt? Befülle ich das Array oben falsch?


LG HTML 4 YOU
 
Ich kenne mich mit PHP zwar noch nicht so gut aus, aber ich mache das immer mit einer while-Schleife:

PHP:
$tmp = mysql_query('SELECT * FROM Projekte');
while($row = mysql_fetch_assoc($tmp)) {
	if($name == $row['name']) {
		// CODE
	}
}

Ich war zu faul, um wirklich ne Tabelle anzulegen und nachzuschauen, ob das richtig ist...ist also ungetestet und kann falsch sein.
 
Du hast eine Endlosschleigfe erstellt i < count($projekt_namen), probiers mal so:
PHP:
for($i = 0; $i < count($projekt_namen); $i++) {
                if($name == $projekt_namen[$i]) {
                    echo '<p>Dieser Projektname ist leider schon vergeben, bitte wählen Sie einen anderen.</p>';
                    $tmp;
                    break;
                }
            }

Wäre eine foreach Schleife nicht einfacher?
 
stimmt, ein schlauer, hatte gar nicht gesehen was der code macht, aber bei sowas bietet sich natürlich an das einfach mysql lassen zu machen
PHP:
<?php
$result = mysql_query(sprintf("SELECT 1 FROM `Projekte` WHERE `name` = '%s'", mysql_real_escape_string($name))) or die(mysql_error());
if(mysql_num_rows($result) > 0) {
    // name schon vergeben
}
?>
 
Zurück
Oben