Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all 4861 articles
Browse latest View live

Est-ce correct ?

$
0
0

Bonjour,

J'ai lu ceci concernant le principe de fonctionnement du serveur PHP, est-ce correct ? Car je ne trouve pas grand chose à se sujet (ou je ne sais pas l'exprimer dans un moteur de recherche x)

  • Le serveur Web crée un fichier temporaire. Il copie le contenu de hello.php jusqu’à trouver la balise < ?php
  • Le code se trouvant entre < ?php et ?> est exécuté.
  • Tout ce que le code écrit (instruction echo ) est aussi copié dans le fichier temporaire
  • Le serveur Web reprend la copie du fichier après ?>
  • Le serveur renvoie le contenu du fichier temporaire comme page au client

Uncaught Error: Call to a member function prepare() on null in

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

Voici mon code

<?php
    session_start();
$hote = "localhost";
    $user = "root";
    $password = "";
    global $pdo;
    try {
        $pdo = new pdo('mysql:host='.$hote.';dbname=base', $user,$password);
    } catch (Exception $e) {
        $e->getMessage();
    }

  $err = 0;
  $err1 = 0;
  $err2 = 0;
  $err3 = 0;

    if(isset($_POST['username']) && !empty($_POST['username'])) {
        $username   = $_POST['username'];
    }else {
        $username       = '';   
        $err++;         
    }

    if(isset($_POST['mdp']) && !empty($_POST['mdp'])) {
        $mdp    = $_POST['mdp'];
    }else {
        $mdp        = '';   
        $err++;         
    }

    if (!empty($username) and !empty($mdp)) {

            $user = $pdo->prepare('SELECT * FROM personne WHERE NOM_PER = ? AND pass = ?');
            $user->execute(array($username,$mdp));
            $userexist = $user->rowCount();
            if ($userexist == 1) {

                $userdata = $user->fetch();
                $_SESSION['u_id'] = $userdata['ID_PER'];
                $u_id = $_SESSION['u_id'] ;
                $statut =  $userdata['STATUT'];
                if ($statut == 'DG') {
                header('location: ../pages/index.php?user='.$u_id.'');
                }else{
                    header('location: ../page/index.php?user='.$u_id.'');
                }

        }else {
            if ($userdata == 0) {
                header('location: ../login.php?cu=1');
            }else if($err != 0) {
                        header('location: ../login.php?cu=2');
                    }


            }
        }

?>

Ce que je veux

Je voudrais me connecter via un compte utilisateur créé manuellement dans la bdd.

Ce que j'obtiens

et je recois comme message d'erreur : PHP Fatal error: Uncaught Error: Call to a member function prepare() on null in................................ on line 34.
Merci pour votre aide
Cordiallement

akkomah

problème bootstrap php

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

je suis dans un dossier view qui comporte mon layout.twig et mon dossier css avec dedans bootstrap.css
le probème est que sur le site il n'y a pas le css pas de mis en forme etc...
le bout de code viens de mon layout.twig, je suis actuellement sur youtube la playlist sur le php poo

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Jekyll v4.1.1">
    <title>Mes articles</title>



    <!-- Favicons -->
<link rel="apple-touch-icon" href="/docs/4.5/assets/img/favicons/apple-touch-icon.png" sizes="180x180">
<link rel="icon" href="/docs/4.5/assets/img/favicons/favicon-32x32.png" sizes="32x32" type="image/png">
<link rel="icon" href="/docs/4.5/assets/img/favicons/favicon-16x16.png" sizes="16x16" type="image/png">
<link rel="manifest" href="/docs/4.5/assets/img/favicons/manifest.json">
<link rel="mask-icon" href="/docs/4.5/assets/img/favicons/safari-pinned-tab.svg" color="#563d7c">
<link rel="icon" href="/docs/4.5/assets/img/favicons/favicon.ico">
<meta name="msapplication-config" content="/docs/4.5/assets/img/favicons/browserconfig.xml">
<meta name="theme-color" content="#563d7c">


    <style>
      .bd-placeholder-img {
        font-size: 1.125rem;
        text-anchor: middle;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none;
      }

      @media (min-width: 768px) {
        .bd-placeholder-img-lg {
          font-size: 3.5rem;
        }
      }
    </style>
    <!-- Custom styles for this template -->
   <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top">
  <a class="navbar-brand" href="#">Navbar</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsExampleDefault" aria-controls="navbarsExampleDefault" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>

  <div class="collapse navbar-collapse" id="navbarsExampleDefault">
    <ul class="navbar-nav mr-auto">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
        <a class="nav-link" href="#">Link</a>
      </li>
      <li class="nav-item">
        <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
      </li>
      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
        <div class="dropdown-menu" aria-labelledby="dropdown01">
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
      </li>
    </ul>
  </div>
</nav>
<div>

<h1> Bienvenue sur le blog </h1>

<ul>
    <li><a href="/blog/azeaze0-7aze">Article 10</a></li>
    <li>Article 1</li>
    <li>Article 1</li>
    <li>Article 1</li>
    <li>Article 1</li>
    <li>Article 1</li>
    <li>Article 1</li>
</ul>

</div>

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
      <script>window.jQuery || document.write('<script src="/docs/4.5/assets/js/vendor/jquery.slim.min.js"><\/script>')</script><script src="/docs/4.5/dist/js/bootstrap.bundle.min.js" integrity="sha384-LtrjvnR4Twt/qOuYxE721u19sVFLVSA4hf/rRt6PrZTmiPltdZcI7q7PXQBYTKyf" crossorigin="anonymous"></script></body>
</html>

Ce que je veux

avoir la mise en page de bootstrap

Ce que j'obtiens

une page totalement nul

Décortiquer un fichier .txt avec des valeurs

$
0
0

Bonjour,

J'ai un fichier .txt avec des valeurs qui ressemble à ça:

["s","752978","CF_250_fancywatch","65983","4","1","1","","Montre de luxe","CF_250_fancywatch desc","","18069","true","-1","false","","1","false","0","0","0","false"],
["i","752979","party_nt_neon4","65946","","","","","party_nt_neon4 name","party_nt_neon4 desc","","-1","false","-1","false","","1","false","false"],
["i","752980","rela_nt_wall","65946","","","","","rela_nt_wall name","rela_nt_wall desc","","-1","false","-1","false","","1","false","false"],
["i","752981","party_nt_led","65946","","","","","party_nt_led name","party_nt_led desc","","-1","false","-1","false","","1","false","false"],
["i","752982","usva_nt_wallrug","65946","","","","","usva_nt_wallrug name","usva_nt_wallrug desc","","-1","false","-1","false","","1","false","false"],
["i","752983","lt_nt_jngl_wall","65946","","","","","lt_nt_jngl_wall name","lt_nt_jngl_wall desc","","-1","false","-1","false","","1","false","false"],
["i","752984","cine_nt_light1","65946","","","","","cine_nt_light1 name","cine_nt_light1 desc","","-1","false","-1","false","","1","false","false"],
["i","752985","val09_nt_wdrobe_g","65946","","","","","val09_nt_wdrobe_g name","val09_nt_wdrobe_g desc","","-1","false","-1","false","","1","false","false"],
["i","752986","party_nt_shelf","65946","","","","","party_nt_shelf name","party_nt_shelf desc","","-1","false","-1","false","","1","false","false"],
["i","752987","window_nt_skyscraper","65946","","","","","window_nt_skyscraper name","window_nt_skyscraper desc","","-1","false","-1","false","","1","false","false"],
["i","752988","window_nt_diner2","65946","","","","","window_nt_diner2 name","window_nt_diner2 desc","","-1","false","-1","false","","1","false","false"],
["i","752989","cubie_nt_decal_2_p","65946","","","","","cubie_nt_decal_2_p name","cubie_nt_decal_2_p desc","","-1","false","-1","false","","1","false","false"],
["i","752990","cubie_nt_decal_1_p","65946","","","","","cubie_nt_decal_1_p name","cubie_nt_decal_1_p desc","","-1","false","-1","false","","1","false","false"],
["i","752991","hween_c20_floorwallb","65975","","","","","hween_c20_floorwallb name","hween_c20_floorwallb desc","","-1","false","-1","false","","1","false","false"]],

