[PHP]Récupere des données et ....

Discussion dans 'Web, design' créé par Fruitos[silly], 16 Avril 2004.

Statut de la discussion:
Fermée.
  1. Offline
    PHP:
    Récupere des données d'une table et les réafiche dans un champ de texte...

    Bon voila c'
    est ce que j'aimerai bien faire je vous montre mon code php

    [code]
    <?php
    // Connection base
    $base = mysql_connect ('
    localhost', 'root', ''); 
    mysql_select_db('
    seb', $base);

    // lancement de la requête.
    $sql = '
    SELECT auteurtitredatetexte_news FROM news WHERE id=1';


    $req = mysql_query($sql) or die('
    Erreur SQL !<br>'.$sql.'<br>'.mysql_error());


    while ($data = mysql_fetch_array($req)) {

      // date 
      sscanf($data['
    date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec);

      // Affichage du résultats
      echo '
    <br>News de '.stripslashes($data['auteur']).'<br>';
      echo '
    Titre '.stripslashes($data['titre']).'<br>';
      echo '
    Postée le '.$jour.'/'.$mois.'/'.$an.' à '.$heure.':'.$min.':'.$sec.'<br><br>';
      echo '
    News '.stripslashes(nl2br($data['texte_news'])).'<br>';

    }

    ?> 
    <form method="">
    <input name="auteur" value="<?php echo $data['
    auteur'] ?>">
    <input name="titre" value="<?php echo $data['
    titre'] ?>">
    <input name="date" value="<?php echo $data['
    date'] ?>">
    <input name="texte_news" value="<?php echo $data['
    texte_news'] ?>">
    <input type="submit" value="OK">
    </form>[/code]

    et donc voila j'
    essaye de faire affiché le resultat dans les champs de texte mais rien ne se passe...
    Par contre quand je fait 
    [code]
    &
    lt;?
    $text coucou
    ?>
    <input name="auteur" value="<?php echo $text ?>">
    [/code]

    il m'affiche bien coucou dans mon champs  :( 

    Je débute en php depuis seulement 3j donc faut etre indulgent avec moi  :D
    Fruitos[silly], 16 Avril 2004
    #1
  2. Offline
    Styleman Touriste
    tu oublie le ; a la fin

    <form method="">
    <input name="auteur" value="<?php echo $data['auteur']; ?>">
    <input name="titre" value="<?php echo $data['titre']; ?>">
    <input name="date" value="<?php echo $data['date']; ?>">
    <input name="texte_news" value="<?php echo $data['texte_news']; ?>">
    Styleman, 16 Avril 2004
    #2
  3. Offline
    Styleman Touriste
    tu est sur ke pour le $texte ça fonctionne???

    parce que sans ; apres normalement c pas bon :?
    Styleman, 16 Avril 2004
    #3
  4. Offline
    Styleman Touriste
    ah ben si ça fonctionne lol, alors c ta requete tout simplement:

    $sql = "SELECT auteur, titre, date, texte_news FROM news WHERE id='1'"

    Comme ça ça devrait aller

    Edit: Ah non puisqu'il y a le or die() ... :?
    Styleman, 16 Avril 2004
    #4
  5. Offline
    Styleman Touriste
    sinon essaye:
    <?
    echo "<form method=>"
    echo "<input name=auteur value=$data['auteur']>";
    echo "<input name=titre value=$data['titre']>";
    echo "<input name=date value=$data['date']>";
    echo "<input name=texte_news value=$data['texte_news']>";
    echo "<input type=submit value=OK>";
    echo "</form>"
    ?>
    Styleman, 16 Avril 2004
    #5
  6. Offline
    vient d'essaye mais
    Code:
    Parse error: parse error, unexpected T_ECHO, expecting ',' or ';' in c:\program files\easyphp1-7\www\fruit\edit_news.php3 on line 27
    Fruitos[silly], 16 Avril 2004
    #6
  7. Offline
    Styleman Touriste
    apres le form metho= , apres ctette ligne j'ai oublie le ;
    Styleman, 16 Avril 2004
    #7
  8. Offline
    j'ai changé tout ce que tu m'as dit mais bon rien ne se passe :-( je suis entrain de pete une case :x
    Fruitos[silly], 16 Avril 2004
    #8
  9. Offline
    Code:
    Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\program files\easyphp1-7\www\fruit\edit_news.php3 on line 27
    Fruitos[silly], 16 Avril 2004
    #9
  10. Offline
    Styleman Touriste
    ah tu utilise easyphp alors je pense que tu dois définir tes variables, je c po trop ce ke ça veut dire lol mais a mon avis tu dois faire

    <?
    $auteur = $data['auteur'];
    $titre = $data['titre];
    $date = $data['date'];
    $texte = $data['texte_news'];
    ?>
    <input name="auteur" value="<?php echo $auteur ?>">
    <input name="titre" value="<?php echo $titre ?>">
    <input name="date" value="<?php echo $date ?>">
    <input name="texte_news" value="<?php echo $texte ?>">
    <input type="submit" value="OK">
    </form>
    Styleman, 16 Avril 2004
    #10
  11. Offline
    Styleman Touriste
    met method=POST aussi
    Styleman, 16 Avril 2004
    #11
  12. Offline
    c'est possible que ca soit juste easyphp qui fasse tout planté???

    car même avec ce que tu m'as dit ca marche po :-( ca affiche la pages mais rien dans les champs :?
    Fruitos[silly], 16 Avril 2004
    #12
  13. Offline
    AssiuM Fan
    euh... bin pour en être sûr mets le sur un hébergeur et vérifie ;)
    AssiuM, 16 Avril 2004
    #13
  14. Offline
    Styleman Touriste
    Moi je ne vois pas d'erreur ça m'enerve lol :x
    Styleman, 16 Avril 2004
    #14
  15. Offline
    bien je vient de le mettre sur un hebergeur et ca ne vas pas non plus :cry:
    Fruitos[silly], 16 Avril 2004
    #15
  16. Offline
    AssiuM Fan
    problème toujours pas résolu ? essaie de mettre des 'OR die' après chaque requête sql pour voir où ça bug...

    mets des echos $variable un peu partout pour voir l'état de tes variables ;)
    c'est ainsi que je procède et généralement j'arrive à trouver l'erreur :)
    AssiuM, 16 Avril 2004
    #16
  17. Offline
    ZyPh0s Touriste
    J'veux pas etre mechant mais si tu utilises des variables privées comme tu le fais, c'est normal que les variable soient vide en dehors de la boucle While. Tes variables n'existes que dans la boucle.

    Version corrigée mais bon si t'as qu'une valeur à lire pas besoins de la boucle. Enfin je dis ça comme ça.
    Code:
    <?php 
    // Connection base 
    $base = mysql_connect ('localhost', 'root', ''); 
    mysql_select_db('seb', $base); 
    
    // lancement de la requête. 
    $sql = 'SELECT auteur, titre, date, texte_news FROM news WHERE id=1'; 
    
    
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    
    
    while ($data = mysql_fetch_array($req)) { 
    
      // date 
      sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec); 
    
      // Affichage du résultats 
      echo '<br>News de : '.stripslashes($data['auteur']).'<br>'; 
      echo 'Titre : '.stripslashes($data['titre']).'<br>'; 
      echo 'Postée le : '.$jour.'/'.$mois.'/'.$an.' à '.$heure.':'.$min.':'.$sec.'<br><br>'; 
      echo 'News : '.stripslashes(nl2br($data['texte_news'])).'<br>'; 
    
    
    
    ?> 
    <form method=""> 
    <input name="auteur" value="<?php echo $data['auteur'] ?>"> 
    <input name="titre" value="<?php echo $data['titre'] ?>"> 
    <input name="date" value="<?php echo $data['date'] ?>"> 
    <input name="texte_news" value="<?php echo $data['texte_news'] ?>"> 
    <input type="submit" value="OK"> 
    </form> 
    <?php } >
    
    Bon c'est pas joli la fin mais au moins ça ça devrait marcher.
    ZyPh0s, 16 Avril 2004
    #17
  18. Offline
    j'suis assez d'accord avec zyphos pour le contenu du formulaire, il y a bien un problème de portée de variable.

    Le principe de la portée d'une variable est simple. Une variable n'est connue qu'à partir de sa déclaration et pour toute la suite du bloc qui la contient ainsi que les blocs compris.

    Il y a quelques astuces et en fonctions des langages, certaines particularités, notemment pour faire connaître des variable en dehors de leur portée directe ou encore les cas d'homonymie quand des blocs contenu ont des variables déclarée de même nom que le bloc comprenant (j'espère me faire comprendre :) ).
    mais bon, en général, il faut retenir qu'une variable dans un boucle par exemple, n'est connue que de la boucle et de l'intérieure de celle-ci (d'où ton problème de $data qui n'est connu que dans le while).



    Tu devrais essayer un mysql_fetch_object plutôt qu'un array et ensuite $data->auteur pour afficher le contenu du champs auteur... je fais ça parce que j'oublie toujours si il faut un seul ' ou un " dans le nom d'une colonne pour un array.

    Sinon, pour répondre à styleman. il ne faut pas de ";" si c'est dans un bloc <? ?> avec une seule instruction.
    TheFornicator, 16 Avril 2004
    #18
  19. Offline
    ZyPh0s Touriste
    Il faut toujours " ;)
    Sinon pour info pour ceux qui se soucient de la rapiditée. IL n'y a pas de différence de vitesse entre les 2 méthodes :)
    ZyPh0s, 16 Avril 2004
    #19
  20. Offline
    bon j'ai trouvé grave a l'aide de xyo

    Code:
    <?php 
    // Connection base 
    $base = mysql_connect ('localhost', 'root', ''); 
    mysql_select_db('seb', $base); 
    
    // lancement de la requête. 
    $sql = 'SELECT auteur, titre, date, texte_news FROM news WHERE id=1'; 
    
    $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
    
    while ($data = mysql_fetch_array($req)) { 
    
      // 
      $date = sscanf($data['date'], "%4s-%2s-%2s %2s:%2s:%2s", $an, $mois, $jour, $heure, $min, $sec); 
      $auteur = stripslashes($data['auteur']);
      $titre = stripslashes($data['titre']);
      $texte = stripslashes(nl2br($data['texte_news']));
    } 
    ?>
    
    <form method="POST"> 
    <input name="auteur" value="<?php echo "$auteur"; ?>"> 
    <input name="titre" value="<?php echo "$titre"; ?>"> 
    <input name="texte_news" value="<?php echo "$texte"; ?>"> 
    <input name="date" value="<?php echo "$date"; ?>"> 
    <input type="submit" value="OK"> 
    </form>
    et ca marche sans problème comme ca ;)
    merci pour les réponses de tout le monde :D
    Fruitos[silly], 16 Avril 2004
    #20
Statut de la discussion:
Fermée.