Test Foreach qui plante
Résolu
kakesinfo
Messages postés
36
Statut
Membre
-
jordane45 Messages postés 40050 Statut Modérateur -
jordane45 Messages postés 40050 Statut Modérateur -
Bonjour, J'aimerai savoir si c possible de detecter si le Foreach plante est donc rediriger vers une autre page ? Vous pourrai voir si dessous un test de ma part qui ne fonctionne pas :). Merci de votre reponse.
try{ foreach ($db->getPDO()->query('SELECT * FROM musiques WHERE slug LIKE "' . $r . '%" OR slug LIKE "%' . $r . '" OR slug LIKE "%' . $r . '"') as $data) { //$player->addPoints($data->points); //header('Location:music/' . rand(1, 23)); die('Sa marche !'); } } catch(Exception $e){ die('Sa marche pas!'); //header('Location:/'); }
A voir également:
- Test Foreach qui plante
- Test performance pc - Guide
- Test steam deck oled - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test composant pc - Guide
- Test batterie pc - Guide
2 réponses
essaye de sortir la rqt sql dans une var :
try{
$datas = $db->getPDO()->query('SELECT * FROM musiques WHERE slug LIKE "' . $r . '%" OR slug LIKE "%' . $r . '" OR slug LIKE "%' . $r . '"');
foreach ($datas as $data) {
//$player->addPoints($data->points);
//header('Location:music/' . rand(1, 23));
die('Sa marche !');
}
} catch(Exception $e){
die('Sa marche pas!');
//header('Location:/');
}
Merci a tous d'avoir répondu et donc voici le code final qui marche:
EDIT : Ajout du langage dans les balises de code.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
<?php require 'config.php'; require 'players.php'; require 'database.php'; require 'others.php'; $db = new Database(DB, HOST, USERNAME, PASSWORD); $other = new Others(); if(isset($_GET['m']) && isset($_GET['r'])) { $player = new Player($_COOKIE["MF_Pseudo"], $_COOKIE["MF_Points"], $_COOKIE['MF_Ip'], $_COOKIE['MF_Lives']); $caractere = array(" ", "\t", "\n", "\r", "\0", "\x0B", "\xA0", "+"); $m = $_GET['m']; $r = strtolower($_GET['r']); $r = str_replace($caractere, array(), $r); $req = $db->getPDO()->query('SELECT * FROM musiques WHERE id='.$m); $data = $req->fetch(PDO::FETCH_ASSOC); if(!is_null($data['points'])){ echo '1'; if($other->contains($data['slug'], $r)){ $player->addPoints($data['points']); $player->addLives(1); header('Location:music/' . mt_rand(1, 23)); echo '1-1'; }else{ $player->removeLives(1); header('Location:music/' . mt_rand(1, 23)); echo '1-2'; } }else{ header('Location:music/' . mt_rand(1, 23)); echo '2'; } }
EDIT : Ajout du langage dans les balises de code.
Explications disponibles ici :
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
+1 pour la réponse proposée par notre amis sautilleur ^^
J'ajouterai qu'en plus... sorts également la requête de son execution... cela permet d'en faire un debug en cas de besoin et de la tester en direct dans la BDD pour s'assurer qu'elle est bonne...
Voici à quoi cela pourrait ressembler.
Par contre.... à quoi correspond ta fonction getPDO() ?
Au lieu de