Ce que j'aimerai faire c'est récuperer la 3 ème valeur de chaque "tableau", par exemple pour la première ça serait CF_250_fancywatch, la 2 ème, party_nt_neon4 etc.

J'avais commencé à bidouiller ceci:

$test = '["s","17731567","wf_act_collisionteam","0","0","1","1","","Effet : Collision Team","","","17731567","true","-1","false","-1","0","false","0","0","0","false"] ';
$keywords = preg_split("/[\s,]+/", $test);
echo $keywords[2];

Sauf que ça marche pour seulement une ligne, mais pour un fichier .txt tout entier ça ne marche pas.

Merci bien...

Blocage envoi de Form

$
0
0

Bonjour,

Oui vous avez bien lu, je galère avec un formulaire, j'ai juste envie de me mettre une balle...
Pourtant j'ai déjà réussi des formulaires mais cette fois je sèche tout est OK et ce P.... de mail n'arrive pas.

mon form html

<form method="post" >
            <div class="row">
                <div class="input-field col s12 m6">
                    <input type="text" name="prenom" id="prenom" />
                    <label for="prenom">Prénom *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="nom" id="nom" />
                    <label for="nom">Nom *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="number" name="tel" id="tel" />
                    <label for="tel">Tél *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="email" name="email" id="email" />
                    <label for="email">Email *</label>
                </div>
                <div class="input-field col s12 m12">
                    <input type="text" name="adresse" id="adresse" />
                    <label for="adresse">Adresse</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="number" name="codepostal" id="codepostal" />
                    <label for="codepostal">Code postal *</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="ville" id="ville" />
                    <label for="ville">Ville</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="typeproduit" id="typeproduit" placeholder="(parquet, stratifié, vinyle, produits d'entretien...)" />
                    <label for="typeproduit">Type de produit</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="marque" id="marque" placeholder="BerryAlloc, Quick-Step, Blanchon..."/>
                    <label for="Marque">Marque</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="text" name="reference" id="reference" placeholder="E1CYBMIM, SIG4757..."/>
                    <label for="reference">Référence</label>
                </div>
                <div class="input-field col s12 m6">
                    <input type="number" name="surface" id="surface" placeholder="Surface en m²"/>
                    <label for="surface">Surface votre projet</label>
                </div>
                <div class="input-field col s12 m12">
                    <textarea name="comment" id="comment" class="materialize-textarea"></textarea>
                    <label for="comment">Description rapide de votre proje:</label>
                </div>
                <div class="input-field col s12 m6" style="display: none">
                    <input type="number" name="none" id="none"/>
                    <label for="none"></label>
                </div>
                <div class="col s12">
                    <button type="submit" name="submit" class="btn waves-effect">
                        Envoyer
                    </button>
                </div>
            </div>
        </form>

le traitement:

public static function contact(){

        if(isset($_POST['submit'])){

            $none        = htmlspecialchars($_POST['none']);
            $prenom      = htmlspecialchars($_POST['prenom']);
            $nom         = htmlspecialchars($_POST['nom']);
            $tel         = htmlspecialchars($_POST['tel']);
            $email       = htmlspecialchars($_POST['email']);
            $adresse     = htmlspecialchars($_POST['adresse']);
            $codepostal  = htmlspecialchars($_POST['codepostal']);
            $ville       = htmlspecialchars($_POST['ville']);
            $typeproduit = htmlspecialchars($_POST['typeproduit']);
            $marque      = htmlspecialchars($_POST['marque']);
            $reference   = htmlspecialchars($_POST['reference']);
            $surface     = htmlspecialchars($_POST['surface']);
            $comment     = htmlspecialchars($_POST['comment']);
            $errors      = [];

            // Verification que les champs ne sont pas vide
            if (empty($prenom)) {
                $errors['prenom'] = "Il manque votre prénom";
            } 
            if (empty($nom)) {
                $errors['nom'] = "Il manque votre Nom";
            }
            if (empty($tel)) {
                $errors['tel'] = "Il manque votre Numéro de téléphone";
            }
            if (empty($email)) {
                $errors['email'] = "Il manque votre e-mail";
            }
            if (empty($codepostal)) {
                $errors['codepostal'] = "Il manque votre code postal";
            } 
            if (!empty($none)) {
                $errors['none'] = "Désolé...";
            } else {

            // Destinataire
            $to = 'mon@gmail.com';

            $subject = "Sujet";


            // email fields: to, from, subject, and so on

            $headers  = 'MIME-Version: 1.0' . "\r\n";
            $headers .= 'Content-Type: text/html; charset="utf-8"' . "\r\n";
            $headers .= 'Content-Transfer-Encoding: 8bit' . "\r\n";

            $headers .= 'To: <' . $to . '>' . "\r\n";
            $headers .= 'From: ' . $nom . ',' . $prenom . ', ' . $email . "\r\n";

            //Message HTML
            $message = '
             <html lang="fr" style="font-family: sans-serif;">
                <head>
                     <meta charset="utf-8">
                </head>
                <body>
                <h4>Message reçu du formulaire de contact monparquet.shop</h4>
                <p>Prénom :'. $prenom .'.</p>
                <p>Nom : '. $nom .'</p>
                <p>téléphone : '. $tel . '</p>
                <p>E-mail : '. $email . '</p>
                <p>Adresse : ' . $adresse .'</p>
                <p>Code postal :' . $codepostal .'</p>
                <p>Ville : ' . $ville .'</p>
                <p>Type de produit : ' . $typeproduit .'</p>
                <p>Marque : ' . $marque . '</p>
                <p>Référence : ' . $reference . '</p>
                <p>Surface : ' . $surface . '</p>
                <p>Description rapide : <br> '. $comment .'</p>

                </body>
            </html>';

            // Envoie du mail
            mail($to, $subject, $message,  $headers);
            var_dump($to);

            }

            if (!empty($errors)) {
                require 'pages/includes/error.php'; 
            } else {
                require 'pages/includes/ok.php';

            }     

        }

        require './pages/devis.php';

    }

Il y a un blocage que je ne vois pas il est sous mes yeux et quand on va me dire le PB je vais avoir bien honte...

Merci de votre aide

faire une insertion multiple poo et ajax

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

