[RESOLU] Problème php while()

Petit nouveau ! | 4 Messages

09 juin 2022, 16:00

Bonjour à tous,
Voici mon code :
<?php
  $result=requete("select","*","heure","","order by heure_temps");
  while($res=mysqli_fetch_array($result)){
	 print("<tr><td align='center'>".heure($res['heure_temps'])."</td><td align='left'>".agenda4($res['heure_num'],$personne)."</td></tr>\n");
  }
  ?>
Et voici le résultat en html
08:00:0000<tr><td align='center'>8 H 00</td><td align='left'><center> - </center></td></tr>
08:15:0015<tr><td align='center'>8 H 15</td><td align='left'><center> - </center></td></tr>
08:30:0030<tr><td align='center'>8 H 30</td><td align='left'><center> - </center></td></tr>
08:45:0045<tr><td align='center'>8 H 45</td><td align='left'><center> - </center></td></tr>
09:00:0000<tr><td align='center'>9 H 00</td><td align='left'><center> - </center></td></tr>
09:15:0015<tr><td align='center'>9 H 15</td><td align='left'><center> - </center></td></tr>
Je ne comprends pas pourquoi il me fous un "08:00:0000"...

Mammouth du PHP | 2703 Messages

09 juin 2022, 16:06

que fait la fonction heure() ?

Petit nouveau ! | 4 Messages

09 juin 2022, 16:11

function heure($heure){
	list($h,$m)=explode(":",$heure);
	$h = $h*1;
	return $h." H ".$m;
}

Mammouth du PHP | 2703 Messages

09 juin 2022, 16:14

et agenda4() ?

Petit nouveau ! | 4 Messages

09 juin 2022, 16:18

Lui il retourne juste "<center> - </center>"
Et quand on l'enlève, rien ne change pour le problème il y a toujours "08:00:0000"

Mammouth du PHP | 1967 Messages

09 juin 2022, 16:35

si tu commente ton print, tu obtient toujours le "08:00:0000"

vu que tu utilise requete(...) tu utilise donc une librairie pour tes requète, vérifie que mysqli_fetch_array ne fait pas un echo / print non désiré
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Petit nouveau ! | 4 Messages

09 juin 2022, 16:44

<?php
// Fonction requetes
// requete(forme,valeurs,table,les where,l'ordre)
function requete($forme,$valeur,$table,$action,$ordre){
	$host="localhost";
	$base="agenda";
	$login="root";
	$passe=""; 
	$link = mysqli_connect($host,$login,$passe,$base) or die("connection impossible $base");
	$select_base= mysqli_select_db($link,$base); 
	$result = mysqli_query($link, "SELECT DATABASE()"); 
	if($forme=="select"){ 
		$sql="SELECT $valeur FROM $table $action $ordre";
	}
	if($forme=="delete"){ 
		$sql="DELETE FROM $table $action";
	}
	if($forme=="update"){ 
		$sql="UPDATE $table SET $valeur $action";       
	}
	if($forme=="insert"){ 
		$sql = "INSERT INTO $table VALUES ($valeur)";
	}
	$result = mysqli_query($link,$sql) or die('Erreur : '.mysqli_error($result));
	return $result;
}
?>
ça c'est ma fonction requete()
et mysqli_fetch_array semble pas faire de print

Avatar du membre
Eléphanteau du PHP | 41 Messages

10 juin 2022, 10:42

