Problème script php

Bonjour,

J'ai trouvé ce script pour apprendre le php, il s'agit d'un formulaire de soumission, mais il semblerait qu'il y ait un problème avec la fonction while. Etant débutante, je n'arrive pas à en voir la cause.

function PrintSubForm()
{
global $out, $author, $body, $year, $semestre, $proposer;
$out .= "<form action=\"$PHP_SELF\" method=\"post\">";
$out .= "<b>Proposer une citation</b><br />";
$out .= " Prof : <select name=\"author\">";
$requet = "SELECT DISTINCT author FROM citation ORDER BY author ASC";
$result = mysql_query($requet);
$out .= "<option value=\"\"> ";
while($ligne = mysql_fetch_object($result)) {
if($author == $ligne->author) { $selected = "selected"; } else { $selected=""; }
$out .= "<option value=\"".$ligne->author."\" $selected>".ligne->author. "</option>";
}
$out .= "</select><br />"; // même chose pour year et semestre
$out .= "<textarea name=\"body\" cols=\"40\" rows=\"5\">$body</textarea><br />";
$out .= "Votre pseudo(*) : <input type=\"text\" name=\"sender\" value=\"$proposer\" />";
$out .= "<input type=\"hidden\" name=\"action\" value=\"proposer\" />";
$out .= "<input type=\"submit\" value=\"Valider\" /><br />";
$out .= "Tous les champs sauf celui avec astérisque sont obligatoires.";
$out .= "</form>";
}

Merci d'avance,

4 réponses

  1. alors déjà, j'ai éclairci ton code, pour pouvoir mieu le lire

    function PrintSubForm()
    {
    global $out, $author, $body, $year, $semestre, $proposer;
    
    $out .= "<form action=\"$PHP_SELF\" method=\"post\">";
    $out .= "<b>Proposer une citation</b><br />";
    $out .= " Prof : <select name=\"author\">";
    
    $requet = "SELECT DISTINCT author FROM citation ORDER BY author ASC";
    
    $result = mysql_query($requet);
    
    $out .= "<option value=\"\"> ";
    
    while($ligne = mysql_fetch_object($result))
    {
    	if($author == $ligne->author)
    	{
    		$selected = "selected";
    	}
    	else
    	{
    		$selected="";
    	}
    
    	$out .= "<option value=\"".$ligne->author."\" $selected>".ligne->author. "</option>";
    }
    
    $out .= "</select><br />"; // même chose pour year et semestre
    $out .= "<textarea name=\"body\" cols=\"40\" rows=\"5\">$body</textarea><br />";
    $out .= "Votre pseudo(*) : <input type=\"text\" name=\"sender\" value=\"$proposer\" />";
    $out .= "<input type=\"hidden\" name=\"action\" value=\"proposer\" />";
    $out .= "<input type=\"submit\" value=\"Valider\" /><br />";
    $out .= "Tous les champs sauf celui avec astérisque sont obligatoires.";
    $out .= "</form>";
    
    } 


    je te propose moi de modifier cette ligne
    $result = mysql_query($requet);

    par

    $result = mysql_query($requet) or die("Mysql error:".mysql_error());

    ainsi si tu as un problème dans ta requete il le diras
    1. En fait, rien ne s'affiche, même en changeant la requête.
      1. En fait, je n'ai pas de problème particulier de connexion à une base de données via php, mon seul souci est que dans ce script la fonction while semble fausse selon l'éditeur de langage php que je possède ; en outre si j'execute le script sans la fonction while, j'obtiens des données qui s'affichent.