j'ai suivi le tutorial sur la programmation orrienté objet de grafikart
je souhaite faire plusieur enregistrement simultanement pour cela j'ai faire un tableau dynamique avec jquery qui appel des lignes à volonté et pour enrigistrer les chaque valeur des differents ligne du tableau j'utilise ajax qui doit faire appel à ma fonction qui se trouve dans mon controller.
il y a une fonction new dans mon controller qui me retourne une vue avec un formulaire ou je peux il ya mon tableau dynamique

<form  id="containerform0" method="post" class=" shadow shadow-lg">
    <div class="card-header">
        <div class="d-inline"> <?=$form->inputRadio('isabidjan','1','Abidjan','','isabidjan');?></div>
        <div class="d-inline"> <?=$form->inputRadio('isabidjan','0','Interieur','','isabidjan');?></div>
        <div class="d-lg-inline "> <?= $form->input('textarea','objet','Objet','input-group-text objet','','');?></div>
    </div>
</form>
<div>
    <div id="formulaire">
        <div id="containerform1" class="form">
    <form  id="form1" method="post" class=" shadow shadow-lg ">
    <h1 class="h1 h1-responsive align-content-center">Ajouter les references de la mission</h1>
        <div class="container-fluid" >
        <table class="table mt-3 " >
            <thead class="table-dark">
            <th>Date Debut</th>
            <th>Date de Fin</th>

            </thead>
                <tbody>
                <tr >
                    <td><?= $form->input('date','debut','','input-group-text','','');?></td>
                   <td> <?= $form->input('date','fin','','input-group-text','','');?></td>
                </tr>
                </tbody>
        </table>
        </div>
    <div class="container-fluid " >
            <table class="table mt-3" id="crud-table">
                <thead>
                    <th><h3 class="h3-responsive">Itineraires</h3></th>
                    <th></th>
                    <th></th>
                    <th></th>
                    <th></th>
                    <th><div align="right"><button id="add" class="btn btn-success ">+</button></div></th>

                </thead>
            <thead class="table-dark">
            <th>Depart</th>
            <th>Arrivée</th>
            <th>Km</th>
            <th>Carburant</th>
            <th>Coût</th>
            <th>Site</th
            </thead>
                <tbody>
                <tr>
                    <td><div><?= $form->select('commune_depart','',$communes_interieur,'','depart','depart');?></div></td>
                    <td><div><?= $form->select('commune_arrive','',$communes_interieur,'','arrivee','arrivee');?></div></td>
                   <td><div><?= $form->input('text','km','','input-group-text km','','');?></div> </td>
                   <td><div><?= $form->input('text','carburant','','input-group-text carburant','','');?></div> </td>
                    <td><div><?= $form->input('text','cout','','input-group-text cout','','');?></div> </td>
                    <td><div><?= $form->input('text','site','','input-group-text site','','');?></div> </td>
                </tr>
                </tbody>

        </table>
        </div>
    </form>
        <div  align="center">
            <?= $form->button('submit','SUIVANT','next'); var_dump($_POST);?>
        </div>
        </div>
        <div id="containerform2" class="form">
    <form method="post" enctype="multipart/form-data"  id="form2" class=" shadow shadow-lg ">
        <h1 class="h1 h1-responsive align-content-center ">Ajouter les references de la mission</h1>
        <div class="container-fluid" >
            <table class="table mt-3 "  >
                <thead class="table-dark">
                <tr>
                <th>Commune</th>
                <th>Quartier</th>
                <th>Client ou Site</th>
                </tr>
                </thead>
                <tbody>
                <tr>
                    <td><div><?= $form->select('commune','',$communes_abidjan,'commune','commune');?></div></td>
                    <td id="quartier">
                        <?php foreach ($quartiersbyCommune as $commune_id=>$quartiers):?>
                        <div class="step2" id="commune-<?=$commune_id;?>"><?= $form->select('quartier','',$quartiers);?></div>
                     <?php endforeach;?>
                    </td>
                    <td ><div><?= $form->input('text','client_site','','input-group-text','','note');?></div></td>
                </tr>
                </tbody>
            </table>
        </div>
    </form>
        <div  align="center">
            <?= $form->button('submit','SUIVANT','next1');?>

        </div>
            <?=var_dump($_POST);?>
    </div>
   </div>
</div>
<script>
    $(document).ready(function () {
        var count =1;
        //affiche et cache le formulaire
    var formulaire={}
    $('.form').each(function () {
    var form=$(this);
    formulaire[form.attr('id')]=form
        form.remove();
    });
    $('input[type=radio][name=isabidjan]').change(function () {
        $('#formulaire').ready(function () {
            var quartiers={};
            $('.step2').each(function () {
                var div=$(this);
                quartiers[div.attr('id')]=div
                div.remove();
            });
            $(document).on('change','#commune',function () {
                var commune_id= $(this).val();
                if(commune_id==0){
                    $('.step2').hide();
                }else{
                    $('.step2').show();
                    $('#quartier').empty().append(quartiers['commune-'+commune_id]);

                }
            });
            $("#add").click(function () {
                event.preventDefault();
                var count= count+1
                var html="<tr id='row"+count+"'>";
                html+='<td><div><?= $form->select("commune_depart","",$communes_interieur,"","depart","depart");?></div></td>';
                html+='<td><div><?= $form->select('commune_arrive','',$communes_interieur,'','arrivee','arrivee');?></div></td>';
                html+='<td><div><?= $form->input('text','km','','input-group-text km','','');?></div></td>';
                html+='<td><div><?= $form->input('text','carburant','','input-group-text carburant','','');?></div> </td>';
                html+='<td><div><?= $form->input('text','cout','','input-group-text cout','','');?></div> </td>';
                html+='<td><div><?= $form->input('text','site','','input-group-text site','','');?></div></td>';
                html+="<td><button type='button'   name='remove' data-row='row"+count+"' class='btn btn-danger btn-xs remove'>"+"-</td>";
                html+="</tr>";
                $('#crud-table').append(html);
            });
          $('#next').click(function () {
                var isabidjan;
                var objet;
                var depart=[];
                var arrivee=[];
                var km=[];
                var carburant=[];
                var cout=[];
                var site=[];
                isabidjan=$('isabidjan').val();
                objet=$('.objet').val();
                $('.depart').each(function () {
                    depart.push($(this).val());
                });
                $('.arrivee').each(function () {
                        arrivee.push($(this).val());
                    });
                $('.km').each(function () {
                        km.push($(this).val());
                    });
                $('.carburant').each(function () {
                        carburant.push($(this).val());
                    });
                $('.cout').each(function () {
                    cout.push($(this).val());
                });
                $('.site').each(function () {
                    site.push($(this).val());

                });
                $.ajax({
                    url:"insert.php",
                    method:"POST",
                    data:{isabidjan:isabidjan,objet:objet,depart:depart,arrivee:arrivee,km:km,carburant:carburant,cout:cout,site:site,},
                    success:function (data) {
                     console.log(data);
                    alert("enregistrer");
                    }
                });
                });
        });
        if($(this).val()==1){
            $('.form').show();
            $('#formulaire').empty().append(formulaire['containerform2']);
           //
        }else if($(this).val()==0){

            $('.form').show('slow');
            $('#formulaire').empty().append(formulaire['containerform1']);


          //
        }
    });
        $(document).on('click','.remove',function(){
            var delete_row=$(this).data("row");
            $("#"+delete_row).remove();
        });



    });