Ezuker pour une meilleur lisibilité tu dois apprendre à parsé selon les règles imposé par PHP
pour une meilleur lisibilité si tu ne le fais pas les personnes qui sont reprendre ton code pour de la
maintenance vont ou se moqué de toi ou supprimer ton code et tout recommencer.
je sais, je sais.. je dis pas cela contre toi c'est plus comme les bonnes manière ou bonne pratique
je t'ai donc mis convenablement l'aspect esthétique pour que tu puisse bien voir dans le futur si
tu veux faire bien ça permet un grande lisibilité et c'est beaucoup plus simple pour le repérage des erreurs
faire ce petit effort petit à petit te permettra en transparence dans l'avenir de le faire sans même y penser
ça te sera naturel, évident et agréable à la lecture. je t'invite donc à comparer et voir les différences.

    /**
     * @name  requete
     * @version 1.0
     * @param $forme Formule explication
     * @param $valeur Valeurs explication
     * @param $table Tableau explication
     * @param $action Action explication
     * @param $ordre Ordre explication
     * @return bool|\mysqli_result|void
     */
    function requete($forme, $valeur, $table, $action, $ordre)
    {
        $host = "localhost";
        $base = "agenda";
        $login = "root";
        $passe = "";
        $link = mysqli_connect($host, $login, $passe, $base) or die("connection impossible $base");
        $select_base = mysqli_select_db($link, $base);
        $result = mysqli_query($link, "SELECT DATABASE()");
        if ($forme == "select") {
            $sql = "SELECT $valeur FROM $table $action $ordre";
        }
        if ($forme == "delete") {
            $sql = "DELETE FROM $table $action";
        }
        if ($forme == "update") {
            $sql = "UPDATE $table SET $valeur $action";
        }
        if ($forme == "insert") {
            $sql = "INSERT INTO $table VALUES ($valeur)";
        }
        $result = mysqli_query($link, $sql) or die('Erreur : ' . mysqli_error($result));
        return $result;
    }
et dernier info quand tu as plus de 3 if sur une variable à tester
utilise switch , 3 ou moins de 3 if des elseif et else parfois pour la lisibilité des elseif seront bien mieux "parfois".
je t'ai mis le code avec les switch. pourquoi un switch ? c'est simple tu as la zone defaut donc tu peux gerer
le cas de figurer imprévue ou standar et les exceptions avec case.
et aussi on utilise pas les "" à tous vas. les double cote en PHP sont là pour contenir du texte qui peut contenir des variables donc il y a une préanalyse du contenu alors si on fait d'autre language comme java je sais c'est chiant. mais
en php le mieux est de privilégier les simple cote '' quand tu as du texte sans variable l'interpréteur ne perdra pas de temps à vérifier s'il y a un contenu à interpréter comme une variable. donc simple cote c'est une chaine de caractère pure et double cote une chaine de caractère exotique pouvant contenir des éléments à interpréter donc on évite mais plus bas tu utilise correctement les double cote avec : $sql = "SELECT $valeur FROM $table $action $ordre"; <<- gg
et ici $host = "localhost"; <<- c'est pas une erreur mais ce n'est pas nécessaire les doubles cote.
    /**
     * @name  requete
     * @param $forme Formule explication
     * @param $valeur Valeurs explication
     * @param $table Tabkeau explication
     * @param $action Action explication
     * @param $ordre Ordre explication
     * @return bool|\mysqli_result|void
     * @version 1.0
     */
    function requete($forme, $valeur, $table, $action, $ordre)
    {
        $host = "localhost";
        $base = "agenda";
        $login = "root";
        $passe = "";
        $link = mysqli_connect($host, $login, $passe, $base) or die("connection impossible $base");
        $select_base = mysqli_select_db($link, $base);
        $result = mysqli_query($link, "SELECT DATABASE()");

        switch ($forme) {
            case 'select':
                $sql = "SELECT $valeur FROM $table $action $ordre";
                break;
            case 'delete':
                $sql = "DELETE FROM $table $action";
                break;
            case 'update':
                $sql = "UPDATE $table SET $valeur $action";
                break;
            case 'insert':
                $sql = "INSERT INTO $table VALUES ($valeur)";
            default:
                // si il y a un cas de figure inconnu 
                // on peut le gerer ici ou pas
        }

        $result = mysqli_query($link, $sql) or die('Erreur : ' . mysqli_error($result));
        return $result;
    }
mise à part c'est petits détails ton code est propre visuellement.