(php) honte sur moi et mort au "" !!!!

Résolu
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
m'en font voir ces " " et ces ' '... pourtant j'essaie c'est juré. Ici aussi je pense que c'est eux qui me casse les ...

appel de la fonction dans la page principale... observer le dernier argument :
<?php f_recherche("Livres", "Livre_num, Livre_titre", "Livre_titre", "Titre", '$row[\'Livre_num\']'); ?>

la fonction :
function f_recherche($table, $champs, $order, $label, $afficher, $where)
{
echo ('
<tr>
<td width="10"></td>
<td>'.$label.' :</td>
<td>');
$result = f_liste($table, $champs, $order, $where);
echo $afficher.''. $table;
echo ('<select name="nom" size=1>');
while($row = mysql_fetch_array($result)) {

//LE PROBLEME EST LA :
echo '<option value="'.$label.'1">'.$afficher.'</option>';

}
echo ('
</select>
</td>
<td>(ou ecrire)</td>
<td><input type="text" name="'.$label.'2" size="12" value="" /></td>
<td></td>
</tr>');
}

Le resultat ? Ben, une belle boite de selection avec le nombre juste de choix... simplement au lieux d'avoir les enregistrements de mandés j'ai une ligne ecrite textuellement : $row[Titre_num] !!!!!!

Alors plusieurs hypotese : je suis vraiment une quiche et ces biens ces "" '' qui sont faux...
ce que je veux faire ne peux pas marcher
je mange trop de frite (????!!!????)

Merci tjrs.
A voir également:

13 réponses

A.Nonymous
 
Il est aussi nécessaire de savoir ce que fait la fonction 'f_liste' pour répondre à ton problème.
0
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
function f_liste($table, $champs, $order, $where)
{
// information pour la connection à le DB
$host = 'XXXXXXXXXX';
$user = 'XXXXXXXXXXX';
$pass = 'XXXXXXXXX';
$db = XXXXXXXXXXXX';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// la requete sql
$select = 'SELECT '.$champs.' FROM '.$table.' '.$where.' ORDER BY '.$order;
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );

//il faut fermer la base close

return ($result);

}

Mais ça ne change pas grand chose... Elle elle fonctionne puisqu'initialement je me servais d'elle directement... L'important est qu'elle renvoie $result qui contient la reponse a la requete selection.

Dans l'attente de reponse, je commence a opter pour la solution truffe finie...
0
A.Nonymous
 
Sans vouloir être désagréable, il y a au moins un problème avec la requête SQL:
SELECT Livre_num FROM Livres WHERE$row['Livre_num'] ORDER BY Livre_titre
ne donnera pas ce que je pense que tu veux obtenir.
(Fais un echo $select; avant ton $result = ... , c'est ce qui sera affiché )

Et pour pouvoir continuer à t'aider il va falloir décrire ce qu'est censée faire cette fonction f_liste et ce que tu comptais faire avec ce $row['Livre_num'] qui n'a rien à faire dans une requête SQL ...
0
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Effectivement ce que tu decris ne donnerais pas grand chose, mais ce n'est pas ce que je fais... Je ne vous jette pas la pierre pierre (... sans commentaire...)... Le problème est que c'est pas tres lisible. Je me reexplique donc avec plaisir et j'esperes qu'on pourra ainsi se depatouiller !

j'appelle ma fonction f_affiche come suit :
f_recherche("Livres", "Livre_num, Livre_titre", "Livre_titre", "Titre", '$row[\'Livre_num\']')

celle ci etant definie comme suit :
function f_recherche($table, $champs, $order, $label, $afficher, $where)
donc
$table = Livres
$champs = "Livre_num, Livre_titre"
$order="Livre_titre"
$label="Titre"
$affiche=$row['Livre_num'] (avec ou sans "" qui l'entoure la est le dilem...)
$where= rien...

$where ne me servant qu'occasionellement, je l'ai mis a la fin pour pouvoir le laisser vide.

L'idée, c'est de pouvoir afficher dans mon select les valeurs retourner dans la boucle while :
echo ('<select name="nom" size=1>');
while($row = mysql_fetch_array($result)) {
echo '<option value="'.$label.'1">'.$afficher.'</option>';
}
echo ('</select> ');

ce qui, je l'esperais, serais equivalent à :
<?php
while($row = mysql_fetch_array($result)) {
//form select pour liste deroulante
echo ('<option value=\"Auteur1\">'.$row['Livre_num']);

}
?>

Est ce plus clair ?
Et tu ne m'es pas desagrable. C'est dit. Merci ! :D
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Ici :
j'appelle ma fonction f_affiche come suit

vous aurez lu :
j'appelle ma fonction f_recherche come suit :
0
A.Nonymous
 
function f_recherche($table, $champs, $order, $label, $afficher, $where)
devient
function f_recherche($table, $champs, $order, $label, $afficher, $where='')

f_recherche("Livres", "Livre_num, Livre_titre", "Livre_titre", "Titre", '$row[\'Livre_num\']')
devient
f_recherche("Livres", "Livre_num, Livre_titre", "Livre_titre", "Titre", 'Livre_num')

echo '<option value="'.$label.'1">'.$afficher.'</option>';
devient
echo '<option value="'.$label.'1">'.$row[$afficher].'</option>';
0
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
...mmmm.... non.

Pourquoi.
Parce que 1 - le $where laisse tomber, il faudrait que je te montre d'autre bout du code, la n'est pas le probleme.
2- ensuite, enlever le "$row..." de l'appel pour le mettre dans la fonction est une fausse solution : ça marche si je ne veux afficher qu'1 champ dans mon <select>. Mais le but de ma fonction, serais de pouvoir faire un appel du genre :

f_recherche("Livres", "Livre_num, Livre_titre", "Livre_titre", "Titre", '$row[\'Livre_num\'].$row['AUTRECHOSE'].$row['ETUNAUTRE']') puis de refaire un autre appel avec
f_recherche("Livres", "Livre_num, Livre_titre", "Livre_titre", "Titre", '$row[\'Livre_num\'].$row['AUTRECHOSE'])...

En gros faire eune fonction assez generale pour afficher 1, 2, 3 ... autant que je veux champs issus de ma requete.

Bon mais tu sais quoi ? On dors dessus, on y pense, on voit ça demain. De toute façon ch'uis pas pressé !

Mais merci qd même de t'etre penché dessus, c'etait fort urbain.

Ciao
0
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
putain que de faute je fais moi... dsl pour les yeux des puristes...
0
A.Nonymous
 
Ok, c'est en effet différent :
echo '<option value="'.$label.'1">'.$afficher.'</option>';
devient alors
echo '<option value="'.$label.'1">'.eval($afficher).'</option>';
0
A.Nonymous
 
Enième proposition :
echo '<option value="'.$label.'1">'.eval('echo '.$afficher.';').'</option>';
0
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
Pardon de revenir a la charge mais je ne m'en suis pas sortie....
La proposition d'hier soir avec le eval ne fonctionne pas. Je pense qu'il m'a certainement indiqué une voie interressante a prendre.

Qq1 aurait il une idée plus précise ?

Merci
0
A.Nonymous
 
Re-Enième proposition :
echo '<option value="'.$label.'1">';
eval('echo '.$afficher.';');
echo '</option>';
0
simbadzemarin Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
avec calme... hmmm... je respire... je reste digne... YESSSSSSSSSSSSSS !!!!
CA MARCHE !!!!

Tu peux pas savoir comme je sens soulager !!!!

Merci plein de fois pour la patience et l'acharnement a proposer millard de solution !!!

Cool, demain j'aurais d'autres questions a poser ! :D
0