</script>

namespace Gestauto\App\Controller;
use \App;
use Gestauto\Core\HTML\BootstrapForm;

class MissionController extends AppController
{
    public $lastinsertid;
    public function __construct()
    {
        parent::__construct();
        $this->loadModel('mission');
        $this->loadModel('objet_mission');
        $this->loadModel('commune');
        $this->loadModel('vehicule');
        $this->loadModel('ressource');
        $this->loadModel('consommation');
        $this->loadModel('quartier');
        $this->loadModel('intervention');
        $this->loadModel('diver');
        $this->loadModel('itineraire');
    }
 public function new(){

        $communes_interieur=$this->commune->extractinterieur('id','nom');
        $communes_abidjan=$this->commune->extractabidjan('id','nom');
        $quartiers=$this->quartier->getAll();
        $quartiersbyCommune=array();
        foreach ($quartiers as $quartier){
            $quartiersbyCommune[$quartier->commune_id][$quartier->id]=$quartier->nom;
        }
        if (!empty($_POST) and !empty($_POST['debut']) and !empty($_POST['fin']) and !empty($_POST['objet']) and !empty($_POST['debut']) and !empty($_POST['commune_depart']) and !empty($_POST['commune_arrive']) and isset($_POST)) {
            $result1 = $this->objet_missions->insert([
                'objet' => $_POST['objet'],
                'isabidjan' => $_POST['isabidjan'],
            ]);
            if ($result1 ) {
                if(!empty($_POST)) {
                    $result2 = $this->mission->insert([
                        'debut'=>$_POST['debut'],
                        'fin'=>$_POST['fin'],
                    ]);
                    if($result2){
                        if(isset($_POST['commune_depart'])){

                            if(!empty($_POST)){
                                for ($count=0;$count<count($commune_depart=$_POST['commune_depart']);$count++){
                                    $result3=$this->itineraire->insert([
                                        'depart'=> $_POST['commune_depart'][$count],
                                        'arrivee'=>$_POST['commune_arrive'][$count],
                                        'km'=>$_POST['km'][$count],
                                        'carburant'=>$_POST['carburant'][$count],
                                        'cout'=>$_POST['cout'][$count],
                                        'site'=>$_POST['site'][$count],
                                    ]);
                                }

                            }
                        }
                        if($result3){
                            return $this->ressource();
                        }
                        else {

                        }
                    }
                }
            }
        }

        $form = new BootstrapForm($_POST);

        $this->render('missions.add.new',compact('form','communes_abidjan','communes_interieur','quartiersbyCommune'));
    }
    }

Ce que je veux

est de pouvoir faire appel à ma fonction new() de mon controller qui pourra effectuer plusieur insertion
et aussi dans l'url ajax je voudrais savoir comment faire appel à mon controller

Ce que j'obtiens

j'obtiens riens dans ma base de donnée et dans la console js on m'affiche ce message 'No resource with given URL found'
merci

La POO en PHP, chapitre 19 - TP : Refactoring

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

j'ai une erreur sur "prepare" et sur "query"et sur et je ne comprend pas pourquoi.
Quelqu'un peut-il m'aider.
Merci d'avance.

Voici mon code sur la fonction "core\Table\Table.php :

public function query($statement, $attributes = null, $one = false)
{
    if ($attributes) {
        return $this->db->prepare(
            $statement,
            $attributes,
            str_replace('Table', 'Entity', get_class($this)),
            $one
        );
    } else {
        return $this->db->query(
            $statement,
            str_replace('Table', 'Entity', get_class($this)),
            $one
        );
    }
}

La POO en PHP, chapitre 18 - Injection de dépendances

$
0
0

Bonjour,

Voila je rencontre un petit problème avec ce code.

<?php

namespace App\Table;

class Table
{
protected $table;
protected $db;

public function __construct(\App\Database\Database $db)
{
    $this->db = $db;
    if (is_null($this->table)) {
        $parts = explode('\\', get_class($this));
        $class_name = end($parts);
        $this->table = strtolower(str_replace('Table', '', $class_name));
    }
}

public function all()
{
    return $this->db->query('SELECT * FROM articles');
}

}


Je ne comprend pas pourquoi il i a une erreur dans la fonction "all"  sur la methode "query", quand je passe le cursseur desssus, il m'affiche "Undefined method 'query'".
Pourtant quand j'utilise la fonction "all" dans mon fichier index.php il ne me fait pas d'erreur.
Pouvez-vous me dire pourquoi ??
Merci d'avance.



[twig]needs_context ne fonctionne pas

$
0
0

Bonjour,
j'essaie de reproduire une fonctionnalité de ce tuto : https://youtu.be/mpTtPt62s_w?t=3076.

