[SAMMELTHREAD] Kleine Coding Fragen
- breadfish.de
- Unerledigt
-
-
-
schau dir bitte das binden von werten bei prepared statements von pdo an.
-
Funktioniert leider dennoch nicht..
-
dann machst du was falsch, wenn du nichts geändert hast dann kann ich dir direkt sagen das du ein fehler in deinem prepared hast
-
Hey hab da ein kleines Problem mit der Darstellung von folgendem Feld:
dsgbug.pngGibt es eine Möglichkeit dieses "+1" in einer Zeile anzuzeigen?
Der momentane CSS Code dazu ist:
-
-
das ist auch totaler müll. Du bindest auch keine variable.
Entweder `id`= ?
oder
`id` = :frakIDJedoch muss bei execute auch das array dementsprechend angepasst werden , einmal ohne die verwendung eines keys und bei der zweiten variante mit der verwendung eines keys
Daher hab ich dir auch den link vorher geschickt, wenn du dir das einmal angeschaut und das vergliechen hättest würdest wissen was dein fehler war.
@Sascha
Mach den Usernamen via max-width kleiner oder setze das margin auf 0 und reduziere das padding als auch die fontsize. -
@IPrototypeI Ich will ja eigentlich auch das es in die 2. Zeile kommen kann da wenn jetzt zum Beispiel "Ankündigung" noch vor dem Namen steht nur sehr wenig von dem Text angezeigt werden kann nur möchte ich nicht das dieses "+1" abgeschnitten wird
-
@IPrototypeI Ich will ja eigentlich auch das es in die 2. Zeile kommen kann da wenn jetzt zum Beispiel "Ankündigung" noch vor dem Namen steht nur sehr wenig von dem Text angezeigt werden kann nur möchte ich nicht das dieses "+1" abgeschnitten wird
ok dann füg mal display:ruby; dem code hinzu
Codefont.likes { background: #00cc00 none repeat scroll 0 0; border-radius: 25px; color: white; display: ruby; margin-left: 4px; margin-right: 4px; padding: 2px 5px; }
//Edit
und für alle die wissen wollen wir man die parameter bei prepared statements binded hier paar möglichkeiten
Code
Alles anzeigen$sapdlevel = $db->prepare("SELECT `Mindestlevel` FROM `ucp_fraktion` WHERE `id` = ? LIMIT 1;"); $sapdlevel->execute(array($u_id)); $row_sapdlevel = $sapdlevel->fetchAll(); $sapdlevel = $db->prepare("SELECT `Mindestlevel` FROM `ucp_fraktion` WHERE `id` = :frakID LIMIT 1;"); $sapdlevel->execute([':frakID' => $u_id]); $row_sapdlevel = $sapdlevel->fetchAll(); $sapdlevel = $db->prepare("SELECT `Mindestlevel` FROM `ucp_fraktion` WHERE `id` = :frakID LIMIT 1;"); $sapdlevel->bindParam(':frakID', $u_id); $sapdlevel->execute(); $row_sapdlevel = $sapdlevel->fetchAll();
Je nach verwendeten Driver kann es sein das man dem prepare, die driver option hnzufügen muss. -
Wollte hier abfragen, ob Leader 1 oder 0 ist.
Code//Hitman Leader Vorhanden $hitmanleadervorhanden = $db->prepare("SELECT `Leader` FROM `ucp_fraktion` WHERE `id` = 5"); $row_hitmanleadervorhanden = $hitmanleadervorhanden->fetch();
PHP
Alles anzeigen<tr> <td><?php echo "Hitman Agency"; ?></td> <?php if($row_hitmanleadervorhanden["Leader"] == 0) { ?> <td><?php echo "Kein Leader vorhanden"; ?></td><?php }?> <?php if($row_hitmanleadervorhanden["Leader"] == 1) { ?> <td><?php echo $row_hitmanleader; ?></td><?php }?> <td><?php echo $row_hitmanlevel; ?></td> <td><button type="button" class="btn btn-success">Bewerben</button></td> </tr>
Es wird mir dennoch geprintet, dass kein Leader vorhanden ist.
-
Wie wäre es das query via execute auszuführen ?
-
-
$_GET ['frak'];
-
Habe es ja mittlerweile hinbekommen, nutze dafür $_SESSION['FrakID'].
Nur ein Problem liegt mir auf der Zunge und ich weiß keine Lösung.Ich setzte die Session bei den jeweiligen Fraktionen, sobald man auf Bewerben klickt, mit:
Wenn ich mich dann bewerbe, meint er dennoch, immer FrakID 5 in der Datenbank einzutragen.
PHP
Alles anzeigenif(isset($_POST["submit"])) { $beschreibung = filter_var($_POST["beschreibung"], FILTER_SANITIZE_SPECIAL_CHARS); if($beschreibung) { $timestamp = time(); $query = $db->prepare("INSERT INTO `ucp_bewerbungen` (`FrakID`, `Name`, `Timestamp`, `Status`, `Text`) VALUE (:frakid, :von, :datum, 0, :text)"); $query->execute(array( 'frakid' => $_SESSION['FrakID'], 'von' => $_SESSION['name'], 'datum' => $timestamp, 'text' => $beschreibung, )); $success_msg = "Deine Bewerbung wurde erfolgreich abeschickt."; unset($_SESSION['FrakID']); } else $error_msg = "Du hast nichts ausgefüllt."; }
Aus Sicherheitsgründen habe ich die Session dann eliminiert, damit es zu keinen Bugs kommt, nachdem die Bewerbung abgeschickt ist.
Es funktioniert alles, dennoch wird FrakID immer als "5" eingetragen. -
@Speezy wozu setzt du dafür eine Session? So lange du die GET-Variable "frak" übermittelst musst du doch keine Session machen.
PHPecho "<a href='?frak=5'><button>Bewerben</button></a><br /> <a href='?frak=3'><button>Bewerben</button></a>";
PHP
Alles anzeigenif(isset($_GET["frak"])) { $fId = $_GET["frak"]; if($fId == 3) // Fraktion 3 { } if($fId == 5) // Fraktion 5 { } }
Alle weiteren Aufrufe der Seite zum Beispiel zum Absenden der Bewerbung solltest du zb über diesen Link machen: "?frak=3&send" wodurch sich für dich die Fraktions ID wieder einfach über die GET Variable beim nächsten Seitenaufruf auslesen lässt.Ich würde dir auserdem empfehlen keinen HTML Code mit PHP zu vermischen. Versuchs lieber in der Schreibweise:
PHP
Alles anzeigen<?php $html = ""; $html .= "<tr> <td>Hitman Agency</td>"; if($row_hitmanleadervorhanden["Leader"] == 0) { $html .= "<td>Kein Leader vorhanden</td>"; } if($row_hitmanleadervorhanden["Leader"] == 1) { $html .= "<td>" . $row_hitmanleader . "</td>"; } $html .= "<td>" . $row_hitmanlevel . "</td> <td><button type="button" class="btn btn-success">Bewerben</button></td> </tr>"; ?> <html> <head></head> <body> <?php echo $html; ?> </body> </html>
-
Dank dir, klappt!
Wie kann ich folgendes abfragen,dass keine Fehler entstehen.Sprich, bei der Funktion //Bewerbung auflisten.
Code//Fraktion abfragen $query_fraktion = $db->prepare("SELECT `Fraktion` FROM `script_accounts` WHERE `id` = :id"); $query_fraktion->execute(array('id' => $_SESSION['id'])); $row_query_fraktion = $query_fraktion->fetch(); //Bewerbungen auflisten $query_beschwerde = $db->prepare("SELECT * FROM `ucp_bewerbungen` WHERE `Status` = 0 AND `FrakID` = "$query_fraktion""); $query_beschwerde->execute();
-
Den prepare genau so aufbauen wie oben den. Ansonsten sollte alles richtig sein.
-
Wüsste nicht, wie du das meinst.
Mir geht es explizit darum, die Fraktion des Spielers abzufragen, was auch klappt, jedoch dies dann im query "ucp_bewerbungen" anzuwenden. -