Je rencontre un problème avec mon extension.
Je n'arrive pas à passer 'needs_context' en paramètre à ma nouvelle fonction, elle me retourne un array vide.
j'ai été regarder sur la doc et je n'ai pas l'impression d'avoir fait une faute de syntaxe (https://twig.symfony.com/doc/2.x/advanced.html#context-aware-filters).

Ma classe

<?php

use \Twig\Extension\AbstractExtension;

class MonExtension extends AbstractExtension
{

    public function getFunctions()
    {
        return [
            new Twig\TwigFunction('isActive', [$this, 'isActive'], ['needs_context'=> true]),
        ];
    }

    public function isActive(array $options, $page)
    {
        if (isset($options['current_page']) && $options['current_page'] === $page) {
            return ' active ';
        }
    }
}

Si vous avez une idée du problème je suis preneur...

Problème d'Ajout de commentaire sur la même page

$
0
0

Bonjour a tous.

Je rencontre un problème pour ajouter les commentaire, sur la même page.
J'ai listé tout les posts publier sur la même page, mais au moment d'ajouter un commentaire, le commentaire s'ajoute mais apparait aussi sur un autre posts. j'ai fais une boucle pour afficher les posts publier ensuite a l'intérieur de la boucle j'ai du code php, html pour les autre infomations dans la boucle j'ai fais une autre boucle pour afficher éventuellement les commentaire ci-dessous:

<!-------------------------------------- Comment php comment php comment php ---------------------------------------------------------->
                            <?php
                            $reqComments = $pdo->query("SELECT id, pseudo_id, commentaire, date_comments FROM p_commentaire ORDER by date_comments DESC");
                            while($dataCommentaire = $reqComments->fetch())
                            {
                            ?>
                            <div class="media is-comment">
                                <!-- User image -->
                                <div class="media-left">
                                    <div class="image">
                                        <img src="../users_account/alphamembre/avatar/<?= $user['avatar'] ?>" data-user-popover="1" alt="<?=$user['pseudo'] ?>" style="object-fit: cover;">
                                    </div>
                                </div>
                                <!-- Content -->
                                <div class="media-content">

                                    <a href="#"><?= $dataCommentaire['pseudo_id'] ?></a>
                                    <span class="time"><?= strftime('%d %B %Y', strtotime($dataCommentaire['date_comments']))." à ".date('H:i', strtotime($dataCommentaire['date_comments'])) ?></span>

                                    <p><?= $dataCommentaire['commentaire'] ?></p>
                                    <!-- Actions -->
                                    <div class="controls">
                                        <div class="like-count">
                                            <i data-feather="thumbs-up"></i><!-- LIKE COMENT -->
                                            <span></span>
                                        </div>
                                        <div class="reply">
                                            <a href="#">Reply</a>
                                        </div>
                                    </div>

                                </div>
                                <!-- Right side dropdown AND comments FIRST publish -->
                                <div class="media-right">
                                    <!-- /partials/pages/feed/dropdowns/comment-dropdown.html -->
                                    <div class="dropdown is-spaced is-right is-neutral dropdown-trigger">
                                        <div>
                                            <div class="button" id="button-dropdown">
                                                <i class="fas fa-chevron-down" id="chevron"></i>
                                            </div>
                                        </div>
                                        <div class="dropdown-menu" role="menu" style="background:#0d1012;">
                                                <a class="dropdown-item">
                                                    <div class="media">
                                                        <i class="far fa-trash-alt" id="drop-delete" style="font-size: 19px;margin-right: 11px;"></i>
                                                        <div class="media-content drop-delete">
                                                            <h3>Supprimer</h3>
                                                            <small id="drop-delete">Supprimer ce commentaire</small>
                                                        </div>
                                                    </div>
                                                </a>
                                        </div>
                                    </div>               
                                </div>
                            </div>
                            <?php
                            }
                            ?>
                            <!-- /Comment -->
                        </div>
                        <!-- /Comments body -->

Voici le code pour ajouter le commentaire:

//Code Ajout commentaire
    $reqPost = $pdo->query("SELECT * FROM p_membrealpha"); // requete pour recuperer l'id,  et l'auteur du posts. 
    $dataComment = $reqPost->fetch();
    if(!empty($_POST['comments']))
    {
       $comments = trim($_POST['comments']); 
       $datasComments = [
          'pseudo_id' => $user['pseudo'], // Pseudo de la personne qui a ajouter un commentaire.
          'p_membrealpha_id' => $dataComment['id'], // identification du posts de l'auteur.
          'auteur_post' => $dataComment['pseudo'], // L'auteur du posts publier.
          'commentaire' => $comments // Commentaire de la personne qui a ajouter un commentaire.
        ];
        if(!empty($comments))
        {
            $insert_comments = $pdo->prepare("INSERT INTO p_commentaire (pseudo_id, p_membrealpha_id, auteur_post, commentaire) VALUES (:pseudo_id, :p_membrealpha_id, :auteur_post, :commentaire)");
            $insert_comments->execute($datasComments) or die(print_r($pdo->errorInfo()));
            echo "Commentaire publish";

        }else{
            echo "Error comments"; // a modifier
        }
    }

Problème avec array_keys

$
0
0

Bonjour, je suis entrain d'essayé de créé un panier depuis ma base de donnée, les données sont récupéré mais n'arrive pas a s'affiché et l'erreur qu'il m'affiche c'est : Warning: array_keys() expects parameter 1 to be array, string given in D:\Site\panierPHP\panier.php on line 27. pour moi il récupère l'id 0,1,2,3 etc... non!?
voici le code

<?php require 'header.php'; ?>
<div class="checkout">
    <div class="title">
        <div class="wrap">
        <h2 class="first">Shopping Cart</h2>
        </div>
    </div>
    <form method="post" action="panier.php">
    <div class="table">
        <div class="wrap">

            <div class="rowtitle">
                <span class="name">Product name</span>
                <span class="price">Price</span>
                <span class="quantity">Quantity</span>
                <span class="subtotal">Prix avec TVA</span>
                <span class="action">Actions</span>
            </div>

            <?php

$search_array = array('premier' => 1, 'second' => 4);
if (array_key_exists('premier', $search_array)) {
    echo "L'élément 'premier' existe dans le tableau";
}

            $ids = array_keys($_SESSION['panier']);
            if(empty($ids)){
                $products = array();
            }else{
                $products = $DB->query('SELECT * FROM accesoires WHERE id IN ('.implode(',',$ids).')');
            }
            foreach($products as $product):
            ?>
            <div class="row">
                <a href="#" class="img"> <img src="img/<?= $product->id; ?>.jpg" height="53"></a>
                <span class="name"><?= $product->Articles; ?></span>
                <span class="price"><?= number_format($product->Prix_site,2,',',' '); ?> €</span>
                <span class="quantity"><input type="text" name="panier[quantity][<?= $product->id; ?>]" value="<?= $_SESSION['panier'][$product->id]; ?>"></span>
                <span class="subtotal"><?= number_format($product->Prix_site * 1.196,2,',',' '); ?> €</span>
                <span class="action">
                    <a href="panier.php?delPanier=<?= $product->id; ?>" class="del"><img src="img/del.png"></a>
                </span>
            </div>
            <?php endforeach; ?>
            <div class="rowtotal">
                Grand Total : <span class="total"><?= number_format($panier->total() * 1.196,2,',',' '); ?> € </span>
            </div>
            <input type="submit" value="Recalculer">
        </div>
    </div>
    </form>
</div>
<?php require 'footer.php'; ?>

et voici les classe panier

<?php
class panier{

    private $DB;

    public function __construct($DB){
        if(!isset($_SESSION)){
            session_start();
        }
        if(!isset($_SESSION['panier'])){
            $_SESSION['panier'] = array();
        }
        $this->DB = $DB;

        if(isset($_GET['delPanier'])){
            $this->del($_GET['delPanier']);
        }
        if(isset($_POST['panier']['quantity'])){
            $this->recalc();
        }
    }

    public function recalc(){
        foreach($_SESSION['panier'] as $product_id => $quantity){
            if(isset($_POST['panier']['quantity'][$product_id])){
                $_SESSION['panier'][$product_id] = $_POST['panier']['quantity'][$product_id];
            }
        }
    }

    public function count(){
        return array_sum($_SESSION['panier']);
    }

    public function total(){
        $total = 0;
        $ids = array_keys($_SESSION['panier']);
        if(empty($ids)){
            $products = array();
        }else{
            $products = $this->DB->query('SELECT id, Prix_site FROM accesoires WHERE id IN ('.implode(',',$ids).')');
        }
        foreach( $products as $product ) {
            $total += $product->Prix_site * $_SESSION['panier'][$product->id];
        }
        return $total;
    }

    public function add($product_id){
        if(isset($_SESSION['panier'][$product_id])){
            $_SESSION['panier'][$product_id]++;
        }else{
            $_SESSION['panier'][$product_id] = 1;
        }
    }

    public function del($product_id){
        unset($_SESSION['panier'][$product_id]);
    }

}

si quelqu'un pourait m'expliquer mes erreurs
merci,

probleme avec vardumper de symfony

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.
J'ai bien installer composer et Vardumper mais je n'arrive pas utilier la fonctin dump()

voici l'erreur qui s'affiche

Fatal error: Uncaught Error: Call to undefined function dump()

Merci de me venir en aide

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

php fonction mail() ne fonctionne pas (ok avec Postfix)

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

Postfix = ok

Je suit ce tutoriel de grafikart :

https://youtu.be/FmNX9YVNJ-w

L'envoie de mail par ligne de commande via postfix fonctionne

PHP = pas ok

Mais quand j'utilise le code PHP :

var_dump(mail("monmail@yahoo.fr", "Mon sujet", "Corps du message"));

Ca me retourne bool(false) (et je ne recois aucuns mail)

La configuration

Ubuntu 19.10 sur VPS OVH
PHP 7.4.4 (vérifié avec la commande phpversion() )
La fonction mail existe bien.

if(function_exists('mail'))
 {
 echo "Fonction mail existe<br>";
 }

me retourne bien "Fonction mail existe"

Class finfo de validator ne fonctionne plus

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

je suis à la fin de la formation PHP ,et je viens de m'apercevoir que la class finfo ne fonctionne plus ,même avec la source du code !

Décrivez ici votre code ou ce que vous cherchez à faire

Entourez votre co<?php
namespace App;

use finfo;
use Valitron\Validator as ValitronValidator;

class Validator extends ValitronValidator {

    protected static $_lang = "fr";


    public function __construct($data = array(), $fields = array(), $lang = null, $langDir = null)
    {
        parent::__construct($data, $fields, $lang, $langDir);
        self::addRule('image', function($field, $value, array $params, array $fields){
            if($value['size'] === 0){
                return true;
            }
            $mimes = ['image/jpeg', 'image/png'];
            $finfo = new finfo();
            $info = $finfo->file($value['tmp_name'], FILEINFO_MIME_TYPE);
            return in_array($info, $mimes);
        }, 'Le fichier n\'est pas une image valide');
    }
de pour bien le mettre en forme

Ce que je veux

je veux récupérer les images relié à des articles ,mais la class finfo n'est plus dans validator

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
Class 'finfo' not found

Requete ajax multipliée

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.

J'appelle une modal boostrap au click pour afficher 2 boutton valider ou annuler la validation d'une recette de cuisine
Lorsque je clique sur valider un appel ajax est lancé et modifie le champ de validation de la recette qui passe de 1 a 0 et vice verca
Tout fonctionne bien de ce coté là
Mais une fois que je ferme la modal j'ai fait en sorte qu'elle se détruise automatiquement.
Ensuite lorsque je relance un appel ajax ça me lance plusieurs appels ajax (correspondant au nombre de fois que l'user a ouvert la modal)

Code de l'object bupModal js qui me permet de personnaliser une modal boostrap

bupModal={
            modalC:''
                +'<div class="modal-dialog">'
                    +'<div class="modal-content">'
                        +'<div class="modal-header">'
                            +'<h5 class="modal-title" id="titleModal">Modal title</h5>'
                            +'<button type="button" class="close" data-dismiss="modal" aria-label="Close">'
                            +'<span aria-hidden="true">&times</span>'
                            +'</button>'
                        +'</div>'
                        +'<div class="modal-body">'
                            +'<div class="container-fluid">'
                            +'</div>'
                        +'</div>'
                        +'<div class="modal-footer">'
                        +'</div>'
                    +'</div>'
                +'</div>'+
            '',
            addparam:{
                scrollable:false,
                hasFooter:false,
                isLarge:false,
                isCentered:false,
                isFadeClose:true
            },
            param:{
                class:"modal fade",
                role:"dialog",
                tabindex:-1,
                "data-backdrop":null,
                "data-focus":true,
                "data-keyboard":true,
                "aria-labelledby":"titleModal",
                "aria-modal":true
            },
            identifier:"thismodal",
            myModal:null,
            titlemodal:"",
            bodycontent:"",
            // A definir a la creation de la fenetre modal
            footerContent:"",
            defineContent:function (myModal) {
                if (!myModal.find(".modal-dialog").is(":visible")){
                    myModal.append(this.modalC);
                }

                myModal.find(".modal-body > .container-fluid").html(this.bodycontent);
                myModal.find(".modal-title").text(this.titlemodal);
            },
            defineParam:function (mymodal) {

                footModal=mymodal.find('.modal-footer');
                bodyModal=mymodal.find('.modal-dialog');

                if(this.addparam.scrollable){
                    bodyModal.removeClass('modal-dialog-scrollable').addClass('modal-dialog-scrollable');
                }

                // Definit si la modal aura un footer ou pas
                if (!this.addparam.hasFooter) {
                    footModal.hide();
                }
                else{
                    if (this.footerContent!=='') {
                        footModal.html(this.footerContent);
                        footModal.show();
                    }
                    else{
                        footModal.hide();
                    }

                }

                // Definit si la modal sera ou non centrée
                if(this.addparam.isCentered){
                    bodyModal
                    .removeClass('modal-dialog-centered')
                    .addClass('modal-dialog-centered');
                }
                else{
                    bodyModal
                    .removeClass('modal-dialog-centered');
                }

                // Definit la largeur de la modal
                if (typeof(this.addparam.isLarge)==='string' && $.inArray(this.addparam.isLarge,['lg','sm','xl'])!==-1) {
                    bodyModal
                    .removeClass('modal-'+this.addparam.isLarge)
                    .addClass('modal-'+this.addparam.isLarge);
                }
                else{
                    bodyModal.removeClass('modal-lg modal-sm modal-xl');
                }
            },
            opentoClose:function (myModal, doOnclose=null) {
                // Evenement enclenche lorsque la modal est completement cachee(inexistant)
                myModal.on('hidden.bs.modal',function (e) {
                    if (bupModal.addparam.isFadeClose) {
                        myModal.remove();
                    }

                    hasClass = $('body').attr('class');
                    if(hasClass===''){
                        $('body').removeAttr('class');
                    }

                    $("body").find('.modal-backdrop').remove();

                    if (typeof doOnclose ==="function") {
                        doOnclose(myModal);
                    }

                    $(this).find(".modal-dialoag").off("mouseenter").end()
                        .off("click shown.bs.modal hidden.bs.modal keydown click");
                })
                // Evenement enclenche lorsque la modal est completement affichee
                .on('shown.bs.modal',function (e) {
                    $this = $(this)
                    thepadding = {
                        paddingRight:''
                    }
                    $this.css(thepadding);
                    $('body').css(thepadding);
                    hasStyle = $('body').attr('style');
                    if(hasStyle===''){
                        $('body').removeAttr('style');
                    }
                    $(window).resize(function () {
                        $this.css(thepadding);
                    })
                })
                if(this.myModal===null && typeof myModal ==='object'){
                    this.myModal=myModal;
                }

            },
            create:function (bodycontent,titlemodal,gParam={},gAddparam={}) {
                this.bodycontent=bodycontent;
                this.titlemodal=titlemodal;

                $.extend(this.addparam, gAddparam);
                $.extend(this.param, gParam);

                $('body').find("#"+this.identifier).remove();
                $("body").find('.modal-backdrop').remove();
                $('<div id="'+this.identifier+'"></div>').insertAfter('body header');
                myModal = $('body').find('#'+this.identifier);
                this.myModal=myModal;
                myModal.attr(this.param);

                // Defini le contenu de la modal (body)

                this.defineContent(myModal);
                this.defineParam(myModal);

                myModal.modal('show');
                // Traitement de la modal a la fin d'affichage et a la fin de fermeture
                this.opentoClose(myModal);

            },
            update:function (gParam={},gAddparam={}) {
                $.extend(this.addparam, gAddparam);
                $.extend(this.param, gParam);

                if (typeof this.myModal !=='object') {
                    myModal = $('body').find('#'+this.identifier);
                    this.myModal=myModal;
                }

                if (typeof this.myModal === 'object' && this.titlemodal!=='' && this.bodycontent!=='') {
                    this.defineParam(this.myModal);
                    this.opentoClose(this.myModal);
                }
            },
        }

Code js/ajax

$('body')
.on("click","input[name=visible]",function () {
    $this = $(this);
    idrec = parseInt($this.closest('tr').attr('id').split('rec')[0]);
    idauth = parseInt($this.closest('tr').attr('id').split('rec')[1]);
    bupModal.footerContent=''+
        '<button id="cancel" class="btn btn-secondary" type="button">Annuler</button>'
        +'<button id="valid" class="btn btn-success" type="button">Approuver</button>'+
    '';
    bupModal.create("Etes vous sur de vouloir vraiment valider cette recette et ainsi là publier sur Eatandsell ?","Confirmation de validation",{},{
        hasFooter:true
    });

    $("body").on("click","button#cancel",function () {
        $("body").find("#"+bupModal.identifier).modal("hide");
    })
    .on("click","button#valid",function () {

        popAjax.initCall("/recettes/approuved-rec/" + idrec + "-" + idauth + "/", function (data, state, jq) {
            alert(data);
        });
    });
})

J'aimerai m'affranchir de cela et avoir des appel single pour chaque click sur le boutton valider

Merci d'avance pour vos idées


Problème avec autoload de composer

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code.
le voici:
Fatal error: Uncaught Error: Class 'App\NumberHelper' not found in C:\xampp\htdocs\TP\index.php:34 Stack trace: #0 {main} thrown in C:\xampp\htdocs\TP\index.php on line 34

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire
IL s'agit du TP tuto 34 de Apprendre PHP par GRAFICART

Entourez votre cod<?php
use App\NumberHelper;
require 'vendor/autoload.php';
$pdo = new PDO("sqlite:./data.sql",null,null,[
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_ERRMODE=> PDO:: ERRMODE_EXCEPTION
]);
$products = $pdo->query("SELECT*FROM products LIMIT 20")->fetchAll();
//dd($products);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="bootstrap.min.css">
    <title>Biens immobiliers</title>
</head>
<body>
    <table class="table table-striped">
        <thead>
            <tr>
                <th>ID</th>
                <th>Nom</th>
                <th>Ville</th>
                <th>Adresse</th>
            </tr>
        </thead>
        <tbody>
        <?php foreach($products as $product):?>
         <tr>
          <td>#<?= $product['id']?></td>
          <td><?=$product['name']?></td>
          <td><?= NumberHelper::price($product['price'])?>$</td>
          <td><?=$product['city']?></td>
          <td><?=$product['address']?></td>

         </tr>
         <?php endforeach ?>
        </tbody>
    </table>
</body>
</html>e pour bien le mettre en forme


VOICI le code json:
{
    "require": {
        "symfony/var-dumper": "^5.1"
    },
    "autoload": {
        "prs-4":{
            "App\\":"src/"
        }
    }
}

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

J'ai essayer mais cette erreur s'affiche toujours,pourquoi?
Fatal error: Uncaught Error: Class 'App\NumberHelper' not found in C:\xampp\htdocs\TP\index.php:34 Stack trace: #0 {main} thrown in C:\xampp\htdocs\TP\index.php on line 34

Supprimer le premier enregistrement d'un array de array

$
0
0

Bonjour,

Je n'arrive pas à supprimet le permier array de cet array de array, qui correspond à la
première ligne de mon tableau:
array(650) { [0]=> array(8) { [0]=> string(9) "marque_id" [1]=> string(15) "ref_fournisseur" [2]=> string(11) "designation" [3]=> string(5) "pv_ht" [4]=> string(6) "pv_ttc" [5]=> string(9) "reference" [6]=> string(15) "libelle_fre_dev" [7]=> string(5) "annee" } [1]=> array(8) { [0]=> int(23) [1]=> string(10) "EDP4SGF055" [2]=> string(49) "Panneau souple back contact 55 watts 5405803 mm" [3]=> float(158.33) [4]=> int(190) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [2]=> array(8) { [0]=> int(23) [1]=> string(10) "EDP4SGF115" [2]=> string(51) "Panneau souple back contact 115 watts 54010703 mm" [3]=> float(262.5) [4]=> int(315) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [3]=> array(8) { [0]=> int(23) [1]=> string(10) "EDP4SGF130" [2]=> string(51) "Panneau souple back contact 130 watts 54012003 mm" [3]=> int(300) [4]=> int(360) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [4]=> array(8) { [0]=> int(23) [1]=> string(10) "EDP4SGF145" [2]=> string(51) "Panneau souple back contact 145 watts 54013303 mm" [3]=> float(362.5) [4]=> int(435) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [5]=> array(8) { [0]=> int(23) [1]=> string(11) "EDP4SGFL055" [2]=> string(88) "Panneau souple back contact 55 watts 5405803 mm boite de jonction à l'arrière" [3]=> float(195.83) [4]=> int(235) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [6]=> array(8) { [0]=> int(23) [1]=> string(11) "EDP4SGFL075" [2]=> string(88) "Panneau souple back contact 75 watts 5405803 mm boite de jonction à l'arrière" [3]=> float(245.83) [4]=> int(295) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [7]=> array(8) { [0]=> int(23) [1]=> string(11) "EDP4SGFE115" [2]=> string(79) "Panneau souple back contact 115 watts 54010703mm avec la fermeture éclair" [3]=> float(329.17) [4]=> int(395) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [8]=> array(8) { [0]=> int(23) [1]=> string(11) "EDP4SGFE130" [2]=> string(79) "Panneau souple back contact 130 watts 54012003mm avec la fermeture éclair" [3]=> float(366.67) [4]=> int(440) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [9]=> array(8) { [0]=> int(23) [1]=> string(11) "EDP4SGFE145" [2]=> string(79) "Panneau souple back contact 145 watts 54013303mm avec la fermeture éclair" [3]=> float(415.83) [4]=> int(499) [5]=> string(7) "MARCH20" [6]=> NULL [7]=> int(2020) } [10]=> array(8) { [0]=> int(23) [1]=> string(10) "EDP6SGF031" [2]=> string(54) "Panneau Sunpower flush deck noir 4154153 mm 31 watts" [3]=> int(100) [4]=> .....
Quelqu'un peut-il m'indiquer la bonne syntaxe. j'ai essayé unset() sans succès
Merci de votre aide.

ERREUR SQL EN PHP

$
0
0

Bonjour les amis,

Voila je rencontre un petit problème avec mon code.
voici l'erreur
Erreur fatale : PDOException non interceptée: SQLSTATE [HY000]: Erreur générale: 1 jeton non reconnu,
J'ai passe toute la journee sans rien trouver de concret

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire
Voici le code

<?php
use App\NumberHelper;
define('PER_PAGE', 20);

require 'vendor/autoload.php';
$pdo = new PDO("sqlite:./data.sql",null,null,[
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION
]);
$query = "SELECT * FROM products";
$queryCount = "SELECT COUNT(id) as count FROM products";
$params =[];
//recherche par ville
if(!empty($_GET['q'])){
    $query.= " WHERE city LIKE :city";
    $params['city']='%'.$_GET['q'] .'%';
}

//Pagination
$page =(int)($_GET['p'] ?? 1);
$offset =($page-1) * PER_PAGE;

$query .= " LIMIT " .PER_PAGE."OFFSET $offset";
$statement = $pdo->prepare($query);
$statement->execute($params);
$products =$statement->fetchAll();

$statement = $pdo->prepare($queryCount); 
$statement->execute($params);
$count = (int)$statement->fetch()['count'];
$pages = ceil($count/PER_PAGE);


?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="bootstrap.min.css">
    <title>Biens immobiliers</title>
</head>
<body class="p-4">
 <h1>Les biens immobiliers</h1>
<form action="" class="mb-4">
    <div class="form-group">
    <input type="text" class="form-control" name="q" placeholder="Rechercher par ville" value="<?= htmlentities($_GET['q']?? null)?>">
    </div>
    <button class="btn btn-primary">Recherche</button>
</form>
    <table class="table table-striped">
        <thead>
            <th>ID</th>
            <th>Nom</th>
            <th>Prix</th>
            <th>Ville</th>
            <th>Adresse</th>
        </thead>
        <tbody>
        <?php foreach($products as $product):?>
            <tr>

                <td><?= $product['id']?></td>
                <td><?$product['name']?></td>
                <td><?=Numberhelper::price($product['price']);?>$</td>
                <td><?=$product['city']?></td>
                <td><?=$product['address']?></td>

            </tr>
            <?php endforeach?>
        </tbody>
    </table>
    <?php if($pages >1 ):?>
     <a href="?p=<?=$page + 1?>" class="btn btn-primary">Page suivante</a>
     <?php endif ?>
</body>
</html>

Merci d'avance

Erreur must be a string

$
0
0

Bonjour,

Voila je rencontre un petit problème avec mon code, je suis les cours de php je suis au chapitre 45 mais je rencontre des probleme a la creation de la structure du projet.
a l'instalation de altorouteur j'ai tout fait comme indiquer mais il me renvoie cette erreur ci-dessous:

Fatal error: Uncaught Error: Function name must be a string in /Applications/MAMP/htdocs/sitephp2/public/index.php:17 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/sitephp2/public/index.php on line 17

voici mon code:

require '../vendor/autoload.php';

$router = new AltoRouter();


define('VIEW_PATH', dirname(__DIR__) . '/views');

$router->map('GET', '/blog', function () {
    require VIEW_PATH . '/post/index.php';
});
$router->map('GET', '/blog/category', function () {
    require VIEW_PATH . '/category/show.php';
});

$match = $router->match();
$match['target']();

cela fait maintenant plus de 2 semaine que je bloque Merci d'avance pour vos reponse.

ERREU SQL

$
0
0

Bonjour les Grafikarts,

Voila je rencontre un petit problème avec mon code que je ne comprend pas. J'ai repris le tuto plusieurs fois pour voir si je peut reussir et comparer apres mais nada. Il s'agit du TP du chapitre 38 su le PHP.
Voici l'erreur qu'affiche le navigateur:
Erreur fatale : Uncaught PDOException: SQLSTATE [HY000]: Erreur générale: 1 aucune colonne de ce type: nameasc dans C: \ xampp \ htdocs \ TP0 \ index.php: 40 Trace de pile: # 0 C: \ xampp \ htdocs \ TP0 \ index .php (40): PDO-> prepare ('SELECT * FROM ...') # 1 {main} jeté dans C: \ xampp \ htdocs \ TP0 \ index.php à la ligne 40
la ligne 40 fait referance a la 11,j'ai commente ces deux dans le code.Merci d'avance.

Ce que je fais

Décrivez ici votre code ou ce que vous cherchez à faire

<?php
use App\NumberHel;
use App\URLHel;
define('PER_PAGE', 20);

require 'vendor/autoload.php';
$pdo = new PDO("sqlite:./data.sql",null, null, [
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
$query = " SELECT * FROM products ";//la ligne 40 fait refereance a cette ligne
$queryCount = "SELECT COUNT(id) as count FROM products";
$params = [];
$sortable = ["id","name","city","price","address"];
//recherche par ville
if(!empty($_GET['q'])){
    $query.= " WHERE city LIKE :city";
    $queryCount .= " WHERE city LIKE :city";
    $params['city'] ='%' . $_GET['q'] .'%';
}
//fin de rechercher par ville

//organisation
if(!empty($_GET['sort']) && in_array($_GET['sort'], $sortable)){
    $direction = $_GET['dir'] ?? 'asc';
    if(!in_array($direction,['asc','desc'])){
        $direction = 'asc';
    }
    $query .= " ORDER BY " . $_GET['sort'] . "$direction";
}

//pagination
$page = (int)($_GET['p'] ?? 1);
$offset = 0;
if($page > 1){
    $offset = ($page-1)*PER_PAGE;
}

$query .= " LIMIT " .PER_PAGE ." OFFSET $offset";
$statement = $pdo->prepare($query); // c'est ici la ligne 40
$statement ->execute($params);
$products = $statement->fetchAll();

$statement = $pdo->prepare($queryCount);
$statement->execute($params);
$count = $statement->fetch()['count'];
$pages = ceil($count / PER_PAGE);


?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="bootstrap.min.css">
    <title>immobiliers</title>
</head>
<body class="p-4">
<h1>Immobilier</h1>
<form action="">
<div class="form-group mb-3">
<input type="text" class="form-control" name="q" placeholder="Recherhe par ville" value=<?= htmlentities($_GET['q'] ?? null) ?>>
</div>
<button class="btn btn-primary mb-2">Recherche</button>
</form>
    <table class="table table-striped">
        <thead>
            <tr>
                <th>ID</th>
                <th>Nom</th>
                <th>Prix</th>
                <th>Ville</th>
                <th>Adresse</th>
            </tr>
        </thead>
        <tbody>
        <?php foreach($products as $product):?>
         <tr>
            <td>#<?= $product['id']?></td>
            <td><?= $product['name']?></td>
            <td><?= NumberHel::price($product['price'])?></td>
            <td><?= $product['city']?></td>
            <td><?= $product['address']?></td>
         </tr>
         <?php endforeach ?>
        </tbody>
    </table>
    <?php if($pages > 1 && $page > 1): ?>
        <a href="?<?= URLHel::withParam("p",$page - 1)?>" class="btn btn-primary">Page precedente</a>
    <?php endif ?>
    <?php if($pages > 1 && $page < $pages): ?>
        <a href="?<?= URLhel::withParam("p",$page + 1)?>" class="btn btn-primary">Page suivante</a>
    <?php endif ?>
</body>
</html>

Ce que je veux

Décrivez ici ce que vous cherchez à obtenir

Ce que j'obtiens

Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

Viewing all 4861 articles
Browse latest View live